1
在我的Arduino上,我收到了Zigbee I/O數據包。每個數據包有26個字節。我試圖執行給定的程序,並得到一個錯誤。讀取到達串口的數據包
這是代碼:
import serial
ser=serial.Serial('COM17',9600,timeout=1)
while 1:
Data_in=ser.readline().encode('hex')
if Data_in[0:2]=='7e':
Data_in.split('7e',-1)
print("===================================")
print("Found Packet :")
print(Data_in)
if Data_in[6:8]=='92':
print("Packet type = Zigbee I/O Packet")
AD=Data_in[22:24]
print ("Device address")
print(AD)
SMH=Data_in[34:36]
SML=Data_in[36:38]
RH=Data_in[38:40]
RL=Data_in[40:42]
PH=Data_in[42:44]
PL=Data_in[44:46]
print("Soil moisture")
print(SMH)
print(SML)
print("Rain")
print(RH)
print(RL)
print("PIR")
print(PH)
print(PL)
print("====================================")
print(" ")
我得到的錯誤是:
Traceback (most recent call last):
File "C:\Windows\System32\chime2.py", line 5, in <module>
Data_in=ser.readline().encode('hex')
AttributeError: 'bytes' object has no attribute 'encode'
可能是什麼問題?
看起來像從'readline'獲取一個字節對象。如果是這樣,你不需要編碼到十六進制。代碼看起來像是在某些時候從readline方法獲得了字符串。你是否從某處複製代碼? – Peter
是的,我提到我在網上找到的代碼n根據我的要求改變它:( –
所以它是否意味着如果我刪除該編碼('十六進制')部分我會得到在十六進制數據包? –