Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 接收串口数据:实时网络显示+;记录(带下采样)_Php_Python_Mysql_Logging_Serial Port - Fatal编程技术网

Php 接收串口数据:实时网络显示+;记录(带下采样)

Php 接收串口数据:实时网络显示+;记录(带下采样),php,python,mysql,logging,serial-port,Php,Python,Mysql,Logging,Serial Port,我正在从事一个小项目,该项目涉及显示和记录(用于后续处理)通过串口连接从某种测量设备接收的数据。我正在使用Raspberry Pi读取和存储接收到的信息:这是通过一个用Python编写的小程序完成的,该程序打开串行设备,读取帧并将数据存储在MySQL数据库中(无需轮询或与设备交互,数据会自动发送) 串行数据被格式化为大约2.5千比特长的帧,以1200波特的速度重复发送,这意味着大约每2秒接收一个新帧 现在,尽管有用的数据只是帧的一部分,但对于我所需要的信息来说,这太多了,所以我现在做的是通过每分

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

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

现在,尽管有用的数据只是帧的一部分,但对于我所需要的信息来说,这太多了,所以我现在做的是通过每分钟只读取一次帧来“下采样”数据。目前,这是通过cron任务完成的,它每分钟调用一次我的日志脚本

我的设置的问题是,用于显示(和处理)接收到的数据(从MySQL数据库中提取)的PHP网页不能每分钟显示一次以上的新数据

因此,我的问题来了:

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

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


谢谢

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

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

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

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

一个智能的解决方案甚至可以每两秒钟输出一个JavaScript代码片段,这将再次更新某种显示图表的容器

例如,有使用这种方法实现的进度表的示例实现