0

更具体地说,我想从我的网络服务器(Linux/Raspberry Pi)上运行的 GPSd 进程获取当前/最新输出,并显示实时纬度/经度、速度和路线。

我尝试编写一个我可以调用的 CGI 脚本(jquery),它跟踪 gpspipe 的输出并获取最新数据,但这有点慢 - 每次调用最多 5 秒。

有点类似于调用一个每隔几秒运行一次“top -b -n 1”并解析输出以查找您要查找的数据的 CGI 脚本。

我认为有人会有更有效的方法。

4

2 回答 2

0

有一个适合您的 Python 2.7-3.5 gpsd 客户端。它有一个线程适配器,您可以使用它来获取数据的方式和时间。分四行:

from agps3threaded import AGPS3mechanism

然后接合线程三驾马车,

agps_thread = AGPS3mechanism()  # This instantiate the mechanism, as I believe it's called.
agps_thread.stream_data()    #  Stream the data from host, port, devicepath.
agps_thread.run_thread()  #  Iterate stream as a thread with throttle control for empty look ups.

四行代码可让您连接、通信和控制您期望 gpsd 执行的大部分操作。

while True:  # All data is available via instantiated thread data_stream attributes. Confur
             # lines #140-ff of the client /usr/local/lib/python3.5/dist-packages/gps3/agps.py
      print('----------------')
      print(                   agps_thread.data_stream.time)
      print('Lat:{}   '.format(agps_thread.data_stream.lat))
      print('Lon:{}   '.format(agps_thread.data_stream.lon))
      print('Speed:{} '.format(agps_thread.data_stream.speed))
      print('Course:{}'.format(agps_thread.data_stream.track))
      print('----------------')
      sleep(60)  # Sleep, or do other things for as long as you like.

在括号之间没有参数的情况下,线程客户端默认为host='127.0.01'port=2947gpsd_protocol='json'usnap=0.2,在每次空套接字查找后,默认值是 2/10 秒微睡。项目的其余部分在DESCRIPTION.rst中,或记录在文件本身中。

如果您正在寻找gpsd 的共享内存段的 Python 接口,也可以使用

于 2016-04-08T01:15:16.387 回答
0

根据 GPS 单元转换值所需的时间(通常大约一秒左右),您可以编写一个小程序,连续读取 GPS 并将值存储在共享内存或文件中,并在调用 Rasp 时获取这些值。所以你会得到[时间+地理位置],它可能会根据你的应用程序有所帮​​助。

如果您想要更灵敏的东西,您可以在 GPS 转换完成后使用长轮询。这样您就可以注册多个客户端或服务来收听 GPS 转换网络服务。

于 2016-04-07T19:01:35.453 回答