串口是计算机上一种非常通用的设备通信协议。
pyserial模块封装了python对串口的访问,为多平台的使用提供了统一的接口。
一、检查串口
(一)示例代码
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)
(二)演示结果
检查使用的串口 > COM7
二、打开串口
(一)示例代码
ser = serial.Serial(serialName, 9600, timeout=1)
print("串口配置的参数 >", ser)
(二)演示结果
串口配置的参数 > Serial<id=0xeaaa285c50, open=True>(port='COM7', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=1, xonxoff=False, rtscts=False, dsrdtr=False)
三、设置串口
(一)示例代码
ser = serial.Serial()
ser.port = 'COM7'
ser.baudrate = 115200
ser.parity = 'O'
ser.open()
print("串口配置的参数 >", ser)
(二)演示结果
串口配置的参数 > Serial<id=0x299601ae80, open=True>(port='COM7', baudrate=115200, bytesize=8, parity='O', stopbits=1, timeout=None, xonxoff=False, rtscts=False, dsrdtr=False)
四、发送数据
(一)示例代码
result = ser.write(chr(0x06).encode("utf-8"))
print("写总字节数:", result)
result = ser.write("pySerial".encode("gbk"))
print("写总字节数:", result)
result = ser.write("pySerial1-".encode("gbk"))
print("写总字节数:", result)
result = ser.write("pySerial2-".encode("gbk"))
print("写总字节数:", result)
result = ser.write("pySerial3-".encode("gbk"))
print("写总字节数:", result)
(二)演示结果
写总字节数: 1
写总字节数: 8
写总字节数: 10
写总字节数: 10
写总字节数: 10
五、读取数据
(一)读一个字节
(1)示例代码
# 读一个字节
strRecv = ser.read().hex()
print("读取的数据 >", strRecv)
(2)演示结果
读取的数据 > 06
(二)读一行
(1)示例代码
# 读一行
strRecv = ser.readline().decode("gbk")
print("读取的数据 >", strRecv)
(2)演示结果
读取的数据 > pySerial
(三)读多行
(1)示例代码
# 读取多行,返回列表,必须匹配超时(timeout)使用
strRecv = ser.readlines()
print("读取的数据 >", strRecv)
(2)演示结果
读取的数据 > [b'pySerial1-pySerial2-pySerial3-']
六、关闭串口
(一)示例代码
ser.close()