$f = fopen ("COM6", "w+"); fputs($f, "ATDХХХХХХХХХ\r"); while ($s = fgets($f,5)) echo "[".$s."]"; fclose($f); Пытаюсь наладить работу с GSM модемом. Номер набирает, но ничего не отвечает ни на какие ATкоманды, нет обратной связи. Подскажите, как это исправить. ОС - Windows7 Модем - встроенный в телефон Nokia 2690
пробую, ответ - пустой. т.е. в ответ на $f = fopen ("COM6", "w+"); fputs($f, "AT\n"); echo "AT"; while (!feof ($f)) { $s = fgets($f,1); echo $s."[".ord($s)."]"; } fclose($f); получается AT[0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0]...[0]
ну вроде. в мануале fopen так написано. У меня получилось т.о. открыть "файл" и заставить модем набрать номер телефона. Т.е. работает. я не знаю точно, как правильно
можно поискать php com в интернетах. советы сводятся к двум видам: работать через файл и через расширение пхп (они в основном платные). работа через файл реализована в скрипте, который на достаточно высоких позициях в выдаче и что самое интересное - этот скрипт работает. только автор скрипта обращает внимание на то, что под виндовс удаётся только открыть и писать в ком-порт, читать не удаётся. под линуксом получается полноценная работа. ну и как один из хаков данной проблемы - поставить виртуалку с линуксом и из под неё запускать скрипт для работы с ком-портом - так всё работает.
Я не пробовал, но в теории может сработать - открыть COM на запись, записать, ЗАКРЫТЬ, открыть на чтение и прочитать
так нельзя Для "правильной" работы юзайте библиотеку phpSerial.php примерно вот так: PHP: <?php $serial = new phpSerial; $serial->deviceSet("/dev/ttyS0"); $serial->confBaudRate(115200); $serial->confCharacterLength(8); $serial->confParity("none"); $serial->confStopBits(2); $serial->confFlowControl("none"); $serial->deviceOpen(); $serial->sendMessage(chr(27)); $serial->sendMessage("AT+CMGF=1\r"); $read = $serial->readPort();