Raspberry php 没有向 arduino 发送串口数据
Raspberry php not sending serial data to arduino
我有一个 raspberry,在 /var/www 中有 2 php 页,一个是 led1off.php,另一个是 led1on.php。我在 cgi-bin led1off.py & led1on.py
中也有 2 个 Python 脚本
led1off.py
#!/usr/bin/env python
Import serial
ser0 = serial.Serial('/dev/ttyACM0'), 9600)
ser0.write('2')
led1on.py
#!/usr/bin/env python
Import serial
ser0 = serial.Serial('/dev/ttyACM0'), 9600)
ser0.write('1')
--
led1on.php
<?php
exec('sudo -u www-data python /usr/lib/cgi-bin/led1on.py')
?>
led1off.php
<?php
exec('sudo -u www-data python /usr/lib/cgi-bin/led1off.py')
?>
理论上应该发生的是当我加载 http://192.168.0.2/led1on.php
php 脚本应该 运行 它在终端中的代码,以便它执行 led1on.py。
然后 led1on.py 应该向打开 LED 的 arduino 发送“1”。
led1off.php.
也有类似的情况
问题是我可以输入
sudo -u www-data python /usr/lib/cgi-bin/led1on.py
在终端中,当我这样做时,arduino 上的 LED 亮起。所以arduino上的代码是正确的,2之间有通信,Python代码是正确的。问题是当我从浏览器加载 php 时它不起作用。难道我做错了什么?我需要给 www-data 特殊权限才能发送串口数据吗?
作为超级用户 www-data
的 运行 命令应该在 /etc/sudoers
中 - 你能检查一下它是否存在吗?
这里问了类似的问题:sudo in php exec()
正如我们在讨论中发现的那样,这段代码 运行 正确:
<?php
$command = escapeshellcmd('sudo /usr/lib/cgi-bin/led1on.py');
$output = shell_exec($command);
echo $output;
?>
希望对您有所帮助。
我有一个 raspberry,在 /var/www 中有 2 php 页,一个是 led1off.php,另一个是 led1on.php。我在 cgi-bin led1off.py & led1on.py
中也有 2 个 Python 脚本led1off.py
#!/usr/bin/env python
Import serial
ser0 = serial.Serial('/dev/ttyACM0'), 9600)
ser0.write('2')
led1on.py
#!/usr/bin/env python
Import serial
ser0 = serial.Serial('/dev/ttyACM0'), 9600)
ser0.write('1')
--
led1on.php
<?php
exec('sudo -u www-data python /usr/lib/cgi-bin/led1on.py')
?>
led1off.php
<?php
exec('sudo -u www-data python /usr/lib/cgi-bin/led1off.py')
?>
理论上应该发生的是当我加载 http://192.168.0.2/led1on.php php 脚本应该 运行 它在终端中的代码,以便它执行 led1on.py。 然后 led1on.py 应该向打开 LED 的 arduino 发送“1”。 led1off.php.
也有类似的情况问题是我可以输入
sudo -u www-data python /usr/lib/cgi-bin/led1on.py
在终端中,当我这样做时,arduino 上的 LED 亮起。所以arduino上的代码是正确的,2之间有通信,Python代码是正确的。问题是当我从浏览器加载 php 时它不起作用。难道我做错了什么?我需要给 www-data 特殊权限才能发送串口数据吗?
作为超级用户 www-data
的 运行 命令应该在 /etc/sudoers
中 - 你能检查一下它是否存在吗?
这里问了类似的问题:sudo in php exec()
正如我们在讨论中发现的那样,这段代码 运行 正确:
<?php
$command = escapeshellcmd('sudo /usr/lib/cgi-bin/led1on.py');
$output = shell_exec($command);
echo $output;
?>
希望对您有所帮助。