【问题标题】:Teltonika FM1100 and TCP listnerTeltonika FM1100 和 TCP 监听器
【发布时间】:2013-02-15 11:32:22
【问题描述】:

喂,我来了…… 我正在用 python 编写一个 tcp 侦听器来读取和与 teltonika 设备通信,但是在收到 imei 代码后我遇到了问题,我尝试将确认发送到设备,所以它不会向我发送 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...')

【问题讨论】:

  • 嘿伙计,你发现了吗?我有同样的问题,下面的答案 ('\x01') 对我不起作用。它只是不断发送 IMEI。
  • 感谢您的洞察力和帮助我完成了这项工作。接下来帮助我以人类可读的形式获取 AVL 数据。我正在使用 data = client_socket.recv(BUFFER_SIZE) avl_data = data.decode("iso-8859-1") 获取此 AVL 数据 u'\x00\x00\x00\x00\x00\x00\x03\xe3\x08\ x10\x00\x00\x01c\x05\x8d\xf38\x00.N\xdfD\x07\xba\x12\xea\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x05\xef\ x00\xf0\x00P\x00\x1

标签: python tcp


【解决方案1】:

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

client_socket.send('\x01')

【讨论】:

    猜你喜欢
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 2015-09-14
    • 2012-03-30
    • 1970-01-01
    • 2018-06-19
    相关资源
    最近更新 更多