Python如何进行多串口通信?一个串口控制电机 一个串口采集数据?

Python09

Python如何进行多串口通信?一个串口控制电机 一个串口采集数据?,第1张

下载 pyserial包

def OpenCom(self,*args):#设置端口和波特率selComPort =‘com2’#波特率selBaudRate =9600 #奇偶校验selParity = 'N'try:if(not self.mySerial):self.mySerial = serial.Serial(port=selComPort, baudrate=selBaudRate,bytesize=8,parity=selParity,stopbits=1,timeout=5)else:if(self.mySerial.isOpen()):self.mySerial.close()self.mySerial = serial.Serial(port=selComPort, baudrate=selBaudRate, bytesize=8, parity=selParity, stopbits=1, timeout=5)self.lblInfo['text'] = '打开成功!'except Exception as ex:self.lblInfo['text'] = '打开失败!'

#使用com口发送modbus协议给终端设备。

def btnEmId_Click(self):

barray = bytearray([0x05, 0x03, 0xA#, 0x54, 0x00, 0x08])

vOldEmId = self.txbOldEmId.get()

vNewEmId = self.txbNewEmId.get()

barray[0] = int(vOldEmId)

barray[5] = int(vNewEmId)

#crc校验

strInput = utils.crc16_append(barray)

print(barray)

n = self.mySerial.write(barray)

if(n >0):

str = self.mySerial.readall()

self.lblInfo['text'] = 'success!'

# for s in str:

# print (hex(s))

else:

self.lblInfo['text'] = 'error!'

python提供了丰富的module 对串口的操作同样有对应的module:serial

环境:python3.5 蓝牙模块:HC-05 波特率38400

首先导入serial模块(通过pip install serial 安装)

获取串口ser 通过serial.Serial(地址,波特率,超时时间)

创建线程监听串口数据

使用 ser.in_waiting() 获知数据量 这个函数返回当前串口收到的数据长度

收取数据后进行详细操作

python需要运行在windows、mac、linux这样的系统环境里,而这样的环境要拿到传感器的数据有几种方法。

可以通过zigbee转发数据,python第三方库中有pyserial这样的库通过配置串口数据、波特率等参数,能够接收到传感器数据,对数据进行处理后,再进行分析。