The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Работа с модемом из bash скрипта."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Работа с модемом из bash скрипта." 
Сообщение от San emailИскать по авторуВ закладки(??) on 12-Сен-05, 13:59  (MSK)
Народ, подскажите пожалуйста возможен ли субж?
Надо из скрипта кидать в модем, подключенный по COM-порту, обычные "AT"-команды и слушать его ответы.
Или тут только C или Perl помогут?
  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Работа с модемом из bash скрипта." 
Сообщение от Niam Искать по авторуВ закладки on 12-Сен-05, 15:20  (MSK)
>Народ, подскажите пожалуйста возможен ли субж?
>Надо из скрипта кидать в модем, подключенный по COM-порту, обычные "AT"-команды и
>слушать его ответы.
>Или тут только C или Perl помогут?


Дык просто писать как в файл echo 'smth' > /dev/ttyS0

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Работа с модемом из bash скрипта." 
Сообщение от San emailИскать по авторуВ закладки(??) on 12-Сен-05, 15:37  (MSK)
>>Народ, подскажите пожалуйста возможен ли субж?
>>Надо из скрипта кидать в модем, подключенный по COM-порту, обычные "AT"-команды и
>>слушать его ответы.
>>Или тут только C или Perl помогут?
>
>
>Дык просто писать как в файл echo 'smth' > /dev/ttyS0

А ответы модема, как ловить?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Работа с модемом из bash скрипта." 
Сообщение от enot Искать по авторуВ закладки(??) on 12-Сен-05, 16:38  (MSK)
>>>Народ, подскажите пожалуйста возможен ли субж?
>>>Надо из скрипта кидать в модем, подключенный по COM-порту, обычные "AT"-команды и
>>>слушать его ответы.
>>>Или тут только C или Perl помогут?
>>
>>
>>Дык просто писать как в файл echo 'smth' > /dev/ttyS0
>
>А ответы модема, как ловить?

Утилита chat

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Работа с модемом из bash скрипта." 
Сообщение от San emailИскать по авторуВ закладки(??) on 12-Сен-05, 17:36  (MSK)
>>А ответы модема, как ловить?
>
>Утилита chat

Ок. Спасибо за совет! Попробую.
Заодно вопрос: какой набор символов в chat-файле будет равносилен посылке в модем сигнала аналогичного Ctrl+Z ?
Мне надо после некоторой AT-команды скармливать модему "символ" Ctrl+Z.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Работа с модемом из bash скрипта." 
Сообщение от enot Искать по авторуВ закладки(??) on 12-Сен-05, 18:28  (MSK)
>>>А ответы модема, как ловить?
>>
>>Утилита chat
>
>Ок. Спасибо за совет! Попробую.
>Заодно вопрос: какой набор символов в chat-файле будет равносилен посылке в модем
>сигнала аналогичного Ctrl+Z ?
>Мне надо после некоторой AT-команды скармливать модему "символ" Ctrl+Z.

\\ddd  - восьмеричный ASCII

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Работа с модемом из bash скрипта." 
Сообщение от San emailИскать по авторуВ закладки(??) on 12-Сен-05, 19:38  (MSK)
>>Мне надо после некоторой AT-команды скармливать модему "символ" Ctrl+Z.
>
>\\ddd  - восьмеричный ASCII

Спасибо!
Осталось только узнать какой код у Ctrl+Z :)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Работа с модемом из bash скрипта." 
Сообщение от chip emailИскать по авторуВ закладки(ok) on 12-Сен-05, 20:08  (MSK)
>>>Мне надо после некоторой AT-команды скармливать модему "символ" Ctrl+Z.
>>
>>\\ddd  - восьмеричный ASCII
>
>Спасибо!
>Осталось только узнать какой код у Ctrl+Z :)

cat <<EOF | hd
?<Ctrl-Z>
?EOF

/home/chip> cat << EOF | hd
?
?EOF
00000000  0a                                                |.|
00000001
/home/chip>

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Работа с модемом из bash скрипта." 
Сообщение от San emailИскать по авторуВ закладки(??) on 13-Сен-05, 10:44  (MSK)
>>>>Мне надо после некоторой AT-команды скармливать модему "символ" Ctrl+Z.
>>>
>>>\\ddd  - восьмеричный ASCII
>>
>>Спасибо!
>>Осталось только узнать какой код у Ctrl+Z :)
>
>cat <<EOF | hd
>?<Ctrl-Z>
>?EOF
>
>/home/chip> cat << EOF | hd
>?
>?EOF
>00000000  0a          
>          
>          
>          
>     |.|
>00000001
>/home/chip>

