我试图通过TCP连接将软件与python连接起来。该软件是AGWPE(实际上,它是声音模型,但它们共享相同的API)。 当我向软件询问"正常"包,一切都很好,但是当我要求" raw"数据包,tcp连接给我的十六进制字节赢得了根本没有解码。不是ASCII,不是unicode,不是latin-1。
AGWPE的API已经存在于我遇到问题的数据包中: http://uz7.ho.ua/includes/agwpeapi.htm#_Toc500723814
这是我的代码:
import socket
#import aprslib
raw=1
TCP_IP = '127.0.0.1'
TCP_PORT = 8000
BUFFER_SIZE = 1024
MESSAGE = '000000006D00000000000000000000000000000000000000000000000000000000000000'
message2 = '000000006B00000000000000000000000000000000000000000000000000000000000000'
MESSAGE = bytearray.fromhex(MESSAGE)
message2 = bytearray.fromhex(message2)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
s.send(MESSAGE)
if raw:
s.send(message2)
data = s.recv(BUFFER_SIZE)
dataf=data.decode("ascii", 'ignore') #not putting the second argument raises an exception
#aprs=aprslib.parse(dataf)
print(dataf)
s.close()
这是我的结果:(我会粘贴它,但似乎记事本和浏览器不喜欢某些字符) 原始: http://i.gyazo.com/2e6eecf99c6e79c7cdbcf868a734694b.png
我会期待类似的例子:
... ...ķLU7DID..8.LU7DID-4..B ...,的E ....ñ......Ñ... i8的... [LU7DID @ LU7DID-4] B,C,D,E,X,I,M,?,N,P,U,J,R:..
使用char 0x00而不是。当然。至少是可读的东西。
非常感谢你的时间。