先安装pyserial模块
import serial
import binascii
ser = serial.Serial("COM3",2400,parity=serial.PARITY_EVEN,timeout=2)
#timeout为0时候无法获取返回值(串口有返回,但read不到)
print(ser.isOpen()) # 判断串口是否打开,返回"True" or "False"
ser.write((b'\xfe\xfe\xfe\xfe\x68\x77\x01\x02\x16\x12\x18\x68\x11\x04\x33\x33\x34\x33\x6c\x16'))
#根据DTL645-2007规约发送【读取(当前)正向有功总电能命令】-该命令为0x00010000,不发前导符4个"FE"也行
data = (ser.readline()) #获取该命令对应的返回报文
print(data)
print(binascii.b2a_hex(data)[-12:-4]) #将返回报文转码并提取报文中数据段
# 还需要进一步减33,反向取值,最终获取我们常用的数字
ser.close()
真实环境中运行结果如下图,正泰的RS-485的电表。