ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 марта
624630
Nikolaev_Aleksey (13.10.2015 09:00, просмотров: 2391)
Алгоритм работы микроконтроллера с GSM модулем. Появился вопрос - а кто как организовывает работу с ними? Раньше проекты были простыми - типа включить модуль отослать смс, выключить. Либо отправить данные по TCP, получить ответ и выключить. Вся конструкция решалась через switch, вот так (запрос - ответ, если пришел другой ответ, все равно ожидаем нужного определенное время. Не пришел ответ - повтор команды. Счетчик ошибок по этой команде перевалил порог, на контрольную точку) [code] case 10: sim900_put_string("AT+CFUN=1\r\n"); sim900_next_state(); break case 11: // после выдачи предыдущей команды ищем в буфере принятых строк (буфер на 5 строк) if (sim900_compare_strings("OK\n")) sim900_next_state(); else sim900_wait_answer(2,0); // ждем ответ 2 секунды и на повтор команды break; case 11: // далее [/code] Сейчас делаю девайс, который 24 часа включен: входящие звонки и смс, исходящие звонки и смс, Подключение по TCP и UDP, запрос баланса. Т.е. система последовательный запрос - ответ не подходит, т.к. в любой момент может прийти входящий звонок, смс, отвалиться интернет, либо прийти пакет от внешнего сервера, а я в этот момент допустим смс перебираю. Если применить вышеприведеный подход, автомат switch разрастается настолько, что теряется смысл написанного, настолько получается непонятно. Кто может поделиться опытом - как решается такая ситуация? Разделять по потокам (Голосовые вызовы, GPRS, СМС и USSD в разные потоки - память жалко.)? ps: не стал выносить тему в "Мобильная и беспроводная связь" - думаю это больше к алгоритмам относится.