来自 GPS 跟踪器的 TCP 消息



我正在编写一个简单的python脚本来捕获来自GPS跟踪器的消息并将消息写入服务器的数据库。

# -*- coding: utf-8 -*-
import socket, string
import MySQLdb
def write_message(x):
    db = MySQLdb.connect(host="localhost", user="root", passwd="****", db="****", charset='utf8')
    cursor = db.cursor()
    sql = '''INSERT INTO test(test_c) VALUES ('%(test_c)s') '''%{"test_c":x}
    cursor.execute(sql)
    db.commit()
    db.close()
    return x  
HOST = ""
PORT = 50007
srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
srv.bind((HOST, PORT))
while 1:
    print u"Listen to " + str(PORT)
    srv.listen(1)             
    sock, addr = srv.accept()
    while 1:
        pal = sock.recv(2048)
        if not pal: 
            break
        print u"Recieved %s:%s:" % addr, pal
        lap = write_message(pal)
    sock.close()

要测试脚本,我将家用电脑与脚本一起使用

# -*- coding: utf-8 -*-
import socket
HOST = '****'   
PORT = 50007            
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
mes = u'a'
s.sendall(mes)
s.close()

一切正常,服务器将消息写入数据库。使用 utf-8 它们充满了 unicode 字符,没关系。但是当我使用 GPS 跟踪器时,我捕获了一些奇怪的消息,例如"xxSA░7d└╣"('xx\x11\x01\x03SA\x907d\x84 \x10\x0b2\x01\x00\x01\xa7\r'),但文档说消息仅包含 ASCII 符号。我发现有"套接字。SOCK_RAW"选项并尝试使用它,但得到"socket.error:不支持[Errno 93]协议"。

你知道解决方案是什么吗?

该设备是GT03b。

GT03B 的服务器命令是 ASCII,但其余命令(协议号、校验和等)只是一个字节流。例如,您的"奇怪消息"似乎是正常的LBS信息包。

有关详细信息

,请参阅 GT03B 协议。

最新更新