我想连接权重机器与PHP。
我已经testing超级terminal它工作正常。
但是当我用fopen
或dio_open
使用PHP代码时,它会被执行,但是当fgets
或dio_read
被调用时,它会挂起并且不显示任何内容。
exec('mode com2: BAUD=2400 PARITY=N data=8 stop=1 xon=on'); $fp = fopen("COM2:", "r"); if (!$fp) { echo "Uh-oh. Port not opened."; } else { echo fgets($fp); fclose($fp); }
exec('mode COM2: baud=2400 data=8 stop=1 parity=n xon=off to=on'); $fd = dio_open('COM2:', O_RDONLY | O_NONBLOCK, 0644); echo dio_read($fd, 256);
我无法用我的两种方法来收集任何有用的输出。
我需要inpout32.dll
文件来连接吗?
什么是php_iol.dll
作用,我也需要这个文件?
在Windows下,PHP无法从串口读取数据。 在Linux系统上这种情况并非如此,在这种情况下,使用常见的PHP文件系统功能从COM端口读取没有任何问题。
这些文件系统功能也是DIO扩展的首选方法:
只有在需要直接控制设备时才应考虑使用DIO功能。 在所有其他情况下,标准的文件系统功能已经足够了。
当您将DIO示例报告为“无法使用”时,您需要跟踪错误。 看到:
除此之外,您首先需要找到一个可用的POSIX示例,因为DIO不是超级终端,而是POSIX样式。
或者,某些软件可以通过网络代理COM端口(例如GPL的serproxy )。 这可能会解决您的操作系统集成问题,但是我相当确定你运气不好。
与之比较: