【问题标题】:Update live output from a Web server program on a web page更新网页上 Web 服务器程序的实时输出
【发布时间】:2016-04-07 18:45:43
【问题描述】:

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

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

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

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

【问题讨论】:

  • 我认为拨打电话获取您的地理坐标几乎是即时的。你有没有发现是什么消耗了你的 5 秒?鉴于良好的网络质量,我不明白为什么您不能在一秒钟内拨打多个电话
  • gpspipe 连接到 gpsd 端口并等待数据并打印。然后我必须等待具有我需要的数据的正确句子类型,然后解析该行。也许有比使用 gpspipe 和 shell 脚本更快的方法,比如编写 python 客户端

标签: javascript jquery html gpsd


【解决方案1】:

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

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

【讨论】:

  • 我喜欢这个主意...但是怎么样:我已经运行了一个 MQTT 服务来分发传感器数据。我可以编写一个 gps 客户端 (Python),将 gps 数据发布到 MQTT 主题,然后使用我的 javascript MQTT 客户端来监听更新。我已经在我的网页上显示来自 MQTT 的传感器数据,所以这将是一个简单的添加,使用我目前的技术。
【解决方案2】:

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

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,或记录在the files themselves

如果您正在寻找a Python interface to gpsd's shared memory segment,也可以使用它

【讨论】:

  • 谢谢!这可能是一个更好的解决方案。现在我只是在读取串口并获取原始 GPS 语句。
猜你喜欢
  • 2020-09-05
  • 1970-01-01
  • 1970-01-01
  • 2014-04-03
  • 1970-01-01
  • 2011-08-28
  • 2011-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多