5

我尝试使用 PHP 访问串行端口,但运气不佳。

我试过使用fsockopen, fopen,proc_open等。我无法读取或写入套接字。

例子:

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

1 回答 1

3

我过去曾多次遇到这种情况。曾经为 Cisco 2811 创建管理界面。这可能对您有用,尽管我不确定您的 IOS 版本(假设 Cisco 因为您的fwrite();通过控制台)。

查看您的用户是否可以先访问该设备。很容易,这可以用screen /dev/ttyUSB0. 运行你的命令,分离,然后ctrl+ad

我最常将stream_*家庭用于此类事情。

这是一个例子:

$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/

于 2012-07-27T02:06:15.943 回答