Мне нужно получить ответ от 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
Действительно был бы признателен за любую помощь!
Использование:
exec("cu -l /dev/cu.usbserial-xxxxxx; AT\r\n", $output);
echo $output;
Других решений пока нет …