我正试图像一个频闪一样打开/关闭Raspberry pi继电器,但我似乎无法停止while循环,页面加载,继电器开始脉冲,但我无法阻止它。唯一的办法就是停止整个网络服务。
这是我的代码:
<?php
if($_GET['type'] == 'switch') {
$output = shell_exec('gpio mode '.$_GET['pin'].' out');
$output = shell_exec('gpio write '.$_GET['pin'].' '.$_GET['status']);
}
if($_GET['type'] == 'blink') {
while(1) {
$output = shell_exec('gpio write 1 0');
sleep(0.1);
$output = shell_exec('gpio write 1 1');
break;
}
}
?>
答案 0 :(得分:0)
你的休息;语句不会停止while循环,它只会从循环中断,然后再次检查while条件。
我建议给它一个条件而不是1。
while (led == 'on')
{
//Your code
if (when you want it to stop)
{
led = 'off';
}
}
另外,只是个人推荐。您的页面永远不会停止,因为代码将始终运行。你可以做的是运行一个控制led的文件。通过这种方式,您的页面可以停止运行,并且通过pi而非网站上的程序可以运行led。因此,您的代码将检测&#34; start&#34;或者&#34;停止&#34;变量,如果设置了,那么它将运行&#34; start_led&#34;程序
如果这样做,请确保在启动另一个进程之前终止控制该进程的进程。在你的&#34; start_led&#34;程序,你可以只是ps -aux | grep&#34; start_led&#34;然后使用kill命令阻止该程序运行。