Перейти к содержанию
    

IvanPetrov010203

Участник
  • Постов

    7
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Может, ошибка не в коде, а в питании модуля?? Судя по другим темам форума она у вас так и не была решена.
  2. Вас почитаешь - так он еще лучше при таких условиях должен ловить ))) Давайте накрывать навигаторы медными тазами, будет нам счастье.
  3. Думаю, в любом случае следует придерживаться рекомендаций производителя и перед снятием питания с модуля посылать команду на выключение. Например, для SIM5216 это "AT+CPOF".
  4. добавьте анализ на "+CMGS" или "+CMGS: <value>" и оптимизируйте строковый анализатор (например, после OKFLAG =1; добавьте return; или break; если дальнейший анализ уже не имеет смысла). Вроде, это все, что можно/нужно сделать. Если я не ошибаюсь, memset(&flEventBuffer.eventData.modemdata_evt.data[0],'\0',EVENT_MAX_DATA); должна почистить буфер.
  5. Очепятался я) С EmbeddedAT и его API я дела пока не имел, предыдущее сообщение настрочил, бегло пробежавшись по мануалу. Идея все-же следующая: собираем то, что присылает модем, складываем в строку, анализируем строку (если есть символ '>', то получили приглашение, если "...\r\n" - от получили законченный ответ от модуля), предпринимаем действия, чистим строку, в которую складывали посылки от модема... Если анализируемая строка содержит "+CMGS:", то сообщение отправлено, можно отправлять следующее.
  6. Димон, ожидание- не лучший способ. Все равно отправлять смс лучше дожидаясь реакции на отправку/неотправку предыдущего. Думаю, лучший способ - это написать нормальный парсер на сообщения, принимаемые от модуля и по ним организовать finite state machine. ebdat9_03SeеModemdataToFL(TRUE); должна направить сообщения от модуля в Embedded Aplication. Я имею в виду, что ожидание между оправками сделать не по времени, а по факту получения от модуля "+CMGS: <value>". То же можно сделать для ожидания приглашения. В общем, анализируйте, что присылает модем. Отслеживайте это в EVENT_UARTDATA, и, в случае обнаружения '>' будет вызывайте ф-ю наполнения смс символами. А в случае получения другой строки (строка заканчивается символами \r\n) от модуля - поступайте как нужно..))) Например, если поймаете "+CMGS: 225\r\n", значит предыдущее сообщение отправлено и можно засылать "AT+CMGS=\"+XXXXXXXX\"\r" для отправки следующего. Подобным образом, можно дополнить парсер для других любых сообщений, поддержав реакцию на все сообщения. Иметь кучу флагов ожидания в программе - не лучший способ - можно запутаться, когда программа разрастется ))
  7. Вероятно, будет проще поставить GCC и среду на другой компьютер, либо на виртуалку. Потом убедиться, что проект собирается и постараться найти 1 отличие.. Вы какую ОС используете? У меня на Win7x64 все запустилось в лёт, только путь в Options->compiler options поправить пришлось (компилер, видимо, не нашелся при установке). Ставил GCC и IDE с установками по умолчанию, пути и т.п. не менял, первая/чистая установка.
×
×
  • Создать...