我正在尝试使用以下代码连接Teltonika设备(FMB1xx):
import socket
port = 12050
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', port))
s.listen(1)
conn, addr = s.accept()
print('Connected by ', addr)
imei = conn.recv(1024)
conn.send('\x01')
while True:
try:
data = conn.recv(1024)
if not data: break
print (data)
except socket.error:
print ("Error Occured.")
break
到目前为止,我已经发现conn.send('\x01')
不能正常工作,设备不会发送剩余的数据。有几个这样的问题,但没有一个有一个很好的答案。 Here you can find documentation of this device
答案 0 :(得分:1)
如果发送超过一个字节,则必须对其进行编码和排序(little- / big-endian)。使用这样的东西:
conn.send(struct.pack('!L', 1))
关于连接到teltonika gps:https://github.com/Kein1945/GPS_Teltonika_Server/
答案 1 :(得分:0)
就像@uglymaxweber 提到的你已经把它打包成整数(四个字节),在 python3 上你可以使用内置的 to_bytes。
byteorder 是小端或大端,第一个参数是字节大小。
response = 5
conn.send(response.to_bytes(4, byteorder = 'big'))