Увы. "0a" это LF, а не Ctrl-Z

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "Работа с модемом из bash скрипта." 
Сообщение от chip emailИскать по авторуВ закладки(ok) on 13-Сен-05, 11:23  (MSK)
>>>>>Мне надо после некоторой AT-команды скармливать модему "символ" Ctrl+Z.
>>>>
>>>>\\ddd  - восьмеричный ASCII
>>>
>>>Спасибо!
>>>Осталось только узнать какой код у Ctrl+Z :)
>>
>>cat <<EOF | hd
>>?<Ctrl-Z>
>>?EOF
>>
>>/home/chip> cat << EOF | hd
>>?
>>?EOF
>>00000000  0a          
>>          
>>          
>>          
>>     |.|
>>00000001
>>/home/chip>
>
>Увы. "0a" это LF, а не Ctrl-Z

http://www.jimprice.com/jim-asc.htm

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "Работа с модемом из bash скрипта." 
Сообщение от regunkov Искать по авторуВ закладки(ok) on 14-Сен-05, 14:08  (MSK)
>>>>>>Мне надо после некоторой AT-команды скармливать модему "символ" Ctrl+Z.
>>>>>
>>>>>\\ddd  - восьмеричный ASCII
>>>>
>>>>Спасибо!
>>>>Осталось только узнать какой код у Ctrl+Z :)
>>>
>>>cat <<EOF | hd
>>>?<Ctrl-Z>
>>>?EOF
>>>
>>>/home/chip> cat << EOF | hd
>>>?
>>>?EOF
>>>00000000  0a          
>>>          
>>>          
>>>          
>>>     |.|
>>>00000001
>>>/home/chip>
>>
>>Увы. "0a" это LF, а не Ctrl-Z
>
>http://www.jimprice.com/jim-asc.htm

Правильно было сделать так:

cat<<EOF | hexdump -C
?<Ctrl-v><Ctrl-z>?<Enter>
<Ctrl-d>

regunkov@roman ~ $ cat<<EOF | hexdump -C
> ?^Z?
> 00000000  3f 1a 3f 0a                                       |?.?.|
00000004
regunkov@roman ~ $

Значит Ctrl-z это 0x1b.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "Работа с модемом из bash скрипта." 
Сообщение от San emailИскать по авторуВ закладки(??) on 21-Сен-05, 10:05  (MSK)
>regunkov@roman ~ $ cat<<EOF | hexdump -C
>> ?^Z?
>> 00000000  3f 1a 3f 0a                                       |?.?.|
>00000004
>regunkov@roman ~ $
>
>Значит Ctrl-z это 0x1b.

На самом деле 0x1a. :)
Только вот обнаружилась очень неприятная вещь. Два идентичных компа, два идентичных дистрибутива линуха RHEL4. На одном echo "ati" > /dev/ttyS0 проходит нормально, а на втором - как повезет. Или в порт пихается аж три копии "ati", или вообще какой-то мусор непонятный. Причем все непостоянно и меняется по непонятным причинам. Может и одна команда пройти, а может мусор. Бред какой-то.
Причем если работать с портом с помощью "cu -l /dev/ttyS0", то никакого двоения-троения и мусора нет. Все чинно и прилично.
Вопрос: можно ли как-нибудь работать НЕИНТЕРАКТИВНО с командой "cu"?
Ну, то есть скармливать ей команды не с клавиатуры, а например, из текстового файла? A-la "echo "ati" > cu -l /dev/ttyS0"

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "Работа с модемом из bash скрипта." 
Сообщение от enot Искать по авторуВ закладки(??) on 21-Сен-05, 13:56  (MSK)
>>regunkov@roman ~ $ cat<<EOF | hexdump -C
>>> ?^Z?
>>> 00000000  3f 1a 3f 0a                                       |?.?.|
>>00000004
>>regunkov@roman ~ $
>>
>>Значит Ctrl-z это 0x1b.
>
>На самом деле 0x1a. :)
>Только вот обнаружилась очень неприятная вещь. Два идентичных компа, два идентичных дистрибутива линуха RHEL4. На одном echo "ati" > /dev/ttyS0 проходит нормально, а на втором - как повезет. Или в порт пихается аж три копии "ati", или вообще какой-то мусор непонятный. Причем все непостоянно и меняется по непонятным причинам. Может и одна команда пройти, а может мусор. Бред какой-то.
>Причем если работать с портом с помощью "cu -l /dev/ttyS0", то никакого
>двоения-троения и мусора нет. Все чинно и прилично.
>Вопрос: можно ли как-нибудь работать НЕИНТЕРАКТИВНО с командой "cu"?
>Ну, то есть скармливать ей команды не с клавиатуры, а например, из текстового файла? A-la "echo "ati" > cu -l /dev/ttyS0"

