我有3个tk103a设备。他们中的两个发送这样的信息:b'##,imei:359586015829802,A'-我可以使用它。但是其中一个发送b'xx \ r \ x01 \ x03W \ x85pE \ x07 \ x177 \ x00 \ x06 \ xab \ xa4 \ r \ n'而不是b'##,imei:359586015829802,A'。经典方法无济于事,例如带有('utf-8'或'ascii'或'cp866'...)的.decode()如何将其固定为正常值?
import socket
sock = socket.socket()
sock.bind(('192.168.1.164', 8051))
sock.listen()
conn, addr = sock.accept()
print 'connected:', addr
while True:
data = conn.recv(1024)
if not data:
break
try:
d = data.decode()
except:
raise
conn.close()
data.decode()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x85 in position 6: invalid start byte
接收到的消息和预期的消息似乎完全无关,无法从一个转换为另一个。下面是它们的二进制表示。
x x \r \x01 \x03 W \x85 ...
01111000 01111000 00001101 00000001 00000011 01010111 10000101
# # , i m e i ...
00100011 00100011 00101100 01101001 01101101 01100101 01101001
该问题可能是由于其他原因,例如设备的配置。您可以尝试将设备重置为出厂设置,然后重试。另外,请确保您确实连接了此设备,但未连接任何其他设备。