реклама на сайте
подробности

 
 
> SIM900R как правильно отправлять СМС?, Сделал. Работает, но хотелось бы посоветоваться.
Димон Безпарольн...
сообщение Mar 16 2014, 03:23
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247



Идея в том, чтобы не вешать процесс намертво ожиданиями.

Отправка начинается по команде CRWP. Отправляется первая часть:
Цитата
ebdat9_01SendToModem((u8*)"AT+CMGS=\"+XXXXXXXX\"\r",23);


Взводится флаг ожидания приглашения ">" и инициализируется счетчик SMSFlagsClear:

Цитата
if (p1==2) {//Команда CRWP = 2
SMSFlagsClear=3; WaitSMS = 1; //Сброс флагов WaitSMS и SMSReady через 9с при неответе
ebdat9_01SendToModem((u8*)"AT+CMGS=\"+79653749528\"\r",23);} //Отправляем адресат


SMSFlagsClear обрабатывается (на вычитание) в событии EVENT_TIMER (период - 3с) и при обнулении обнуляет также флаги
WaitSMS и SMSReady:

Цитата
if (SMSFlagsClear) //Обнуление флагов SMSReady и WaitSMS
SMSFlagsClear--; //по таймеру SMSFlagsClear
if (!SMSFlagsClear) {SMSReady = 0; WaitSMS = 0;}}


Флаг SMSReady устанавливается в событии EVENT_MODEMDATA при ответе приглашением ">":

Цитата
if (WaitSMS) //Если идет отправка СМС
pKey = (s8*)strstr(string,">");//pKey<>0 если есть ">"
if (pKey) {SMSReady = 1;}} //Флаг ответа модема


Т.е. - отправили первую часть, ждем приглашения, отправляем вторую часть.
В итоге получается громоздко. Может кто знает - как проще?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 15:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01358 секунд с 7
ELECTRONIX ©2004-2016