上面的答案对于任何使用gpsd的现代版本并且只在特定时间需要数据的人来说都是非常低效和过于复杂的,而不是流媒体。

大多数gpse每秒至少发送一次位置信息。大概是因为许多基于GPS的应用程序都需要实时更新,所以我看到的绝大多数gpsd客户机示例都使用上述方法从gpsd观看流并接收实时更新(或多或少是GPS发送的)。

然而,如果(在OP的例子中)您不需要流式信息,而只需要在请求时(即通过用户交互或其他事件)最后报告的位置,则有一种更高效和更简单的方法:让gpsd缓存最新的位置信息,并在需要时进行查询。

gpsd JSON protocol有一个?POLL;请求,该请求返回gpsd看到的最新GPS信息。不必迭代gps消息的积压,并不断读取新消息以避免缓冲区已满,您可以在gpsd会话开始时发送?WATCH={"enable":true}消息,然后在需要时使用?POLL;查询最新位置信息。响应是一个JSON对象,包含gpsd从GPS上看到的最新信息。

如果您使用的是Python3,那么我找到的最简单的方法就是使用pypi上提供的gpsd-py3包。要连接到gpsd,请获取最新的位置信息,然后打印当前位置:import gpsd

gpsd.connect()

packet = gpsd.get_current()

print(packet.position())

您可以在需要新位置信息时重复gpsd.get_current()调用,在后台,gpsd包将执行对gpsd的?POLL;调用并返回表示响应的对象。

使用内置的gps模块来实现这一点并不是非常简单,但是有许多其他Python客户机可用,而且对于任何可以执行套接字通信的对象都是非常简单的,包括这个使用telnet的示例:$ telnet localhost 2947

Trying ::1...

Connected to localhost.

Escape character is '^]'.

{"class":"VERSION","release":"3.16","rev":"3.16","proto_major":3,"proto_minor":11}

?WATCH={"enable":true}

{"class":"DEVICES","devices":[{"class":"DEVICE","path":"/dev/pts/10","driver":"SiRF","activated":"2018-03-02T21:14:52.687Z","flags":1,"native":1,"bps":4800,"parity":"N","stopbits":1,"cycle":1.00}]}

{"class":"WATCH","enable":true,"json":false,"nmea":false,"raw":0,"scaled":false,"timing":false,"split24":false,"pps":false}

?POLL;

{"class":"POLL","time":"2018-03-02T21:14:54.873Z","active":1,"tpv":[{"class":"TPV","device":"/dev/pts/10","mode":3,"time":"2005-06-09T14:34:53.280Z","ept":0.005,"lat":46.498332203,"lon":7.567403907,"alt":1343.165,"epx":24.829,"epy":25.326,"epv":78.615,"track":10.3788,"speed":0.091,"climb":-0.085,"eps":50.65,"epc":157.23}],"gst":[{"class":"GST","device":"/dev/pts/10","time":"1970-01-01T00:00:00.000Z","rms":0.000,"major":0.000,"minor":0.000,"orient":0.000,"lat":0.000,"lon":0.000,"alt":0.000}],"sky":[{"class":"SKY","device":"/dev/pts/10","time":"2005-06-09T14:34:53.280Z","xdop":1.66,"ydop":1.69,"vdop":3.42,"tdop":3.05,"hdop":2.40,"gdop":5.15,"pdop":4.16,"satellites":[{"PRN":23,"el":6,"az":84,"ss":0,"used":false},{"PRN":28,"el":7,"az":160,"ss":0,"used":false},{"PRN":8,"el":66,"az":189,"ss":45,"used":true},{"PRN":29,"el":13,"az":273,"ss":0,"used":false},{"PRN":10,"el":51,"az":304,"ss":29,"used":true},{"PRN":4,"el":15,"az":199,"ss":36,"used":true},{"PRN":2,"el":34,"az":241,"ss":41,"used":true},{"PRN":27,"el":71,"az":76,"ss":42,"used":true}]}]}

?POLL;

{"class":"POLL","time":"2018-03-02T21:14:58.856Z","active":1,"tpv":[{"class":"TPV","device":"/dev/pts/10","mode":3,"time":"2005-06-09T14:34:53.280Z","ept":0.005,"lat":46.498332203,"lon":7.567403907,"alt":1343.165,"epx":24.829,"epy":25.326,"epv":78.615,"track":10.3788,"speed":0.091,"climb":-0.085,"eps":50.65,"epc":157.23}],"gst":[{"class":"GST","device":"/dev/pts/10","time":"1970-01-01T00:00:00.000Z","rms":0.000,"major":0.000,"minor":0.000,"orient":0.000,"lat":0.000,"lon":0.000,"alt":0.000}],"sky":[{"class":"SKY","device":"/dev/pts/10","time":"2005-06-09T14:34:53.280Z","xdop":1.66,"ydop":1.69,"vdop":3.42,"tdop":3.05,"hdop":2.40,"gdop":5.15,"pdop":4.16,"satellites":[{"PRN":23,"el":6,"az":84,"ss":0,"used":false},{"PRN":28,"el":7,"az":160,"ss":0,"used":false},{"PRN":8,"el":66,"az":189,"ss":45,"used":true},{"PRN":29,"el":13,"az":273,"ss":0,"used":false},{"PRN":10,"el":51,"az":304,"ss":29,"used":true},{"PRN":4,"el":15,"az":199,"ss":36,"used":true},{"PRN":2,"el":34,"az":241,"ss":41,"used":true},{"PRN":27,"el":71,"az":76,"ss":42,"used":true}]}]}

