PHP +串口+ GSM调制解调器

时间:2015-09-03 07:25:31

标签: php macos serial-port gsm modem

我需要从GSM调制解调器得到响应。是否可以使用Mac OS X?我的意思是有可能得到答案并将其保存到变量吗?

第一个问题

我知道 php_serial.class.php ,但这个类支持Linux和Windows。 Mac OS X有Darwin核心,所以它不起作用。此外,Linux和Mac OS X之间的一些命令是不同的。例如,当Linux使用 stty -F / dev /时,OS X使用' cu -l / 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;

第一行结果是:端口已打开!表示我已连接到USB-COM转换器。第二行是 1 而不是确定

然后我尝试了 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

真的很感激任何帮助!

1 个答案:

答案 0 :(得分:0)

使用:

exec("cu -l /dev/cu.usbserial-xxxxxx; AT\r\n", $output);

echo $output;