PHP与DIO的COM端口连接

我想连接权重机器与PHP。

我已经testing超级terminal它工作正常。

但是当我用fopendio_open使用PHP代码时,它会被执行,但是当fgetsdio_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); } 

DIO示例

 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示例报告为“无法使用”时,您需要跟踪错误。 看到:

  • 如何在PHP中获取有用的错误消息?

除此之外,您首先需要找到一个可用的POSIX示例,因为DIO不是超级终端,而是POSIX样式。

或者,某些软件可以通过网络代理COM端口(例如GPL的serproxy )。 这可能会解决您的操作系统集成问题,但是我相当确定你运气不好。

与之比较:

  • 如何在PHP中读取RS232串行端口,如此QBasic程序 (2010年7月)
  • 用PHP读取COM(串行调制解调器) (2011年6月)
  • 授予PHP访问COM端口的权限 (2012年2月) – 只写