ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
22 ноября
397626
Связанные сообщения
Gsm
Друзья, собираю проект, в котором кроме всего прочего обмен с хостом через 3g модем. Я как-то не любитель ртос. Не скажу, что со...2024-06-01
Подскажите оборудование смс шлюз, которое может реализовать следующее:2022-06-30
Блин, жопа c Telit GE863-GPS. Подаю команду AT#SD= с параметрами и ТИШИНА. В командный режим по +++ не переходит, только ресет п...2011-09-27
DragonS (27.03.2013 10:57, просмотров: 42807)
Парсер для GSM модема и работа с ним. Как правильно организовать работу?  Давненько делал так. Циклический буфер приёмника с UART. В цикле он опрашивается на наличие данных - если есть, то считывается строка 0d0a...0d0a. Далее запускал парсинг. Он искал вхождение стандартных строк в считанной строке, типа +CMTI, RING и т.п., и либо тут же в парсере создавал реакцию - считать смс, ответить/сбросить звонок и т.п., либо возвращал из парсера код для следующей функции, которая соответствующе реагировала на обработку поступивших данных. Всё это превратилось в большой, трудночитаемый код и со временем было заброшено. Недавно решил привести всё в порядок. Поискал правильную организацию работы с модемом. Но ничего толком не нашёл. Все пишут обрывками. Сам код не интересует, интересует правильное построение работы с модемом. Ещё понял, что эхо не стоит выключать, т.к. при его отключении и после посылки команды можно получить от телефона не то, что ожидаешь и потом придётся труднее расхлёбывать это всё. Получается, что отправив строку в модем, мы должны убедиться, что в ответе она присутствует, значит, следующие за ней данные и есть ответ на неё. Кто-то разбирает ответ модема по буквам в строке, начиная с первой. Кто-то по поиску стандартных вхождений строк. Как организовать правильную структуру работы программы, чтобы в ней чётко обрабатывались данные, поступающие от модема, а так же отправлялись смс, данные через gprs, совершались звонки по мере наступления тех или иных событий? Опять же, может создаться очередь событий, как её можно организовать? У меня были флаги, но думаю это не правильно. И правильно ли, что после подачи любой команды, обязательно ждать, пока модем на неё не ответит? Например, на отправку смс я ждал до 2 минут. Но тут могут произойти другие события, которые может понадобиться обработать в основной программе и поставить их в очередь на отправку по ним смс или данных. Вообщем, создалась в моей голове полная мешанина, которую не получается упорядочить :) Стоит ли подключать управлящие ноги модема RTS, DCD и др.? C ними ни разу не работал.