我已经在 fedora 13 中安装了 xampp。我正在尝试使用 php 串行类通过串行端口与微 Controller 通信。 我的代码是 example.php
include("php_serial.class.php");
$serial = new phpSerial();
$serial->deviceSet("0");
$serial->confBaudRate(9600); //Baud rate: 9600
$serial->confParity("none"); //Parity (this is the "N" in "8-N-1")
$serial->confCharacterLength(8); //Character length (this is the "8" in "8-N-1")
$serial->confStopBits(1); //Stop bits (this is the "1" in "8-N-1")
$serial->confFlowControl("none"); //Device does not support flow control of any kind, so set it to none.
//Now we "open" the serial port so we can write to it
$serial->deviceOpen();
$serial->sendMessage("*1" ); //sleep(1); // echo "hi"; $serial->deviceClose();
?>
php 脚本得到执行但给出以下警告。
警告:第 147 行的/opt/lampp/htdocs/xampp/php_serial.class.php 中指定的串口无效 警告:无法设置波特率:设备未设置或在第 241 行的/opt/lampp/htdocs/xampp/php_serial.class.php 中打开 警告:无法设置奇偶校验:设备未设置或在第 295 行的/opt/lampp/htdocs/xampp/php_serial.class.php 中打开
...我使用了命令:chmod 0777/dev/ttyUSB0 来授予权限。我还尝试使用命令将 apache 用户“prudhvi”添加到拨出组: $ usermod -a -G 拨出 prudhvi
但它不起作用。当我使用以下命令直接从终端发送命令时:echo 1 >/dev/ttyUSB0 它起作用并且“1”被传输到串行端口。但是使用 php 我得到了上面的警告。
我已使用“$whoami”检查用户名并将该用户“prudhvi”添加到拨出组。它仍然不起作用。请帮帮我。
最佳答案
我用 Debian 做过一次,用 PHP 脚本控制 Arduino 板,最初遇到了同样的问题。
在 Debian 中,您需要将 Apache 用户添加到 dialout 组,以允许它发出串行连接请求。我认为 Fedora 也是如此。
在 Debian 中,命令是:
useradd -G dialout www-data
但是我相信 Fedora 将 Apache 用户命名为 apache。我没有要测试的 Fedora 机器,但我假设您需要运行的命令是:
useradd -G dialout apache
然后您需要重新启动您的 xampp 服务器。
引用以下内容:
http://www.cyberciti.biz/faq/howto-linux-add-user-to-group/ http://fedoraproject.org/wiki/Administration_Guide_Draft/Apache#Apache_File_Security
尼尔
关于linux中的php串口通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10373308/