PHP USB 串口调用从 Windows 到 Linux
PHP USB serial port call from Windows to Linux
我有一段在 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,并且工作正常 - 所以类似 windows 像 232Analyser 这样的软件,可以连接到 COM3 并发送DEC 中的代码,例如 1,255,255,255,255,5,然后点亮 LED。数字 255 是一个 DEC 数字,来自:1,2,4,8,16,32,64,128,255,它会根据调用的数字点亮特定的 LED。
无论如何,上面的代码在 Windows 上运行良好,并通过调用此 PHP 文件点亮 LED。所以可以像这样调用 URL:http://localhost/lightled.php 可以正常工作。
现在我需要它通过 Linux 在 Raspberry Pi 上工作,所以我刚刚安装了标准的 Raspberry Linux 和带有 PHP 的 Apache。
然后接上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 需要某种驱动程序,或者“`mode”需要不同的定义...或者发送的 decimal/binary 代码可能不正确,例如 "chr(2)" 等需要不同,并且不会在 LAMP 设置中以相同的方式发送。
有什么我可以尝试的想法吗?
谢谢。
`mode /dev/ttyUSB0: BAUD=38400 PARITY=N data=8 stop=1 xon=off`;
Linux中没有mode
命令。
最接近的等效项是 stty
,但它不采用相同的命令行参数。您将需要进行一些翻译;有关详细信息,请阅读 stty
的手册页。
我有一段在 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,并且工作正常 - 所以类似 windows 像 232Analyser 这样的软件,可以连接到 COM3 并发送DEC 中的代码,例如 1,255,255,255,255,5,然后点亮 LED。数字 255 是一个 DEC 数字,来自:1,2,4,8,16,32,64,128,255,它会根据调用的数字点亮特定的 LED。
无论如何,上面的代码在 Windows 上运行良好,并通过调用此 PHP 文件点亮 LED。所以可以像这样调用 URL:http://localhost/lightled.php 可以正常工作。
现在我需要它通过 Linux 在 Raspberry Pi 上工作,所以我刚刚安装了标准的 Raspberry Linux 和带有 PHP 的 Apache。
然后接上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 需要某种驱动程序,或者“`mode”需要不同的定义...或者发送的 decimal/binary 代码可能不正确,例如 "chr(2)" 等需要不同,并且不会在 LAMP 设置中以相同的方式发送。
有什么我可以尝试的想法吗?
谢谢。
`mode /dev/ttyUSB0: BAUD=38400 PARITY=N data=8 stop=1 xon=off`;
Linux中没有mode
命令。
最接近的等效项是 stty
,但它不采用相同的命令行参数。您将需要进行一些翻译;有关详细信息,请阅读 stty
的手册页。