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

Можно тут глянуть принцип.

 

Почитал я эту статью и так и не понял зачем она в данной теме. Там что между строк надо находить нужную информацию?! Вообще ни одного слова, которые были бы полезны :07:

 

 

 

 

Что касается моего сообщения выше (там где описывал принцип обработки AT комманд), то продолжая свои опыты и общаясь с очень уже осведомлённым программистом <@Аrk> пришёл к окончательному варианту. Уже реализовал и проверил работоспособность.

 

Кусок из переписки с @Ark. Вот что он мне писал:

Я Вам рекомендую всегда использовать следующие настройки модема:

E1 “Эхо”команд включено

Q0 Ответы не подавляются

V1 Текстовая форма ответов

X4 Стандартный полный набор ответов

Тогда избежите массы ненужных проблем.

 

Действительно один из самых удобных вариантов. Единственно что эхо можно не использовать, тогда незначительно снижается надёжность системы, но упрощается обработка сообщений. Это уже решать каждому по себе. Я для себя эхо убрал и получил вот такой алгоритм.

 

Можно все сообщения ловить по наличию CRLF в начале и в конце каждого сообщения. После получения очередного сообщения, необходимо его проверить на наличие внештатных кодов. Например ERROR, +CME ERROR, +PDP DEACT, RING, +CSMI. Внештатными я называю всё, что может прийти неожиданно. Так вот, если сообщение не содержит внештатных кодов, то увеличивается счётчик полученных сообщений и процедура, пославшая ат команду, может быть уверена, что в буфере лежит всё, что относится именно к её ответу. Надо хорошо проработать обработку всех внештатных сообщений, что бы обеспечить 100% отлов всего, что не относится к нормальным ответам на команды.

Т.е. алгоритм таков.

- послал команду

- ждешь увеличения счётчика полученных сообщений (внештатные сообщения счётчик не увеличивают)

- увидев пришедший ответ, обрабатываем его.

 

 

Кроме того необходимо реализовать механизм аварийного вываливания из цикла ожидания ответа при условии получения кодов ошибки (ERROR, +CME ERROR и т.д.). После получения таких кодов, модуль уже не возращает нормальный ответ.

Т.е. к приведённому выше алгоритму прибавляется ожидание не только нормального ответа, а проверка флага наличия аварийных ответов.

 

Так же добавлю, что при использовании GPRS и некоторых типов команд (писал выше) возможно появление следующих форм ответов:

1) CRLF <ответ> CRLF <ответ> CRLF <ответ> CRLF (пример CLCC)

2) CRLF <ответ> (пример REMOTE IP: xxx.xxx.xxx.xxx).

Эти ответы не будут корректно обработаны моим алгоритмом, но проблема просто решается. С командами типа CLCC я вообще не работаю - они мне не нужны. А со второрым типом ответа тоже всё очень просто. Это сообщение вылазит после появления подлкючения от другого устройства. Если все подключившиеся устройства будут начинать передавать данные, в начале которых будут стоять байты 0x0D 0x0A, то это и закроет не законченный формат CRLF <ответ> - модуль корректно получив данное сообщение, может продолжать правильно функционировать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть предложение оформить все разумные мысли в единую библиотеку функций для SIM300 по подобию Procyon AVRlib http://www.mil.ufl.edu/~chrisarnold/compon...ard/AVR/avrlib/

 

Архив функций можно было бы выкладывать в этой ветке или у кого-нибудь на хостинге для всеобщего обозрения и дополнения

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть предложение оформить все разумные мысли в единую библиотеку функций для SIM300 по подобию Procyon AVRlib http://www.mil.ufl.edu/~chrisarnold/compon...ard/AVR/avrlib/

 

Архив функций можно было бы выкладывать в этой ветке или у кого-нибудь на хостинге для всеобщего обозрения и дополнения

 

Думаю затея хорошая, но нереализуемая.

1) Мало кто будет писать такие библиотеки, в которых будет всё прокоменчено и понятно друг другу.

2) Мало кто будет закладывать всеобщую универсальность = пригодность использования одной библиотеки многими пользователями.

3) В данной ветке будет просто невозможно найти что либо полезное. Надо 100% хостинг + что бы кто-то один следил за порядком там. Что бы не было повторов, глюкнутых библиотек.

4) Ни кто не захочет писать хелпы, как в приведённом примере.

 

В доказательство своих изречений могу поставить себя в пример. Пункт №1 я бы ещё к себе не применил, но вот 2, 3, 4 - это моё. Библиотека для AT-комманд у меня есть, но к её 1000 сточек кода нужно 5000 строчек объяснения как ей пользоваться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почитал я эту статью и так и не понял зачем она в данной теме. Там что между строк надо находить нужную информацию?! Вообще ни одного слова, которые были бы полезны :07:

В статье действительно напрямую не расписываются в деталях особенности алгоритма обработки ат команд, зато к статье прикладвается SMStest_PRG.zip в котором исходники на с, которые я и предлагаю глянуть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...