我正在编写一个简单的 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\n' ) 但文档说消息仅包含 ascii 符号。我发现有“socket.SOCK_RAW”选项并尝试使用它,但得到“socket.error: [Errno 93] Protocol not supported”。
你知道解决办法是什么吗?
该设备是GT03b。