我是 Python 新手,想使用 Raspberry Pi 和 Python 读取我的智能电表 P1 端口。问题:输入看起来像某些组件被喝醉了。我敢肯定它很容易修复,但经过几个小时的搜索和尝试,不得不寻求帮助。
当用 CU 等读取 P1 端口时,一切都很好,所以硬件等也正常。使用 dx.com 的串口转 USB 转换器(这个)
命令和(部分)输出:cu -l /dev/ttyUSB0 -s 9600 --parity=none
0-0:96.1.1(205A414246303031363631323463949271)
1-0:1.8.1(03118.000*kWh)
但是,当尝试从 Python 中读取它时,输入会变得乱七八糟(但至少是一致的):
0-0:96.±.±(²05A´±´²´630303±39363±3²3´639·3±3²©
±-0:±.¸.±(03±±¸.000ªë×è©
如何解决这个问题?我正在使用的代码是:
import serial
ser = serial.Serial()
ser.baudrate = 9600
ser.bytesize=serial.SEVENBITS
ser.parity=serial.PARITY_EVEN
ser.stopbits=serial.STOPBITS_ONE
ser.xonxoff=0
ser.rtscts=0
ser.timeout=20
ser.port="/dev/ttyUSB0"
ser.close()
ser.open()
print ("Waiting for P1 output on " + ser.portstr)
counter=0
#read 20 lines
while counter < 20:
print ser.readline()
counter=counter+1
try:
ser.close()
print ("Closed serial port.")
except:
sys.exit ("Couldn't close serial port.")
已经尝试过弄乱波特率等,但这没有任何区别。