通过PHP访问串口

5

我尝试使用 PHP 访问串口,但运气不太好。

我已经尝试过 fsockopenfopenproc_open 等方法,但我无法读取或写入套接字。

示例:

$fp = fopen("/dev/ttyUSB0", "w+");
fwrite("enable");
echo fread($fp, 1024);

1
执行脚本的用户是否对该设备具有写入权限?ls -l /dev/ttyUSB0 - Michael Berkowski
如果您安装了UUCP软件包,那么cu /dev/ttyUSB0或者tip /dev/ttyUSB0是否能够正常工作?(如果您无法轻松访问UUCP,则screen也可以执行串行操作...) - sarnold
1
我从未在PHP中访问过串口,但是你不应该设置波特率、奇偶校验、停止位等吗? - hackattack
1个回答

4
我曾多次遇到这种情况。其中一次是为Cisco 2811创建管理界面。尽管我不确定您的IOS版本(假设使用Cisco,因为您通过控制台使用了),但这可能适用于您的设备。
首先检查您的用户是否有访问该设备的权限。可以轻松地使用来完成此操作。运行命令后,按然后< d>即可分离。
我最常使用系列来完成类似任务。
以下是一个示例:
$stream = stream_socket_client("udg:///dev/ttyUSB0", $errno, $errstr, 30);
fwrite($stream, "enable");

while(true){
    $line = stream_get_contents( $stream );
    if($line == 'exit'){
        break;
    }
}

默认情况下,stream_socket_client以阻塞模式启动,因此您无需手动切换模式。

如果您不介意安装扩展程序,则可以使用DirectIO扩展程序。它具有允许您设置波特率等功能,此处是示例

您甚至可以查看这个项目:http://code.google.com/p/php-serial/source/browse/trunk/


我将采用DirectIO这条路线。谢谢! - user1457656

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接