macos — PHP + последовательный порт + GSM модем

Мне нужно получить ответ от 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;

Результат первой строки: Порт открыт! Это означает, что я подключен к конвертеру 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

Решение

Использование:

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

echo $output;
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]