Мне нужно получить ответ от GSM-модема. Возможно ли это с Mac OS X? Я имею в виду, можно ли получить ответ и сохранить его в переменной?PHP + Последовательный порт + GSM-модем
Первая проблема
Я знаю о 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. А вторая строка - вместо 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
Действительно был бы оценен за любую помощь!
Здравствуйте и спасибо за ваш ответ. Но все равно ничего. Я думаю, это потому, что ** cu -l ** следует делать с ** sudo **. Насколько я знаю, нет надежного способа использования ** sudo ** с shell_exec в php. – JEYCDEE
Я думаю, что вам может понадобиться http://stackoverflow.com/questions/3173201/sudo-in-php-exec – Jackie