ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
16 апреля
998773 Топик полностью
Гyдвин, волшебник (25.04.2020 13:41, просмотров: 1016) ответил fk0 на Код ни разу не клевый. Идея в том, чтоб использовать хеши ответов вместо парсинга в лоб? Действительно идея, но ньюансы могут всё испортить, практически это грязный хак. В полноценном парсере хеши тоже могут найтись, например, в алгоритме Рабина-Карпа, для быстрого понимания какой именно это токен, без сравнения с каждым.
Мне не надо понимать какой токен из множества различных. Я тупо выполняю команду и жду нужный или окончание тайм-аута: if (command("AT+CREG?", 2, REG)) Так что в данном приложении (просто проверить регистрацию в сети, активность GRS сессиии и послать данные, получив "200" ) - клевый. Простой и компактный. А я ленивый ;) Ну и да - если при выполнении команды модем ничего не ответил во время тайм-аута, значит висит - передергиваю питание. За пару суток такое 

случилось

разок... Подозреваю, что связано с входящими голосовыми вызовами (на эту симку кто-то постоянно долбится, сцуко...).

int command(unsigned char * str, unsigned int time, unsigned int patt)
{
  code=0;
  cnt_ch=0;
  timeout=time;
  pattern=patt;
  Send_UART(str); 
  while(timeout)
   {
    work_radio();
    if (pattern==0) return(1);
   }
  if (cnt_ch==0) init_modem();
 return(0);
}