上一篇文章文章写了串口数据的读取,这篇文章讲串口数据的写入(指令控制)
与下位机通信往往需要十六进制形式进行数据通信,根据设备串口通信指令文档进行指令通信,本篇以灯光控制为例:
1.pyserial模块封装了对串口的访问,安装:pip insatll pyserial
2.实例
import serial
import time
if __name__ == '__main__':
#指令含义
addr_light = [0xFF, 0x09, 0x00, 0x11, 0x00]
green_always_on = [0x12, 0x7C, 0x25] # 绿灯常量
light_off = [0x61, 0x3D, 0xC0] # 警灯关闭
try:
#串口连接
light_ser = serial.Serial(port='COM9', baudrate=9600, timeout=0.5)
if light_ser.isOpen(): # 判断端口是否被打开
print('lighting {0} is connect'.format(light_ser.name))
#发送绿灯指令
light_ser.write(addr_light + green_always_on)
#读取返回数据
data = light_ser.readline()
print(data.hex().upper()) #二进制转十六进制,大写
time.sleep(5)
#发送关闭指令
light_ser.write(addr_light + light_off)
else:
print("can not connect serial")
# 关闭串口
serial.Serial.close(light_ser)
except Exception:
print("error")
欢迎留言