通过TCP连接Teltonika设备和Python

时间:2017-11-06 00:45:16

标签: python sockets tcp

我正在尝试使用以下代码连接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

2 个答案:

答案 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'))