私は、gpsトラッカーからのメッセージをキャッチし、サーバーのデータベースにメッセージを書き込むための単純なPythonスクリプトを書いています。
# -*- 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()
スクリプトをテストするには、自宅のPCをスクリプトとともに使用します
# -*- 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()
すべてがうまくいき、サーバーはメッセージをdbに書き込みます。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:[Errno93]プロトコルがサポートされていません」というメッセージが表示されました。
あなたは解決策が何であるか知っていますか?
デバイスはGT03bです。