一个系统和另一个系统进行通信,在单片机开发时经常使用的是串口通信,IIC,SPI等。需要SPI,IIC所需要的线路连接较少,但要是涉及到电脑终端的开发,会经常使用到USB口,实现电脑和MUC的串口通信。




python 上位机与下位机通过串口通信 python编写串口通信上位机_上位机

应用自己的USB口



使用的是电脑的通用串口总线(Universal Serial Bus)。USB口具有传输速率快,使用方便,支持热插拔的优点。主要靠VCC,GND,DATA(D-),DATA(D+)四根线实现通信。




python 上位机与下位机通过串口通信 python编写串口通信上位机_通信协议_02

4线实现通信




python 上位机与下位机通过串口通信 python编写串口通信上位机_上位机_03

串口通信协议



参考串口通信协议,需要发送时候添加奇偶校验位,停止位,数据位。我们要选择电脑串口号,就需要串口号,接收和发送要保持同步,所以要有波特率的选择。

先说一下开发平台,用的是VS,建立一个控制台应用。在简单布局以后的结果如下




python 上位机与下位机通过串口通信 python编写串口通信上位机_通信协议_04


波特率是衡量符号传输速率的参数即单位时间传送的字符数,一般有9600,1,1200,4800,19200等参数选择;数据位是衡量通信中实际数据位的参数,即发送数据的位数,一般有8,7,6,5作为选项;校验位具体使用的是奇偶校验,是一种简单的检错方式,一般奇校验,偶校验或者不填;停止位是数据包的最后一位,一般是1,1.5,2;


python 上位机与下位机通过串口通信 python编写串口通信上位机_串口_05


python 上位机与下位机通过串口通信 python编写串口通信上位机_pyqt5 编写串口通讯上位机_06


python 上位机与下位机通过串口通信 python编写串口通信上位机_串口_07


串口号是自动获取的,波特率,数据位是通过下拉进行选择,上面的程序主要是通过switch语句实现校验位和停止位的选择。当点击了打开串口后就执行上面程序。

发送和接受程序如下


python 上位机与下位机通过串口通信 python编写串口通信上位机_pyqt5 编写串口通讯上位机_08

接收


python 上位机与下位机通过串口通信 python编写串口通信上位机_通信协议_09

发送


之后就是根据收到的数据,完成不同的功能,项目不一样,内容也就不一样了。因为做项目经常要和电脑进行通信,方便实现远程控制,一般就是用C#编写一个上位机实现相应功能。要是要实行无线控制,就外接一个蓝牙,或者使用电脑的内置蓝牙。


python 上位机与下位机通过串口通信 python编写串口通信上位机_上位机_10

停车场的上位机