python获取gps_Python GPS模块:读取最新的GPS D相关推荐

  1. 【GPS定位/导航/授时】单频GPS模块与双频GPS模块的区别有哪些?

    位置是物联网一个基础的.不可或缺的信息,更高精度的定位信息能够带来更高的效益和价值.关于位置服务,普通人最熟悉的应用莫过于导航.对于多数有车族而言,脱离导航可能寸步难行,而自动驾驶对定位精度提出更高要 ...

  2. python gps模块_树莓派连接GPS模块

    一月份的时候觉得好玩买了树莓派,但是太懒没怎么研究,但最近当初买树莓派时的那个梦想又萦绕心头,决定抽空完成一下当年的计划~ GPS模块是其中很重要的一环,于是在某宝上搜索,找了一家相对便宜也很轻巧的G ...

  3. 嵌入式GPS模块,天线一体化GPS模块,GNSS G-Mouse测试指导

    我们常说的GPS定位模块称为用户部分,它像"收音机"一样接收.解调卫星的广播C/A码信号,中以频率为1575.42MHz.GPS模块/北斗模块/GNSS模块并不播发信号,属于被动定 ...

  4. python获取gps数据_Python GPS模块:读取最新的GPS数据

    加我两分钱. 无论出于何种原因,我的覆盆子pi将继续执行一个线程,我必须硬重置pi. 所以我结合了sysnthesizerpatel和我在Dan Mandel的博客here上找到的答案. 我的gps_ ...

  5. Python 获取时间——time 模块

    文章目录 time模块 1. time.localtime() 2. time.time() 3. time.mktime(t) 4. time.asctime() 5. time.ctime() 6 ...

  6. python获取目录树_Python读取文件目录树——os.walk

    os.walk是Python的内置函数用来遍历文件目录树. [python] import os rootDir = 'd:\assa' for dirName, subdirList, fileLi ...

  7. python 读取邮件内容_利用Python imaplib和email模块 读取邮件文本内容及附件内容...

    python使用imap接收邮件的过程探索 https://www.cnblogs.com/yhlx/archive/2013/03/22/2975817.html #! encoding:utf8 ...

  8. 树莓派连接GPS模块,python获取GPS数据

    文章主要内容: 模块之间的连接 树莓派识别gps模块 使用Python语言获取GPS数据 1.连线 ---- 使用 USB转TTL转换器,将树莓派和GPS模块连接 需要的设备:gps模块,gps天线, ...

  9. Arduino读取GPS模块

    Arduino读取GPS模块 最近要做一个公交车报站器,所以打算用GPS模块来实现定位的功能,于是找朋友借了个GPS模块来试试. GPS模块 常见的GPS模块的参数都差不多,除了有些个别输出格式不同. ...

  10. python怎么打开h5文件_python中利用h5py模块读取h5文件中的主键方法

    如下所示: import h5py import numpy as np #HDF5的写入: imgData = np.zeros((2,4)) f = h5py.File('HDF5_FILE.h5 ...

最新文章

  1. mysql8自定义安装位置_【MySQL】Windows10:MySQL 8 自定义路径安装
  2. linux 没有权限登录,CentOS中让一个用户没有登录权限
  3. dts数据库迁移工具_干货分享丨DM8 DTS工具使用小技巧
  4. php将字符变为数字,数字字符怎么转化为数字 php 怎么将字符转成数字
  5. JAVA和Android的回调机制
  6. 计算机管理 窗口中找到 guest 用户,Guest 来宾用户不见了??
  7. python生存曲线_Python从零开始第五章生物信息学⑤生存分析(log-rank)
  8. S变换在特征提取中的使用
  9. 华盛酒店系统客户端连不上服务器,华盛酒店管理系统-客房管理系统-房务手册.pdf...
  10. 老徐WEB:js入门学习 - javascript函数和闭包
  11. 从业多年,谈谈差分输入电路和共模信号,差模信号关系的理解
  12. Codeforces Round #703 (Div. 2)A. Shifting Stacks
  13. Qt的工程文件(.pro) -- 转
  14. 读取手机内存和SD卡的空间大小
  15. ue4网格转地形_【魔改UE4】Rtx实时焦散的一次尝试
  16. 小白如何利用短视频做引流推广
  17. 有道翻译的划词图标在adobe acrobat pro不显示
  18. 硬件加速不支持的问题
  19. 微信小程序私教预约管理系统+后台管理系统
  20. 东南大学计算机复试机考,复试指南 | 东南复试机考快题

热门文章

  1. 什么软件画er图方便_图形图表设计器(Diagram Designer中文版)
  2. 20. DICOM图像层级分类-DCMTK-层级分类
  3. 【C语言】科学计数法——复习总结
  4. Linux vi 查找和替换字符串
  5. CHIP-Seq数据分析流程
  6. 迅雷下载宝刷入padavan固件
  7. 硅谷外卖安装axios报错
  8. 大学计算机基础发送邮件,东南大学《大学计算机基础》实验16邮件合并.pdf
  9. Python实战RBF神经网络
  10. 网上书店系统需求分析说明书