spot62
Jan 30 2018, 11:41
модем 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
Jan 30 2018, 11:58
+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
Jan 30 2018, 12:13
Цитата(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
Jan 30 2018, 12:29
Это уже несколько раз обсуждалось - ищем CMGDA поиском по форуму, несколько ситуаций было прояснено.
Еще начиная с SIM300, потом SIM900, стандартная CMGD иногда глючит при удалении ВСЕХ SMS.
Так как изначально рассчитывалась на телефон, а в модуле нет всей памяти под SMS как в телефоне.
Поэтому была сделана CMGDA. Но или у китайцев логика извращенная, или мы что-то не понимаем, но GMGDA тоже работает своеобразно.
Правильный алгоритм - удалять по одной и не хранить много.
Получил SMS - обработал - выставил CPMS правильное хранилище и удалил.
Или если все же надо что-то сохранять, то следить при удалении откуда удаляем.
Вот Alechek отвечал в одной из веток:
" Вообще, если мне не изменяет память, еще в SIM300 были проблемы с удалением всех СМС. Поэтому я удаляю их по одной."
Общий алгоритм такой:
+СMGL=4
берем первую в листинге, смотрим ее тип.
неотправленную - отправляем
отправленную - удаляем
входящую - обрабатываем, потом удаляем.
И так по кругу, пока что-то есть.
Цитата(CADiLO @ Jan 30 2018, 14:29)
Правильный алгоритм - удалять по одной и не хранить много.
А если так делать, то всегда при приёме новой СМС хранилище будет пусто, а не будет ли при этом новая СМС всегда записываться в одно и то же место флеши и таким образом быстро это место изнашивать? В то время как другие ячейки для СМС останутся нетронутыми.
CADiLO
Jan 30 2018, 12:58
>>>СМС всегда записываться в одно и то же место флеши и таким образом быстро это место изнашивать?
FS в 800 серии, после печального опыта с SIM900, сделана по принципу SSD - блочная структура и кольцевой сдвиг блоков.
Записать на одно и то же место теоретически получится после 8 сдвигов. А практически гораздо позже, в память же не только SMS пишутся.
Ну и еще - если у вас SIM карта нового стандарта, то там есть мегабайт памяти, можно сохранять SMS туда.
spot62
Jan 30 2018, 13:05
Спасибо за ответы.
Цитата(CADiLO @ Jan 30 2018, 15:29)
Получил SMS - обработал - выставил CPMS правильное хранилище и удалил.
Т.е. необходимо устанавливать хранилище всякий раз перед удалением?
Разве недостаточно указать AT+CPMS="MT" при инициализации, единожды?
CADiLO
Jan 30 2018, 13:23
Может и достаточно, но проверить - одна команда и времени много не займет.
А то ведь от "третьей электронной неисправности" никто не застрахован.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.