从Windows到Linux的PHP USB串口调用

时间:2015-09-05 01:26:42

标签: php linux windows serial-port

我有一段简单的代码适用于Windows-WAMP环境,例如

<?php

`mode com3: BAUD=38400 PARITY=N data=8 stop=1 xon=off`;

file_put_contents(com3, chr(1).chr(255).chr(1).chr(4).chr(64).chr(5));

?>

它通过USB电缆(使用USB串行驱动程序)连接到电路板以点亮某些LED,并且工作正常 - 所以类似于232Analyser的Windows软件可以连接到COM3并在DEC中发送代码,如1,255,255,255,255, 5,点亮LED。数字255是DEC编号:1,2,4,8,16,32,64,128,255,它将根据调用的数字点亮某个LED。

无论如何,上面的代码在Windows上工作正常,并通过调用此PHP文件点亮LED。因此,可以调用类似:http://localhost/lightled.php的URL,这样可以正常工作。

现在我需要它通过Linux在Raspberry Pi上工作,所以我刚刚安装了标准的Raspberry Linux和Apache的PHP。

然后连接USB线,它显示为/ dev / ttyUSB0我有CHMOD 777 / dev / ttyUSB0

并将PHP代码更改为:

<?php

`mode /dev/ttyUSB0: BAUD=38400 PARITY=N data=8 stop=1 xon=off`;

file_put_contents('/dev/ttyUSB0', chr(1).chr(255).chr(1).chr(4).chr(64).chr(5));

?>

然而,在浏览器中在Linux上调用此文件并不像在Windows上那样点亮LED。

现在,当我调用此文件时,它没有错误,没有chmod 777,它给出了一个权限被拒绝错误。所以看起来它确实没问题,但其他的东西是错的。

所以问题是任何人都知道如何让它在Linux上运行,可能是我在调用USB错误,或者Raspberry Linux需要某种驱动程序,或者#34; `模式&#34;需要以不同的方式定义...或者发送的十进制/二进制代码可能不像&#34; chr(2)&#34;等等需要不同,不能在LAMP设置上以相同的方式发送。

关于我可以尝试的任何想法?

感谢。

1 个答案:

答案 0 :(得分:1)

`mode /dev/ttyUSB0: BAUD=38400 PARITY=N data=8 stop=1 xon=off`;

Linux中没有mode命令。

最接近的等价物是stty,但它没有采用相同的命令行参数。你需要进行一些翻译;有关详细信息,请阅读stty的手册页。