首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >处理发送到URL/IP的NMEA数据

处理发送到URL/IP的NMEA数据
EN

Stack Overflow用户
提问于 2015-01-26 14:35:42
回答 1查看 2.3K关注 0票数 0

我有很多设备可以将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)是什么?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-26 14:52:20

我假设您有一些具有以太网连接的硬件,它通过其以太网连接输出NMEA字符串。这可能默认为拥有一些随机的192.168.0.xIP地址,并在端口12002或其他地方泄漏数据。

您通常会创建一个套接字来侦听这些不可用的数据。

server.py

代码语言:javascript
运行
AI代码解释
复制
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

代码语言:javascript
运行
AI代码解释
复制
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)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28160010

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文