我正在尝试用 PHP 连接称重机。
我已经用超级终端测试过它工作正常。
但是当我使用 PHP 代码时fopen
or dio_open
它被执行但是当fgets
or dio_read
被调用时,它挂起并且不显示任何内容。
Fopen 示例
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
,这个文件我也需要吗?
PHP无法在Windows下读取串口。在 Linux 系统上情况并非如此,在 Linux 系统上使用常见的 PHP 文件系统函数从 COM 端口读取数据没有问题。
这些文件系统功能也是执行以下操作的首选方法DIO扩展 http://pecl.php.net/package/dio:
DIO 功能的使用应该
仅当需要直接控制设备时才考虑。
在所有其他情况下,标准文件系统函数是
绰绰有余。
当您将 DIO 示例报告为“不工作”时,您需要跟踪错误。看:
- 如何在 PHP 中获取有用的错误消息? https://stackoverflow.com/q/845021/367456
接下来,您需要首先找到一个可用的 POSIX 示例,因为 DIO 不是超级终端,而是 POSIX 风格。
或者,存在一些软件可以通过网络代理 COM 端口(例如 GPL'edserproxy http://freecode.com/projects/serproxy)。这可能会解决您与操作系统的集成问题,但是我很确定您不走运。
与之比较:
-
如何像 QBasic 程序一样在 PHP 中读取 RS232 串口 https://stackoverflow.com/q/3226979/367456(2010 年 7 月)
-
在 PHP 中读取 COM(串行调制解调器) https://stackoverflow.com/q/6370176/367456(2011 年 6 月)
-
授予 PHP 访问 COM 端口的权限 https://stackoverflow.com/q/9227219/367456(2012 年 2 月)- 仅限写作
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)