Вот именно мусор... cu инициализирует порт, сбрасывает буфера и мусор
фильтрует...

Можно, есть expect (не уверен в названии) утилита позволяющая превратить интерактивные проги в неинтерактивные. Как раз для таких случаев.

Если только на втором такое, то возможно палённый com-порт или модем.
поменяй модемы на компах или на третьем компе проверь.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

13. "Работа с модемом из bash скрипта." 
Сообщение от San emailИскать по авторуВ закладки(??) on 22-Сен-05, 11:27  (MSK)
>Вот именно мусор... cu инициализирует порт, сбрасывает буфера и мусор
>фильтрует...
>
>Можно, есть expect (не уверен в названии) утилита позволяющая превратить интерактивные проги
>в неинтерактивные. Как раз для таких случаев.
>
>Если только на втором такое, то возможно палённый com-порт или модем.
>поменяй модемы на компах или на третьем компе проверь.

Разница там в параметрах портов.
Вот результат "stty -F /dev/ttyS0 -a" на ПРАВИЛЬНОМ компе, где все ок:
------------------------
speed 19200 baud; rows 0; columns 0; line = 0;
intr = <undef>; quit = <undef>; erase = <undef>; kill = <undef>; eof = <undef>; eol = <undef>; eol2 = <undef>; start = <undef>;
stop = <undef>; susp = <undef>; rprnt = <undef>; werase = <undef>; lnext = <undef>; flush = <undef>; min = 1; time = 1;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl ixon ixoff -iuclc -ixany -imaxbel
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke
------------------------

А вот - на неправильном:
------------------------
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z;
rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 1;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl ixon ixoff -iuclc -ixany -imaxbel
-opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
------------------------

Вопрос: как бы эти "intr", "quit", "erase" и т.д. сбросить в <undef> ?
И кто вообще их сделал не <undef>'ами?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

14. "Работа с модемом из bash скрипта." 
Сообщение от enot Искать по авторуВ закладки(??) on 22-Сен-05, 14:20  (MSK)
>>Вот именно мусор... cu инициализирует порт, сбрасывает буфера и мусор
>>фильтрует...
>>
>>Можно, есть expect (не уверен в названии) утилита позволяющая превратить интерактивные проги
>>в неинтерактивные. Как раз для таких случаев.
>>
>>Если только на втором такое, то возможно палённый com-порт или модем.
>>поменяй модемы на компах или на третьем компе проверь.
>
>Разница там в параметрах портов.
>Вот результат "stty -F /dev/ttyS0 -a" на ПРАВИЛЬНОМ компе, где все ок:
>
>------------------------
>speed 19200 baud; rows 0; columns 0; line = 0;
>intr = <undef>; quit = <undef>; erase = <undef>; kill = <undef>; eof = <undef>; eol = <undef>; eol2 = <undef>; start = <undef>;
>stop = <undef>; susp = <undef>; rprnt = <undef>; werase = <undef>; lnext = <undef>; flush = <undef>; min = 1; time = 1;
>-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
>-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl ixon ixoff -iuclc
>-ixany -imaxbel
>-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0
>vt0 ff0
>-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl
>-echoke
>------------------------
>
>А вот - на неправильном:
>------------------------
>speed 9600 baud; rows 0; columns 0; line = 0;
>intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z;
>rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O;
>min = 1; time = 1;
>-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
>-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl ixon ixoff -iuclc
>-ixany -imaxbel
>-opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0
>vt0 ff0
>-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt echoctl
>echoke
>------------------------
>
>Вопрос: как бы эти "intr", "quit", "erase" и т.д. сбросить в <undef> ?
>И кто вообще их сделал не <undef>'ами?


Ага, первая строка, скорости разные... остальное мона той же stty изменить

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

15. "Работа с модемом из bash скрипта." 
Сообщение от regunkov Искать по авторуВ закладки(ok) on 10-Окт-05, 12:32  (MSK)
>>>regunkov@roman ~ $ cat<<EOF | hexdump -C
>>>> ?^Z?
>>>> 00000000  3f 1a 3f 0a                                       |?.?.|
>>>00000004
>>>regunkov@roman ~ $
>>>
>>>Значит Ctrl-z это 0x1b.
>>
>>На самом деле 0x1a. :)

Мой риспект. ;) Буду внимательнее.
Для настройки серийного порта используйте SETSERIAL(8)


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру