【发布时间】:2010-07-12 08:47:17
【问题描述】:
我正在尝试将以下小型 QBASIC 程序(可 100% 运行)移植到 PHP:
OPEN "com1:2400,n,8,1,DS," FOR RANDOM AS #3
OPEN "data.dat" FOR OUTPUT AS #2
REM read 17 chars from the port
scale$ = INPUT$(17, #3)
PRINT scale$
WRITE #2, scale$
CLOSE #2
CLOSE #3
SYSTEM
目前我从 PHP(在 WAMP5 上)以编译的 (exe) 形式调用它,但我想摆脱 QBASIC 并直接从 PHP 调用它。
我写了这个 PHP 函数,但它只是挂在 fgets() 行:
function read_port($port='COM1:', $length=17, $setmode=TRUE, $simulate='') {
if ($simulate){
$buffer = '"'.strval(rand(1000, 2000));
return $buffer;
}
if ($setmode){
shell_exec('mode com1: baud=2400 parity=n data=8 stop=1 to=on xon=off odsr=on octs=on dtr=on rts=on idsr=on');
}
$fp = fopen($port, "rb+");
if (!$fp) {
file_put_contents('debug1.log','COM1: could not open'."\n",FILE_APPEND);
} else {
$buffer = fgets($fp, $length); // <-- IT JUST HANGS HERE DOING NOTHING !
fclose ($fp);
}
return $buffer;
}
我正在使用这个 PHP 行来调用上面的函数:
$res = read_port('COM1:', 17, TRUE, SIMULATE_SCALE);
我们将不胜感激任何帮助!我基本上已经放弃尝试了。如果 QBASIC 可以完美地做到这一点,那么我们必须能够使用 PHP 来实现它!
【问题讨论】:
-
这个问题有什么解决办法吗?
标签: php hardware-interface qbasic