接收串口数据:实时Web显示+日志记录(带下采样)

时间:2014-04-26 14:20:26

标签: php python mysql logging serial-port

我正在开展一个小项目,该项目涉及显示和记录(以便以后处理)通过某种测量设备的串行端口连接接收的数据。我正在使用Raspberry Pi来读取和存储收到的信息:这是通过一个用Python编写的小程序完成的,该程序打开串行设备,读取帧并将数据存储在MySQL数据库中(无需轮询或交互)使用设备,数据会自动发送。

串行数据被格式化为大约2.5kbits的帧,这些帧以1200波特重复发送,这意味着大约每2秒接收一个新帧。

现在,即使有用数据只是帧的一部分,这也是存储我需要的信息的太多信息,所以我目前正在做的是通过仅读取一次帧来“下采样”数据每分钟。目前,这是通过cron任务完成的,该任务每分钟调用我的日志记录脚本。

我的设置问题是,用于显示(和处理)接收数据(从MySQL数据库中提取)的PHP网页无法每分钟显示多次新数据。

这就是我的问题:

  

如何让网页显示实时数据(不需要保存),同时每分钟保持一次MySQL数据库的记录?

我想解决方案会涉及某种守护进程,它以指定的频率(每分钟一次)存储数据,同时保持最新的接收数据可用于php网页(如何?)。你怎么看?您是否有类似代码/应用程序的示例,我可以将其作为起点?

谢谢!

1 个答案:

答案 0 :(得分:0)

我不知道我是否正确理解了您的问题,但似乎您希望使用PHP脚本显示不间断的“数据流”。如果是这样的话,我担心这不会那么容易。

HTTP协议的基本思想是基于请求/响应。您的浏览器发送请求并收到(静态)响应。

您可以构建某种“流媒体”服务器,但流式传输(例如由youtube.com完成)也不过是定期发送视频文件的静态块,并且播放器会将它们重新组合成视频或音频“流”。

但是,您可以查看“网络套接字”和“长轮询”等概念。例如,您可以创建一个长时间运行的PHP脚本,该脚本每两秒读取一次certail文件并输出该值。 (请记住使用flush(),否则将缓冲输出。)

智能解决方案甚至可以每两秒输出一个JavaScript代码段,这会再次更新某种显示图表的<div>容器,而不会更新。

有这种方法实现的进度表的实现。