串口是計(jì)算機(jī)上一種非常通用的設(shè)備通信協(xié)議奏篙。
pyserial模塊封裝了python對(duì)串口的訪問(wèn)柴淘,為多平臺(tái)的使用提供了統(tǒng)一的接口。
一秘通、檢查串口
(一)示例代碼
import serial
import serial.tools.list_ports
plist = list(serial.tools.list_ports.comports())
if len(plist) <= 0:
print ("找不到串口为严!")
else:
plist_0 = list(plist[0])
serialName = plist_0[0]
print("檢查使用的串口 >", serialName)
(二)演示結(jié)果
檢查使用的串口 > COM7
二、打開(kāi)串口
(一)示例代碼
ser = serial.Serial(serialName, 9600, timeout=1)
print("串口配置的參數(shù) >", ser)
(二)演示結(jié)果
串口配置的參數(shù) > Serial<id=0xeaaa285c50, open=True>(port='COM7', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=1, xonxoff=False, rtscts=False, dsrdtr=False)
三肺稀、設(shè)置串口
(一)示例代碼
ser = serial.Serial()
ser.port = 'COM7'
ser.baudrate = 115200
ser.parity = 'O'
ser.open()
print("串口配置的參數(shù) >", ser)
(二)演示結(jié)果
串口配置的參數(shù) > Serial<id=0x299601ae80, open=True>(port='COM7', baudrate=115200, bytesize=8, parity='O', stopbits=1, timeout=None, xonxoff=False, rtscts=False, dsrdtr=False)
四第股、發(fā)送數(shù)據(jù)
(一)示例代碼
result = ser.write(chr(0x06).encode("utf-8"))
print("寫總字節(jié)數(shù):", result)
result = ser.write("pySerial".encode("gbk"))
print("寫總字節(jié)數(shù):", result)
result = ser.write("pySerial1-".encode("gbk"))
print("寫總字節(jié)數(shù):", result)
result = ser.write("pySerial2-".encode("gbk"))
print("寫總字節(jié)數(shù):", result)
result = ser.write("pySerial3-".encode("gbk"))
print("寫總字節(jié)數(shù):", result)
(二)演示結(jié)果
寫總字節(jié)數(shù): 1
寫總字節(jié)數(shù): 8
寫總字節(jié)數(shù): 10
寫總字節(jié)數(shù): 10
寫總字節(jié)數(shù): 10
五、讀取數(shù)據(jù)
(一)讀一個(gè)字節(jié)
(1)示例代碼
# 讀一個(gè)字節(jié)
strRecv = ser.read().hex()
print("讀取的數(shù)據(jù) >", strRecv)
(2)演示結(jié)果
讀取的數(shù)據(jù) > 06
(二)讀一行
(1)示例代碼
# 讀一行
strRecv = ser.readline().decode("gbk")
print("讀取的數(shù)據(jù) >", strRecv)
(2)演示結(jié)果
讀取的數(shù)據(jù) > pySerial
(三)讀多行
(1)示例代碼
# 讀取多行话原,返回列表夕吻,必須匹配超時(shí)(timeout)使用
strRecv = ser.readlines()
print("讀取的數(shù)據(jù) >", strRecv)
(2)演示結(jié)果
讀取的數(shù)據(jù) > [b'pySerial1-pySerial2-pySerial3-']
六、關(guān)閉串口
(一)示例代碼
ser.close()