树莓派PHP GPIO阅读(Raspberry Pi PHP GPIO read)

2019-10-20 15:03发布

我有这个脚本来检查的GPIO引脚的状态:

<script type="text/javascript">

    $(document).ready(function () {
        // This is the init function
        // Runs when the page has completed loading

        $('#statusCheck').click(function() {
            //console.log('checking status');

            $.ajax({
                url: "check.php",
                success: function (data) {
                    if(data != 1 )
                    {
                      // Door is closed
                      $('#sttext').html('<span style= color:green;>Closed</span>');
                    }
                    else if(data == 1)
                    {
                      // Door is open
                      $('#sttext').html('<span style= color:green;>Open</span>Open');
                    }
                    //$('#debug').html(''); // Print null string to clear message
                    //$('#debug').html(data); // Debug message, printing out read back status.
                }

            });
        });
    });
</script>

连接到一个按钮,跨度:

   <strong>Status: <span id="sttext"></span></strong></p>
   <button id="statusCheck" class="green-btn">Check Status </button>

检查PHP代码为:

<?php
    system(exec ( "GPIO read 1", $status ));
    system(print_r ( $status ));
?>

我一直outputing关闭,但引脚设置为1 ...当我从运行在树莓派的命令行它给了我1读....但是PHP脚本,我认为是不工作...

Answer 1:

我认为这个问题是与你的PHP脚本。 试试这个:

<?php
    exec("gpio read 1", $status);
    print_r($status); //or var_dump($status);
?>


Answer 2:

最有可能是因为网络服务器的用户( www-datahttpdapache左右)也许是允许执行gpio ,但不允许读取状态/sys/class/gpio

dan@nsa / $ cat /sys/class/gpio/
cat: /sys/class/gpio/: Permission denied

我承认这是PHP的许多不同的命令混淆在shell上下文中执行。 最好的办法是我猜:

echo system('gpio ...');

您应该使用完整路径gpio (如/ usr / bin中/ GPIO),找出它是你可以使用locate gpio (它需要updatedb ,但我不知道)。



Answer 3:

本来我一定是搞错了......

由于采用这样的PHP脚本:

 <?php
     system ("gpio read 1");
 ?>

它的解析单0/1值的JavaScript代码,然后运行if / else ,这是工作。 此外,我改变了中继/导线欺骗连接于树莓Pi的GPIO的方式,改变到3.3 V输出到GPIO。 我认为GPIO来理由是不正确的做法?



Answer 4:

有了这个代码就可以读取GPIO15一个按钮的状态,当在网页中点击一个按钮。

在GPIO26 LED开/关当推/不推按钮, 然后单击按钮的网页。

  • 在按钮和GPIO15 3,3V

  • 图书馆WiringPi


<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Juan A. Villalpando - KIO4.COM</title>
</head>
       <body>
       <center><h1>Consulta el estado de un Botón mediante página web</h1>
       <a href="http://kio4.com/raspberry/19_servidor_web.htm">kio4.com/raspberry</a><br><br>
         <form method="get" action="<?php print($_SERVER['PHP_SELF']); ?>">
            <input type="submit" style = "font-size: 16 pt" value="Consulta">
         </form>​​​</center>
<?php
    shell_exec("/usr/local/bin/gpio -g mode 26 out");
    shell_exec("/usr/local/bin/gpio -g mode 15 in");
    shell_exec("/usr/local/bin/gpio -g mode 15 down");
    $boton = shell_exec("/usr/local/bin/gpio -g read 15");
    $boton = trim($boton);
    echo $boton;
    echo "<br>";
    if($boton == "1")
        {
            echo "Pulsado";
            shell_exec("/usr/local/bin/gpio -g write 26 1");
        }
   else 
        {
            echo "No Pulsado";
            shell_exec("/usr/local/bin/gpio -g write 26 0");
        }
?>
   </body>
</html>


文章来源: Raspberry Pi PHP GPIO read