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)
#根據項目要求,可以開一個線程掃描接收數據