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根据我的要求改变它:( –
所以它是否意味着如果我删除该编码('十六进制')部分我会得到在十六进制数据包? –