我有很多设备可以将NMEA语句发送到URL/ip。看上去像这样
$GPGGA,200130.0,3447.854659,N,11014.636735,W,1,11,0.8,41.4,M,-24.0,M,*53
我想读取这些数据,解析它,并将关键部分上传到数据库中。我知道如何解析它并将其上传到DB,但是我完全不知道如何“读取”/接受/将数据放到python程序中,以便能够解析和上传。
我的第一个想法是把它指向Django页面,然后让Djanog解析它并上传到数据库(数据将从Django站点访问),但是它是NMEA语句,而不是HTTP请求,因此Django拒绝它为"message语法“
阅读发送到url/IP的NMEA句子的最佳方法(python)是什么?
谢谢
发布于 2015-01-26 14:52:20
我假设您有一些具有以太网连接的硬件,它通过其以太网连接输出NMEA字符串。这可能默认为拥有一些随机的192.168.0.xIP地址,并在端口12002或其他地方泄漏数据。
您通常会创建一个套接字来侦听这些不可用的数据。
server.py
import socket
host = "" #Localhost
port = 12002
PACKET_SIZE=1024 # how many characters to read at a time
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind((host,port))
sock.listen(5) # we should never have more than one client
def work_thread(client):
while True: #continuously read and handle data
data = client.recv(PACKET_SIZE)
if not data:
break # done with this client
processData(data)
while True:
client,addr = sock.accept() # your script will block here waiting for a connection
t = threading.Thread(target=work_thread,args=(client,))
t.start()
然而,有时您需要对设备进行ping以获取数据。
client.py
import socket
host = "192.168.0.204" #Device IP
port = 12002
PACKET_SIZE=1024 # how many characters to read at a time
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.connect((host,port)) #connect to the device
while True: #continuously read and handle data
data = sock.recv(PACKET_SIZE)
processData(data)
https://stackoverflow.com/questions/28160010
复制相似问题