- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在开发一个硬件项目,该项目(当前)使用 Beaglebone Black(最终将使用定制硬件),并尝试在其 Web 服务器上设置一个网页,以循环方式返回所有四个 LED 的实时状态。我希望这个网页能够被多人同时访问。
我已经让网页实时更新 LED 的值,但问题是,如果网页的两个实例打开,它们就会开始表现得很奇怪,最终崩溃。
网页使用 jquery 计时器,每 10 毫秒执行一次。
<script>
var Timer=setInterval(function(){GetLed()}, 10);
function GetLed()
{
$("#div1").load("getled3.php");
}
</script>
getled3.php使用php执行4个linux命令(但随着我们扩展网页的能力,这些最终可能是C++程序),并打印结果:
<?php
exec("cat /sys/class/leds/beaglebone:green:usr0/brightness", $Led0);
exec("cat /sys/class/leds/beaglebone:green:usr1/brightness", $Led1);
exec("cat /sys/class/leds/beaglebone:green:usr2/brightness", $Led2);
exec("cat /sys/class/leds/beaglebone:green:usr3/brightness", $Led3);
print($Led0[0] . ", " . $Led1[0] . ", " . $Led2[0] . ", " . $Led3[0]);
?>
我愿意自己研究如何创建一个能够与多个用户良好配合的 Web 应用程序,但到目前为止,我的搜索还没有找到任何有用的结果,这可能只是我的措辞。
如果有人可以发布一些链接,为我指明创建控制硬件的 Web 应用程序的正确方向,那将是最有帮助的,因为最终的实现将非常复杂,并且可能包括循环运行“主”应用程序的硬件,而网页为用户提供了更改硬件设置的能力。
我想我们正在做的事情的最好例子就是动态路由器设置页面。
提前致谢。在此期间我将继续寻找。
<小时/>编辑:(包含对评论的回复)
我想看看是否有一个标准方法可以做到这一点,或者至少是一个最佳实践。最终产品最终将允许用户更改硬件上的设置、强制硬件向其他硬件发送信息、读取有关该硬件和连接到 beaglebone black 的其他硬件的信息。它最终会变得相当广泛,所以我真正需要的是一种资源(也许是一本书),我可以在其中阅读有关此类事情通常是如何完成的。
整个系统最终将包含 PWM、GPIO、ADC 等。
至于访问 LED 的方法,我知道“exec cat”并不是获取该信息的最佳方法。
此后我更改了整个设置,现在,当 beaglebone black 启动时,它会加载一个循环运行的 C++ 程序,并写入包含硬件信息的文件。
然后,最初运行“exec cat”的网页调用现在只是将程序的输出文件加载到浏览器中。这解决了崩溃问题,但感觉不是完成该项目的正确方法,因为其中会有大量包含有关 ADC 值、PWM 值等信息的文件。为了进一步复杂化,文件访问实际上需要一个互斥体来防止 C++ 程序在 Web 程序读取文件时写入文件,并且需要一个互斥体来防止 Web 程序在 C++ 程序当前正在写入文件时读取文件。这将使每个进程产生 3 个文件。
最佳答案
一种方法是构建一个 shell 脚本,用 LED 状态设置局部变量。然后你把这个脚本作为一个 cron 作业(每 10 毫秒启动一次或任何你想要的)。
之后只需要获取局部变量的值即可。
关于php - 通过多用户网页重复执行linux程序而不崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25810421/
我是一名优秀的程序员,十分优秀!