更具体地说,我想从我的网络服务器(Linux/Raspberry Pi)上运行的 GPSd 进程获取当前/最新输出,并显示实时纬度/经度、速度和路线。
我尝试编写一个我可以调用的 CGI 脚本(jquery),它跟踪 gpspipe 的输出并获取最新数据,但这有点慢 - 每次调用最多 5 秒。
有点类似于调用一个每隔几秒运行一次“top -b -n 1”并解析输出以查找您要查找的数据的 CGI 脚本。
我认为有人会有更有效的方法。
更具体地说,我想从我的网络服务器(Linux/Raspberry Pi)上运行的 GPSd 进程获取当前/最新输出,并显示实时纬度/经度、速度和路线。
我尝试编写一个我可以调用的 CGI 脚本(jquery),它跟踪 gpspipe 的输出并获取最新数据,但这有点慢 - 每次调用最多 5 秒。
有点类似于调用一个每隔几秒运行一次“top -b -n 1”并解析输出以查找您要查找的数据的 CGI 脚本。
我认为有人会有更有效的方法。
有一个适合您的 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=2947
、gpsd_protocol='json'
和usnap=0.2
,在每次空套接字查找后,默认值是 2/10 秒微睡。项目的其余部分在DESCRIPTION.rst中,或记录在文件本身中。
如果您正在寻找gpsd 的共享内存段的 Python 接口,也可以使用
根据 GPS 单元转换值所需的时间(通常大约一秒左右),您可以编写一个小程序,连续读取 GPS 并将值存储在共享内存或文件中,并在调用 Rasp 时获取这些值。所以你会得到[时间+地理位置],它可能会根据你的应用程序有所帮助。
如果您想要更灵敏的东西,您可以在 GPS 转换完成后使用长轮询。这样您就可以注册多个客户端或服务来收听 GPS 转换网络服务。