如何使用Python开发串口通讯上位机(一)

用Python开发串口通讯型上位机,其实并非最优解,本系列更新只为个人学习与总结。如果有C语言底子,嵌入式层面的上位机开发,C++ Builder,C#才是更加好用的利器。

1

什么是上位机

从事过嵌入式软件开发或者工控机开发的,对上位机应该都不陌生。简单来说,上位机指的是能够发送指令的计算机或者控制器,通过各类通讯获取下位机信息,控制下位机的行为等。

最典型的例子,电脑端的串口助手(上位机),通过RS232-DB9或者USB转串口,与单片机(下位机)的串口通讯,获取单片机系统的状态等。

图片来自百度百科

此系列文章,与大家讲讲如何使用Python进行串口通讯型上位机的开发。此为第一篇。

2

准备工作

1. 串口调试助手,用于验证通讯,此处推荐使用Uartassistant,百度一下即可轻松找到下载方法

2. Virtual Serial Port:虚拟串口,可以在没有实际串口线连接的情况,在电脑端虚拟出对接的两个串口,方便我们在没有下位机或者未就绪的情况下,验证数据的收发,下图为虚拟出COM1与COM2两个串口,并内部互联,打开两个1中调试助手,分别配置为COM1和COM2,波特率相同,在COM1发送“Hello world”,COM2即可收到

3. Pyqt5:用于开发界面,详见前面几期内容

三步学会Python开发上位机并处理excel数据(一)

4. PyCharm:Python IDE

三步学会Python开发上位机并处理excel数据(一)

5. Pyserial库安装-pip install pyserial

3

Pyserial 初步使用

Pyserial API的使用参见官网:

https://pythonhosted.org/pyserial/pyserial_api.html。

初始化参数:

name:设备名字
port:读或者写端口
baudrate:波特率
bytesize:字节大小
parity:校验位
stopbits:停止位
timeout:读超时设置
writeTimeout:写超时
xonxoff:软件流控
rtscts:硬件流控
dsrdtr:硬件流控
interCharTimeout:字符间隔超时

常用接口

isOpen():查看端口是否被打开。
open() :打开端口‘。
close():关闭端口。
read():从端口读字节数据。默认1个字节。
read_all():从端口接收全部数据。
write('hello'):向端口写数据。
readline():读一行数据。
readlines():读多行数据。
in_waiting():返回接收缓存中的字节数。
flush():等待所有数据写出。
flushInput():丢弃接收缓存中的所有数据。
flushOutput():终止当前写操作,并丢弃发送缓存中的数据。

简易验证代码:

1. 使用虚拟串口,配置COM1与COM2

2. 打开串口助手,配置为COM2,9600后打开

3. Pycharm或者jupyter notebook输入如下代码并运行

运行截图如下:

1. Python打开串口后发送“Python serial port demo!”

2. 另外一端的COM2,手动输入“Yes”,Python程序接收到后打印出来

4

总结

本篇主要介绍了什么是上位机以及Python开发串口通讯型上位机所需的准备工作,并简单展示了如何进行串口收发。

一个好的上位机还需要更多功能,将会在接下来几期逐步深入与完善,敬请期待哦。

关注公众号,获取更多干货哦。

作者:跨界程序员Vincent

(0)

相关推荐

  • PLC串口通讯的基本知识重不重要?

    电气作业人员在使用PLC的时候会接触到很多的通讯协议以及通讯接口,最基本的PLC串口通讯和基本的通讯接口你都了解吗? 1,什么是串口通讯? 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线 ...

  • HarmonyOS 鸿蒙系统测试教程,再不看就out了

    鸿蒙系统已经开始介入移动端设备,作为搞IT的你还在无动于衷?嗅觉灵敏的人已经开始研究这个系统了,测试人员更应该尽早储备该系统的测试方法和手段,为自己的能力增添一分色彩,少废话开搞. 简介 开发者基于系 ...

  • 使用Python做网站真是太简单了!朋友...

    使用Python做网站真是太简单了!朋友让做个简易版的电商网站,于是晚上从国外网站下载了免费页面模板,确定好整体功能流程后,使用Flask jinja2,完成了网站整体的功能开发,我们两个小伙伴只用了 ...

  • 如何使用Python开发串口通讯上位机(完结)

    2021的第一份更新,比以往时候来得早一点! 前面两期讲了如何使用pyserial和做好了基本的上位机界面以及与API的联动,今天我们接着完善下代码. 1 编码规范的使用 前面两期只是做基础展示用,所 ...

  • 如何使用Python开发串口通讯上位机(二)

    黑色的dos窗口对于大部分来说,页面极为不友好,且操作不方便,因此本篇主要讲讲如何结合QtDesigner创建一个UI并初步与串口Api链接. 1 QtDesigner进行上位机页面设计 Python ...

  • 台达变频器通过以太网方式与上位机组态王通讯实例

    此例以台达变频器型号:VFD-M+来说明,该款台达变频器是只有RS485接口的,现在上位机最方便的就是通过网口来连接,要想与上位机通讯,那么就得接一个转换器,这个转换器就是RS485转网口的,当然协议 ...

  • python与arduino串口通讯对接opencv实现智能物品分拣

    2018-05-0118:53:50 先上图: 再来视频: //v.youku.com/v_show/id_XMzU3NzAwNzMyNA==.html?spm=a2hzp.8244740.0.0 # ...

  • 上位机开发必备的一个实体类

    -Begin- 上位机开发过程中,当自己编写通信类库的时候,包含ModbusRTU协议.ModbusTCP协议.各种PLC协议或其他自定义协议,都会涉及到报文的拼接:另外,如果大家做过一些配方管理的项 ...

  • 上位机开发之三菱Q系列PLC通信实践

    上位机开发之三菱Q系列PLC通信实践

  • 上位机下位机串口通信设计详解

    串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件.一般完成这种功能的电路,我们称为串行接口电路. 串口通信结 ...

  • mpi转以太网与IFIX上位机软件通讯

    mpi转以太网与IFIX上位机软件通讯 方案说明 现场是西门子300 315-2dp plc连接上位机组态软件,实现设备组网,上传数据到中控室.采取的方案是用兴达易控CHNet-S7300MD的一款3 ...

  • BLE4.0安卓上位机开发小技巧

    赶着五一假期看了看41Z里面BLE这块的SDK,发现NXP提供的example里面用到的UUID基本都是SIC组织规定的service和characteristic,而且用的传感器数据基本都是随机数 ...