【发布时间】:2015-11-28 22:04:21
【问题描述】:
我需要得到 GSM 调制解调器的响应。 Mac OS X 可以吗?我的意思是是否有可能得到答案并将其保存到变量中?
第一个问题
我知道php_serial.class.php,但是这个类支持Linux和Windows。 Mac OS X 有 Darwin 核心,所以它不起作用。此外,Linux 和 Mac OS X 之间的一些命令是不同的。例如 OS X 使用 'cu -l /dev/... 而 Linux 使用 stty -F /dev/.. . 访问设备。
第二个问题
这可能不是问题,但是,我没有使用 COM 端口,而是使用 USB-COM 转换器。这就是我通过 /dev/cu.usbserial-xxxxxx 访问的原因,其中 xxxxxx 是设备的序列号。
我尝试了什么
$gsmModem = fopen('/dev/cu.usbserial-xxxxxx', 'r+');
if ($gsmModem) echo 'Port opend!<br/>'; else echo 'Error opening port';
fwrite($gsmModem, "AT\r\n");
$response = fclose($gsmModem);
echo $response;
第一行结果是:Port opens! 这意味着我已连接到我的 USB-COM 转换器。第二行是 1 而不是 OK。
然后我尝试了 shell_exec() 命令,但由于管理权限不足(我的猜测),仍然一无所获:
$gsmModem = shell_exec("cu -l /dev/cu.usbserial-xxxxxx; AT\r\n");
echo $gsmModem;
我可以做的一件好事是使用 terminal.app,我可以在其中与 gsm 调制解调器交谈并获得每个标准命令的答案,但这并没有真正帮助我,因为我需要响应从调制解调器获取一些数据并使用它。例如:
$ sudo cu -l /dev/cu.usbserial-xxxxxx
$ Password:
$ Connected.
AT
OK
AT+CSQ
+CSQ: 25,0
非常感谢您的帮助!
【问题讨论】:
标签: php macos serial-port gsm modem