Python Teltonika FM1100和TCP listner

Python Teltonika FM1100和TCP listner,python,tcp,Python,Tcp,嗨,我在这里。。。 我正在用python编写一个tcp listner来读取teltonika设备并与之通信,但在收到imei代码后,我尝试将AKCNOWLEDGENT发送到该设备,因此它不会向我发送AVL数据时出现问题。 下面是一个简单的代码: #!/usr/bin/env python import socket import time import binascii #Variables______________________________________# imei_known

嗨,我在这里。。。 我正在用python编写一个tcp listner来读取teltonika设备并与之通信,但在收到imei代码后,我尝试将AKCNOWLEDGENT发送到该设备,因此它不会向我发送AVL数据时出现问题。 下面是一个简单的代码:

#!/usr/bin/env python

import socket
import time
import binascii

#Variables______________________________________#
imei_known = 'XXXXXXXXXXXXXXX'
COM = 0
TCP_IP = '192.168.1.115'
TCP_PORT = 55001   
BUFFER_SIZE = 5024
MESSAGE_NO_OK = '00'
MESSAGE_OK = '01'
msg_ok = MESSAGE_OK.encode('utf-8')
msg_no_ok = MESSAGE_NO_OK.encode('utf-8')
#gps elememts (to be review)
long = [0] * 8
lat = [0] * 8
angle = [0] * 4
speed = [0] * 4
sat = [0] * 2
#_____________________________________________________________#

print ('Server listening on port:',TCP_PORT)
print ('\nWaiting for data input from FM1100...')

#socket    
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)


server_socket.bind((TCP_IP, TCP_PORT))
server_socket.listen(5)


client_socket, addr = server_socket.accept()         
print ('\nConnection address:', addr)

#infinite loop  
while 1:

    if COM == 0:
        print ('\nCOM num = ',COM)
        data = client_socket.recv(BUFFER_SIZE)
        imei = data.decode("iso-8859-1")
        lista = list(imei)
        #vector of 15 elements for IMEI code
        lista_2 = [0] * 15
        for n in range (0,15):
            lista_2 [n]  = lista[n+2]
        imei=''.join(lista_2)    
        print ('\nDevice\'s IMEI:', imei)
        print ('\nComparing IMEI...')
        if imei_known == imei:
            print('\nDevice Recognized ')
            print('\nSending data to client...')
            client_socket.send(b'0x01')
            data = ''
        else:
            client_socket.send(msg_no_ok)
            print('\nDevice NOT Recognized')
            break

    print('\nWaiting for AVL data...')

您必须以十六进制回复FM1100。像这样:

client_socket.send('\x01')

嘿,伙计,你明白了吗?我有同样的问题,下面的答案('\x01')对我不起作用。它只是一直在发送IMEI。谢谢你的洞察力和帮助,我让这个工作。接下来,请帮助我以人类可读的形式获取AVL数据。我正在使用data=client\u socket.recv(BUFFER\u SIZE)avl\u data=data.decode(“iso-8859-1”)获取此avl数据u'\x00\x00\x00\x00\x00\x03\xe3\x08\x10\x00\x00\x00\x00\x01c\x05\x8d\xf38\x00.N\xfd\x07\xba\x12\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00