-
- Все было хорошо (в моей реализации) до момента пока был обмен по
типу "запрос-ответ". Все сломалось когда пошли асинхронные данные
(например, смс), а они мне нужны. - petrd(13.02.2023 08:18)
- а что не так с СМС? Отправка или получение? У меня получение -
AT+CMGL="ALL" (обычно идут по одной и ее потом сразу удаляю). Там в
теле ответа всё - дата, телефон, текст. И отправка. Кинул
AT+CMGS="+7913.....". Получил оттуда ">" - выдал текст (не
забыв в конце 0х1А). Ну и удалил - AT+CMGD=1,4. раньше я всё это
делал тупо по порядку. Сейчас в фоне основной программы по признаку
завершения посылки ответа. Здесь в отличии от работы с FTP или SMTP
всё гораздо проще. - Лaгyнoв(13.02.2023 16:49)
- А такой вопрос. RTOS или нет? - vesago(17.02.2023 17:43)
- Все разбираю построчно, по мере прилета строк из кольцевого буфера
в линейную строку. Прилетает СМС асинхронно "+CMTI: "SM",1"
разбираю и выбираю номер номер этой СМС (чтобы не читать все смс),
после этого читаю смс по ее номеру AT+CMGR=1\r, а это будет
эхо+преамбула+текст_смс + ОК. Итого 4 строки. У эха нет спереди
\r\n и в конце только \r без \n. Строку эхо - в игнор, разбираю
преамбулу на предмет номера телефона, с которого пришло смс, если
номер тот, ждем когда придет petrd(31 знак., 13.02.2023 18:58)
- ну если разбирать в куче СМС, то тогда да. Непонятно только зачем.
Пришла, выполнил, удалил. Одновременно чтоб несколько кто-то слал -
такого у меня нет - Лaгyнoв(13.02.2023 19:01)
- Номер смс-ки это если по полной программе. При простом варианте при первом включении все СМС удаляются. Далее в цикле вместе с другими командами "зарос-ответ" висит ожидание "+CMTI: "SM",1". Мне нужны СМС с определенного номера, выбираю смс только с него, а то наслать могут отовсюду всякой хрени. Прочитал смс с нужного номера, разобрал текст по шаблону, выполнил, смс - удалил. Не с того номера СМС - игнор и удаление. - petrd(13.02.2023 22:28)
- ну если разбирать в куче СМС, то тогда да. Непонятно только зачем.
Пришла, выполнил, удалил. Одновременно чтоб несколько кто-то слал -
такого у меня нет - Лaгyнoв(13.02.2023 19:01)
- Здесь когда-то проскакивал ответ. Запрос на асинхронные данные надо передавать вместе ( ставить перед ) командой с синхронным ответом ( например, ОК ). Тогда посылка всегда будет подтверждаться ответом от второй команды ( нейтральной по последствиям ), после чего можно переходить к состоянию ожидания асинхронного ответа. Это я телепатировать пытаюсь. - teap0t(13.02.2023 14:30)
- а что не так с СМС? Отправка или получение? У меня получение -
AT+CMGL="ALL" (обычно идут по одной и ее потом сразу удаляю). Там в
теле ответа всё - дата, телефон, текст. И отправка. Кинул
AT+CMGS="+7913.....". Получил оттуда ">" - выдал текст (не
забыв в конце 0х1А). Ну и удалил - AT+CMGD=1,4. раньше я всё это
делал тупо по порядку. Сейчас в фоне основной программы по признаку
завершения посылки ответа. Здесь в отличии от работы с FTP или SMTP
всё гораздо проще. - Лaгyнoв(13.02.2023 16:49)
- Недавно всё у себя переделал. Раньше вообще выпадал из основной программы, пока не закончу с модемом. Теперь по каждой посылке в модем по прерываниям в буфер приходит ответ. Смотрю, что всё пришло, разбираю и шлю новую посылку. Зачем здесь "кольцевой" буфер? Всё равно каждая следующая посылка зависит от ответа на предыдущую. И там - ветвление. Да, сразу не понял. В принципе большинство простых ответов заканчиваются "ОК" и CR,LF. Но есть масса ответов со смыслом, где есть Лaгyнoв(128 знак., 08.02.2023 17:17)
- Я бы делал буфер для полной строки (в дополнение к или вместо кольцевого буфера). Когда набирается полное сообщение, тогда его и разбираем. Можно при помощи sscanf, strtok, memcmp и т.д. - SciFi(08.02.2023 16:47)
- А кто заставляет именно в конце чего-то там проверять? .. ресурсов
сейчас на всё обычно хватает... POV(233 знак., 08.02.2023 16:39, картинка, картинка)
- Событийность это для лохов, для правильных пацанов -
состоятельность IBAH(276 знак., 08.02.2023 18:52, ссылка)
- Я не считаю правильным в любой задаче следовать модным (типа
"грамотным") методам... паттернам, блядь, проектирования. Есть
задача, ресурсы - им находится соответствующее решение. Без какого
либо масштабирования в будущем... POV(42 знак., 08.02.2023 20:47, картинка)
- да мне ваще пох, хоть на Бэйсике пиши - IBAH(08.02.2023 22:01)
- Спасибо за разрешение и очень ценные ссылки на википедию. - POV(08.02.2023 22:02)
- да мне ваще пох, хоть на Бэйсике пиши - IBAH(08.02.2023 22:01)
- Я не считаю правильным в любой задаче следовать модным (типа
"грамотным") методам... паттернам, блядь, проектирования. Есть
задача, ресурсы - им находится соответствующее решение. Без какого
либо масштабирования в будущем... POV(42 знак., 08.02.2023 20:47, картинка)
- Спасибо! ......temp==0x0A..last==0x0D...... if(rxCount >2)
..flag=1;.....увидел. Идея понятна. - petrd(08.02.2023 16:48)
- Не пойму почему после текста SMS появляется еще одна галочка промпта '>' . Нигде об этом не нашел. petrd(39 знак., 14.02.2023 16:49)
- Событийность это для лохов, для правильных пацанов -
состоятельность IBAH(276 знак., 08.02.2023 18:52, ссылка)
- Все было хорошо (в моей реализации) до момента пока был обмен по
типу "запрос-ответ". Все сломалось когда пошли асинхронные данные
(например, смс), а они мне нужны. - petrd(13.02.2023 08:18)