更具体地说,我希望从我的网络服务器(Linux / Raspberry Pi)上运行的GPSd进程中获取当前/最新输出,并显示实时lat / lon,速度和航线。
我尝试过编写一个我可以调用的CGI脚本(jquery),它可以输出gpspipe的输出并获取最新的数据,但这有点慢 - 每次调用最多5秒。
类似于调用运行的CGI脚本" top -b -n 1"每隔几秒钟,解析您要查找的数据的输出。
我认为有人会有更高效的方式。
答案 0 :(得分:0)
取决于GPS单位转换数值所需的时间(通常约为一秒左右) 您可以执行一个小程序,连续读取GPS并将值存储在共享内存或文件中,并在调用Rasp时获取这些值。所以你会得到[时间+地理位置],它可以帮助你,具体取决于你的应用程序。
如果您需要更具响应性的内容,则可以在进行GPS转换后使用long polling。这样你就可以注册多个客户端或服务来收听GPS转换网络服务。
答案 1 :(得分:0)
a Python 2.7-3.5 gpsd client可能适合您。它有一个线程适配器,用于获取数据的方式和时间。分四行:
for i in (0...-1).reverse()
然后参与三人组合,
for i in (0..<stationsByOldestArray.count).reverse()
四行代码,可让您连接,沟通和控制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.
,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
,默认值为2/10秒每次空套接字查找后小睡。
项目的其余部分位于DESCRIPTION.rst,或记录在the files themselves中。
如果您正在寻找a Python interface to gpsd's shared memory segment,也可以使用