2017-08-29 7 views
0

私はストロボのようにRaspberry piリレーをオン/オフにしようとしていますが、whileループを停止してページがロードされ、しかし、私はそれを止めることはできません。唯一の方法は、Webサービス全体を停止することです。ここでget = stopまでPHPがループを継続して実行します

私のコードです:

<?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) { 
 
\t \t $output = shell_exec('gpio write 1 0'); \t 
 
\t \t sleep(0.1); 
 
\t \t $output = shell_exec('gpio write 1 1'); \t 
 
\t \t break; 
 
\t 
 
\t 
 

 

 
\t \t } 
 
} 
 
?>

+1

まあ、それを停止する条件を与える必要があります。あなたは何をしたいですか? Xが点滅したら? X秒後に?後...? – ishegg

+0

私はstop = stopをそのphpページに送信すると停止する必要があります。私はモバイルアプリを介してそのURLに投稿しています、私は、Said Stop varがページに送信されるまで、 – SARUAV

答えて

0

あなたの休憩。ステートメントはwhileループを停止せず、ループから壊れただけでwhile条件を再度チェックします。

私は、また、単に個人的な勧告をそれに条件を与えるのではなく1

while (led == 'on') 
{ 
    //Your code 

    if (when you want it to stop) 
    { 
     led = 'off'; 
    } 

} 

お勧めします。コードは常に実行されるため、ページは停止しません。あなたができることは、ledを制御するファイルを実行することです。このようにして、あなたのページは走りを止めることができ、ウェブサイトではなく、π上のプログラムを介して、代わりに走ることができます。したがって、コードは "start"または "stop"変数を検出し、設定されていれば "start_led"プログラムを実行します。

これを行う場合は、ledを制御しているプロセスを終了してから別のプロセスを開始するようにしてください。あなたの "start_led"プログラムでは、ps -aux | grep "start_led"を実行し、killコマンドを使用してそのプログラムの実行を停止します。

関連する問題