Python3串⼝获取智能电表数据(DTL645-2007)先安装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 = (adline())    #获取该命令对应的返回报⽂
print(data)
print(binascii.b2a_hex(data)[-12:-4]) #将返回报⽂转码并提取报⽂中数据段
# 还需要进⼀步减33,反向取值,最终获取我们常⽤的数字
ser.close()
真实环境中运⾏结果如下图,正泰的RS-485的电表。
python怎么读取串口数据

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。