我是Python新手,想用Raspberry Pi和Python閱讀我的智能儀表P1端口。問題:輸入看起來像一些組件醉了。 我相信這很容易解決,但經過幾個小時的搜索和嘗試,不得不尋求幫助。來自readline的'Drunk'輸入,來自其他程序的OK(讀取智能儀表P1端口)
當用CU等讀取P1端口時,一切都很好,所以硬件等都可以。使用串行到USB轉換器從dx.com(this one)
指揮(部分)的輸出:立方米-l的/ dev/ttyUSB0 -s 9600 --parity =無
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.")
已經嘗試與波特率等雜亂但沒有任何區別。
您是否嘗試過所有可能的奇偶校驗設置值,同時保持其他設置不變?它看起來像是一個平價問題。 –