Главная страница


ru.unix.bsd

 
 - RU.UNIX.BSD ------------------------------------------------------------------
 From : Valentin Nechayev                    2:5020/400     09 Mar 2005  00:15:35
 To : Dmitry Vinogradov
 Subject : Re: послать команду модему..
 -------------------------------------------------------------------------------- 
 
 
 >>> Dmitry Vinogradov wrote: 
 
  DV>>>    Подскажите как послать команду модему. Привычное перенаправление
  DV>>> # echo atz > /dev/cuaa1
  DV>>>    не работает.. Hи чего похожего я не нашел. По
  VN>> А ответ кто будет слушать?
  VN>> Прежде чем общаться с модемом надо
  VN>> 1) настроить порт
 DV>    А где, если не секрет? Всю жизнь настраивал только в программах (ppp,
 DV> mgetty) и ни разу не видел настройку COM-порта
 DV> отдельно. В ядре тоже нету. Погулил -- нашел только настройки програм.
 
 Hа чём собрался общение с портом писать?
 
  VN>> 2) понять, что ты будешь делать с ответом
 DV>    Мм.. Ответ не приходит. В Windows я не задумывался что его надо
 DV> обрабатывать и тут пошел по этому принципу. Попробовал сделать через cat
 DV> (создал файл с командой и пустой строкой под ней): #cat init > /dev/cuaa1 
 DV> Конструкция заработала, но.. Срабатывает один раз (приходиться перезагружать
 DV> модем) и с n-цатьсекундной задержкой.
 DV> Как я понимаю, модем не знает куда кидать свой вывод?
 
 Хуже. Поскольку при закрытии порта DTR падает вниз, модем засыпает.
 
  DV>>> # cu -l/dev/cuaa1 -s57600
  DV>>>   модем адекватно реагирует на команды.
  VN>> Это просто замечательно!;) А теперь помедитируйте над фактом, что
  VN>> 1) cu - программа двустороннего обмена, то есть она и передаёт, и
  VN>> принимает (ну сказали Вы atz, и что? А ответ кто будет слушать?) 2)
  VN>> она выполняет инициализацию порта 3) она выполняет инициализацию
  VN>> нужных настроек текущего терминала (поэтому нажимая <Enter> Вы
  VN>> передаёте модему ожидаемый им CR, а не LF, который передаст команда
  VN>> echo atz)
 DV>     Т.е., подводя итог, я не могу вот так банально кидать в модем команды и 
 DV> мне нужно для этого дополнительное ПО?
 
 Можно общаться даже в шелле, но вначале настроить порт и всё равно будут
 дикие извраты.
 Где-то так:
 
 DEVICE=/dev/cuaa0
 INITDEVICE=/dev/cuaia0
 
 ## подготовить порт к открытию. Для шелла нужен CLOCAL, иначе он не сможет
 ## открыть порт
 stty -f $INITDEVICE clocal -crtscts
 
 ## Открыть порт
 exec 3<>$DEVICE
 
 ## Передать ATZ
 printf "ATZ\r" 1>&3
 
 ## Прочитать ответ. Тут надо учесть что обычный ответ на команду -
 ## \r\nOK\r\n, поэтому делаем в два чтения
 
 read DUMMY 0<&3
 read REPLY 0<&3
 
 REPLY=`echo -n "$REPLY" | tr -d '\r'`
 
 if [ "$REPLY" != "OK" ]; then echo что-то не то; fi
 
 Принцип понятен? Тут дурной возни столько, что желательно всё-таки переписывать
 на более вменяемый язык (Perl, Tcl и так далее).
 -netch-
 --- ifmail v.2.15dev5.3
  * Origin: Dark side of coredump (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: послать команду модему..   Valentin Nechayev   09 Mar 2005 00:15:35 
Архивное /ru.unix.bsd/2238329cf9e49.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional