python获取串口数据
Ⅰ 调用python模块串口的write写的数据与串口实际写的数
1、写入的数据长度不一致。在使用Python的`serial`模散旅汪块进行串口通信时,使用`write`函数写入数据时需要指定写入数据的长度,如果指定的长度与实际写入的数据长度不一致,就会导致写入的数据与实际写入的数据不同。
2、串口参数设置不正确。在使用Python的`serial`模块进行串口通信时,需要设置镇缓串口的通信参数,如波特率、数据位、校验位、停止位等。如果设置不正确,就会导致写入的数据与实际写入的数据不同。
3、串口通信过程中出现错误。在串口通信过程中,可能会出现一些错误,如数据丢失、数据重复等问题,这也会导致写入的数据与实际写入的数据不同。冲仔
Ⅱ Python如何进行多串口通信一个串口控制电机 一个串口采集数据
下载 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写个串口通信的程序
使用 pyserial 就可以处理串口通信,这个包是跨平台的。
http://pyserial.sourceforge.net/
示例程序在这里:
https://pyserial.readthedocs.io/en/latest/examples.html#wxpython-examples
importserial
#创建serial实例
serialport=serial.Serial()
serialport.port='COM1'
serialport.baudrate=9600
serialport.parity='N'
serialport.bytesize=8
serialport.stopbits=1
serialport.timeout=0.6
try:
serialport.open()
serialport.setDTR(True)
serialport.setRTS(True)
exceptException,ex:
printex
#发送数据
serialport.write(raw_data)
#根据项目要求,可以开一个线程扫描接收数据