serial库提供了操作串口的方法:
import serial
def modbus_server():
# 打开串口
ser = serial.Serial(
"/dev/ttyS7", 38400, timeout=0.1, bytesize=8, parity="N", stopbits=1
)
# 清除缓存
ser.flushInput()
while True:
try:
# 读取串口的数据,我这里充当的是从站(即传感器),读取了十个字节
# 之前使用过ser.inWaiting()方法,这个方法会把串口的数据全部拿到,但是发现有时拿到的数据不完整,这里使用的ser.read(10),只有拿到了十个字节的数据才会返回,否则就一直等待。
recv = ser.read(10).hex()
# 收到请求帧,校验后返回数据
payload_data = "10020002010200CB010E00001003DF"
ser.write(bytes.fromhex(payload_data ))
except Exception as e:
print(e)
# 发送数据后可以关闭串口
ser.close()