【问题标题】:PHP + Serial port + GSM ModemPHP + 串口 + GSM 调制解调器
【发布时间】: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


    【解决方案1】:

    用途:

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

    【讨论】:

    • 您好,感谢您的回复。但还是一无所获。我认为这是因为 cu -l 应该使用 sudo。据我所知,在 php 中使用 sudo 和 shell_exec 没有安全的方法。
    • 我想你需要的可能就在这里stackoverflow.com/questions/3173201/sudo-in-php-exec
    猜你喜欢
    • 2012-12-25
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    相关资源
    最近更新 更多