通过php访问串行端口


Access serial port via php

我试着用PHP访问串行端口,但运气不太好。

我尝试过使用fsockopenfopenproc_open等。我无法读取或写入套接字。

示例:

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

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

查看您的用户是否可以首先访问该设备。很容易,这可以通过screen /dev/ttyUSB0来完成。运行命令,要分离,请按ctrl+a,然后按d

我最常用的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/