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

    

SIM800: ошибки при обработке AT-комманд

модем SIM800C 1418B04SIM800C32_BT отвечает ошибкой после статуса OK, пример лога:

> AT+CMGD=
> 0,4
< OK

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

> AT+CMGF=0
< OK

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

 

Команда AT+CMGD работает только в текстовом режиме?

Для чего у SIMCOM специализированная команда AT+CMGDA?

Изменено пользователем spot62

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


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

+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

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


Ссылка на сообщение
Поделиться на другие сайты
А в даташите если посмотреть? - 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 ошибок не возникает.

Изменено пользователем spot62

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


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

Это уже несколько раз обсуждалось - ищем CMGDA поиском по форуму, несколько ситуаций было прояснено.

 

Еще начиная с SIM300, потом SIM900, стандартная CMGD иногда глючит при удалении ВСЕХ SMS.

Так как изначально рассчитывалась на телефон, а в модуле нет всей памяти под SMS как в телефоне.

Поэтому была сделана CMGDA. Но или у китайцев логика извращенная, или мы что-то не понимаем, но GMGDA тоже работает своеобразно.

Правильный алгоритм - удалять по одной и не хранить много.

Получил SMS - обработал - выставил CPMS правильное хранилище и удалил.

Или если все же надо что-то сохранять, то следить при удалении откуда удаляем.

 

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

 

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

 

Общий алгоритм такой:

+СMGL=4

берем первую в листинге, смотрим ее тип.

неотправленную - отправляем

отправленную - удаляем

входящую - обрабатываем, потом удаляем.

 

И так по кругу, пока что-то есть.

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


Ссылка на сообщение
Поделиться на другие сайты
Правильный алгоритм - удалять по одной и не хранить много.

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

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


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

>>>СМС всегда записываться в одно и то же место флеши и таким образом быстро это место изнашивать?

 

FS в 800 серии, после печального опыта с SIM900, сделана по принципу SSD - блочная структура и кольцевой сдвиг блоков.

Записать на одно и то же место теоретически получится после 8 сдвигов. А практически гораздо позже, в память же не только SMS пишутся.

 

Ну и еще - если у вас SIM карта нового стандарта, то там есть мегабайт памяти, можно сохранять SMS туда.

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


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

Спасибо за ответы.

Получил SMS - обработал - выставил CPMS правильное хранилище и удалил.

 

Т.е. необходимо устанавливать хранилище всякий раз перед удалением?

Разве недостаточно указать AT+CPMS="MT" при инициализации, единожды?

 

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


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

Может и достаточно, но проверить - одна команда и времени много не займет.

А то ведь от "третьей электронной неисправности" никто не застрахован.

 

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация