Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SIM800: ошибки при обработке AT-комманд
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
spot62
модем SIM800C 1418B04SIM800C32_BT отвечает ошибкой после статуса OK, пример лога:
Код
> AT+CMGD=
> 0,4
< OK

> AT+CMGF=0
< +CMS ERROR: 321

> AT+CMGF=0
< OK

кто-нибудь сталкивался?

Команда AT+CMGD работает только в текстовом режиме?
Для чего у SIMCOM специализированная команда AT+CMGDA?
CADiLO
+CMS ERROR: 321 = invalid memory index

Поэтому перед > AT+CMGD=0,4

где

4 Delete all messages from preferred message storage including unread messages

проверьте командой CPMS, что выбрано в качестве - preferred message storage

А то там не все может быть валидно, при некоторых комбинациях указатель остается на несуществующей памяти.


AT+CMGDA

А в даташите если посмотреть? - SIM800 Series_AT Command Manual_V1.10

6.2.25 AT+CMGDA Delete All SMS
spot62
Цитата(CADiLO @ Jan 30 2018, 14:58) *
А в даташите если посмотреть? - SIM800 Series_AT Command Manual_V1.10
6.2.25 AT+CMGDA Delete All SMS

Спрошу по-другому: AT+CMGDA , пмсм, дублирует AT+CMGD. Для чего эта команда нужна? AT+CMGD работает не во всех режимах (Text, PDU)?

При AT+CMGD=1,4 ошибок не возникает.
CADiLO
Это уже несколько раз обсуждалось - ищем CMGDA поиском по форуму, несколько ситуаций было прояснено.

Еще начиная с SIM300, потом SIM900, стандартная CMGD иногда глючит при удалении ВСЕХ SMS.
Так как изначально рассчитывалась на телефон, а в модуле нет всей памяти под SMS как в телефоне.
Поэтому была сделана CMGDA. Но или у китайцев логика извращенная, или мы что-то не понимаем, но GMGDA тоже работает своеобразно.
Правильный алгоритм - удалять по одной и не хранить много.
Получил SMS - обработал - выставил CPMS правильное хранилище и удалил.
Или если все же надо что-то сохранять, то следить при удалении откуда удаляем.

Вот Alechek отвечал в одной из веток:

" Вообще, если мне не изменяет память, еще в SIM300 были проблемы с удалением всех СМС. Поэтому я удаляю их по одной."

Общий алгоритм такой:
+СMGL=4
берем первую в листинге, смотрим ее тип.
неотправленную - отправляем
отправленную - удаляем
входящую - обрабатываем, потом удаляем.

И так по кругу, пока что-то есть.
jcxz
Цитата(CADiLO @ Jan 30 2018, 14:29) *
Правильный алгоритм - удалять по одной и не хранить много.

А если так делать, то всегда при приёме новой СМС хранилище будет пусто, а не будет ли при этом новая СМС всегда записываться в одно и то же место флеши и таким образом быстро это место изнашивать? В то время как другие ячейки для СМС останутся нетронутыми.
CADiLO
>>>СМС всегда записываться в одно и то же место флеши и таким образом быстро это место изнашивать?

FS в 800 серии, после печального опыта с SIM900, сделана по принципу SSD - блочная структура и кольцевой сдвиг блоков.
Записать на одно и то же место теоретически получится после 8 сдвигов. А практически гораздо позже, в память же не только SMS пишутся.

Ну и еще - если у вас SIM карта нового стандарта, то там есть мегабайт памяти, можно сохранять SMS туда.
spot62
Спасибо за ответы.
Цитата(CADiLO @ Jan 30 2018, 15:29) *
Получил SMS - обработал - выставил CPMS правильное хранилище и удалил.


Т.е. необходимо устанавливать хранилище всякий раз перед удалением?
Разве недостаточно указать AT+CPMS="MT" при инициализации, единожды?
CADiLO
Может и достаточно, но проверить - одна команда и времени много не займет.
А то ведь от "третьей электронной неисправности" никто не застрахован.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.