分享

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

 myallmy 2020-12-06

用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:///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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多