【问题标题】:Connecting Teltonika device with Python over TCP通过 TCP 使用 Python 连接 Teltonika 设备
【发布时间】:2020-12-31 15:36:55
【问题描述】:

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

【问题讨论】:

    标签: python sockets tcp


    【解决方案1】:

    如果您发送超过一个字节,则必须对其进行编码和排序(小/大端)。使用这样的东西:

    conn.send(struct.pack('!L', 1))
    

    关于连接teltonika gps:https://github.com/Kein1945/GPS_Teltonika_Server/

    【讨论】:

    • 这个解决方案有效吗?原因就我而言,在获得 IMEI 号码后,它会永远挂起。 @uglymaxweber
    【解决方案2】:

    就像@uglymaxweber 提到的,你已经将它打包为整数(四个字节),在 python3 上你可以使用内置的 to_bytes。

    byteorder 是小端或大端,第一个参数是字节大小。

       response = 5 
       conn.send(response.to_bytes(4, byteorder = 'big'))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-04
      • 2016-11-06
      • 2011-03-13
      • 2014-07-19
      • 1970-01-01
      • 2021-05-25
      • 1970-01-01
      相关资源
      最近更新 更多