Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SIM900R и AT+CNMI
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
antis
Имеем модем SIM900R.

at+gsv
SIMCOM_Ltd
SIMCOM_SIM900R
Revision:1137B04SIM900R32_ST

Не могу понять, как работает второй параметр (mt) в команде AT+CNMI.

1. Устанавливаю параметр mt в 0
at+cnmi?
+CNMI: 2,0,0,0,0

OK

2. Посылаю модему SMS

3. От модема приходит URC (в PDU режиме)

+CMT: "",30
07919730071111F10414D04937BD2C7797E9D3E61400002170115150336107F4F29C2E83C500

и сообщение сохраняется в памяти.

Но в стандарте и в описании команд модема написано, что при mr = 0
No SMS-DELIVER indications are routed to the TE

Почему модем выдает URC, которого вроде не должно быть совсем?
CADiLO
А что конкретно нужно получить ?

Модем выдает URC - которое не сохранится согласно вашим установкам
И сохраняет СООБЩЕНИЕ к которому CNMI имеет отношение только в плане отчета о доставке.

Подробное описание работы CNMI с картинкой есть в GSM 07.05.

У Сinterion есть неплохой перевод формата команды.

AT+CNMI Настройка формирования отчетов о событиях SMS

Команда AT+CNMI управляет настройками SMS, относящимися к представлению кодов URC. По этой команде выбирается процедура индикации приема нового короткого сообщения для TE, если это устройство TE активно (например, сигнал DTR находится в состоянии ON).
Если TE неактивно (например, сигнал DTR находится в состоянии OFF), прием сообщения должен быть выполнен согласно спецификации 3GPP TS 23.038. Если сигнал DTR отсутствует или его состояние игнорируется (команда AT&D0 V.250), то достоверная передача сообщения обеспечивается использованием процедуры подтверждения AT+CNMA.
Применение для сохранения полученных сообщений правил <mt>=2 и <mt>=3 возможно только при условии, что с помощью команды AT+CSMS=1 активирована совместимость с фазой 2+. Параметр <ds>=1 доступен только в фазе 2+.


Описание параметров

<mode>

0
URC-коды, касающиеся SMS, всегда буферизуются в ME. При заполнении буфера наиболее старые из них удаляются и заменяются вновь принятыми.
1
URC, относящиеся к SMS, передаются непосредственно в TE. Однако, если это невозможно из-за занятости канала ME-TE, например, во время передачи данных, то эти URC-коды игнорируются.
2
URC, относящиеся к SMS, передаются непосредственно в TE. Однако, если это невозможно из-за занятости канала ME-TE, то эти URC-коды буферизуются и впоследствии передаются в TE.
3
URC, относящиеся к SMS, передаются непосредственно в TE. Однако, если это невозможно из-за занятости канала ME-TE, то эти URC-коды буферизуются и впоследствии передаются в TE.
Кроме того, если канал ME-TE занят, то информация о находящихся в буфере URC-кодах передается в TE путем отправки кода BREAK или активации линии RING в соответствии со значением параметров команды AT^SCFG: <uri>, <udri> и <urat>.

<mt>

Правила хранения принятых коротких сообщений определяются соответствующим методом кодирования данных (см. 3GPP TS 23.038 [30]), установкой предпочтительной памяти (AT+CPMS) и этим значением.
Примечание: если интерфейс AT-команд работает только в качестве устройства отображения, ME должно обеспечивать хранение сообщений класса 0 и сообщений, относящихся к группе индикации ждущих сообщений (discard message).
0
Сообщения-индикаторы SMS-DELIVER не пересылаются в TE.
1
Если SMS-DELIVER хранится в ME, сообщение-индикатор ячейки памяти пересылается в TE с помощью незапрашиваемого кода результата.
2
Сообщения SMS-DELIVER, за исключением сообщений класса 2 и сообщений, относящихся к группе индикации ждущих сообщений (store message), пересылаются непосредственно в TE с помощью незапрашиваемого кода результата.
3
Сообщения SMS-DELIVER класса 3 пересылаются непосредственно в TE с помощью незапрашиваемых кодов результата, определенных значением <mt>=2. Индикация сообщений с другими схемами кодирования данных осуществляется в соответствии с <mt>=1.

<bm>

Правила хранения принятых сообщений CBM зависят от соответствующего метода кодирования данных (см. 3GPP TS 23.038 [30]), установки выбранных типов СВМ (AT+CSCB) и этого значения:
0
Индикаторы сообщений CBM не пересылаются в TE.
2
Новые CBM направляются непосредственно в TE с помощью URC-кодов.
3
Сообщения CBM класса 3 пересылаются непосредственно в TE с помощью незапрашиваемых кодов результата, определенных параметром <bm>=2.

<ds>

0
Сообщения SMS-STATUS-REPORT не пересылаются в TE.
1
Сообщения SMS-STATUS-REPORT пересылаются в TE с помощью URC.
2
Если SMS-STATUS-REPORT направляется в ME, сообщение-индикатор ячейки памяти пересылается в TE с помощью незапрашиваемого кода результата.

<bfr>

1
Буфер ME для URC-кодов, относящихся к SMS, очищается, когда параметр <mode> меняет значение с 0 на 1, 2 или 3.

<index>(num)
Целочисленный тип; значения в диапазоне номеров ячеек, поддерживаемых соответствующей памятью.


Примечания
• Параметры <mt>=2,3 и <ds>=1 доступны только в GSM фазы 2+ (см. AT+CSMS=1). При использовании этих параметров фазы 2+, на входящие короткие сообщения (SM) или отчеты о состоянии должно выдаваться подтверждение (AT+CNMA=0).

• Специальные требования для мультиплексного режима
В мультиплексном режиме (AT+CMUX=0) параметр фазы 2+ может использоваться только в одном канале. Параметр для <mt> и <ds> в других каналах должен быть установлен в нулевое значение. Если на сообщение SM или отчет о состоянии не поступило подтверждение, для всех параметров AT+CNMI во всех каналах устанавливается нулевое значение.

• Если ME работает с разными экземплярами (мультиплексными каналами 1, 2, 3 или ASC0/ASC1), необходимо устанавливать одинаковые значения параметров для маршрутизации и индикации SMS-сообщений. Например, если сообщения должны быть напрямую направлены в один экземпляр TE (заданный с помощью AT+CNMI, AT^SSDA), то невозможно активизировать представление URC с помощью AT+CMER или AT+CNMI для другого экземпляра. Любая попытка активизировать настройки, противоречащие существующим настройкам в другом интерфейсе, приведет к ошибке "+CME ERROR", или, соответственно, "+CMS ERROR".

• Обработка коротких сообщений класса 0
Если дисплей в главном прикладном устройстве отсутствует, ME обрабатывает короткие сообщения класса 0 так, как если бы класс сообщения отсутствовал, т. е. ME игнорирует биты 0 и 1 в <dcs>, и при этом действуют обычные правила, применяемые в случае превышения емкости памяти. Рассмотренный подход совместим со стандартом 3GPP TS 23.038 [30].

• Если на короткое сообщение (SM) или отчет о состоянии не поступило подтверждение, для всех параметров AT+CNMI во всех каналах устанавливается нулевое значение.


Дополнение:

Thus, it is not recommended to use direct message routing (<mt>=2 or 3, <bm>=2 or 3, or <ds>=1) with <mode> value 0 or 2.
antis
Цитата(CADiLO @ Jul 11 2012, 16:18) *
А что конкретно нужно получить ?

Модем выдает URC - которое не сохранится согласно вашим установкам
И сохраняет СООБЩЕНИЕ к которому CNMI имеет отношение только в плане отчета о доставке.


Почему модем выдает URC -
+CMT: "",30
07919730071111F10414D04937BD2C7797E9D3E61400002170115150336107F4F29C2E83C500

Индикатор (URC) не должен же пересылаться в ТЕ, или я что не понимаю?

<mt>
0 - Сообщения-индикаторы SMS-DELIVER не пересылаются в TE.

А что значит,
Цитата(CADiLO @ Jul 11 2012, 16:18) *
Модем выдает URC - которое не сохранится согласно вашим установкам

Где он должен сохраниться?

CADiLO
Как обычно в переводе неточность - досмотрел что не всю фразу перевели. sm.gif

В стандарте - No SMS-DELIVER indications are routed to the TE

Не выдавать на индикацию, отправить в ТЕ - (терминал эквипмент) - в нашем случае выдать в последовательный порт.
Вот вы URC в порту и видите, экрана то у модуля нет. Стандарт ведь и для мобилок писан. А значит <mt> 0 не выведет на экран, но выдаст в порт.

Это как CLIP и CLIR - тоже расчитаны на работу с индикатором, а CLCC с портом (TE)
antis
Цитата(CADiLO @ Jul 11 2012, 17:18) *
Как обычно в переводе неточность - досмотрел что не всю фразу перевели. sm.gif

В стандарте - No SMS-DELIVER indications are routed to the TE

Не выдавать на индикацию, отправить в ТЕ - (терминал эквипмент) - в нашем случае выдать в последовательный порт.


Оригинальный перевод sm.gif Под indications здесь имеется ввиду URC, а ни как не дисплей телефона.
И раздел стандарта, в котором описана команда +CNMI называется
"New Message Indications to TE +CNMI", при чем здесь дисплей?

Смотрим GSM 07.05 - Figure 3: Message receiving procedures (стр. 50)
На котором видно, что при mt=0, на ТЕ на должны выводиться indications.

При mt=0, SMS должно "тихо" сохраниться в SM Strorages и все, без всяких +CMT:

CADiLO
Утром возьму модуль со склада и проверю.

И все же посмотрите подробное описание в приложеном файле - может мы недопоняли что.....
antis
Цитата(CADiLO @ Jul 11 2012, 17:56) *
Утром возьму модуль со склада и проверю.

И все же посмотрите подробное описание в приложеном файле - может мы недопоняли что.....


Так я, на этот стандарт и ссылаюсь
"Смотрим GSM 07.05 - Figure 3: Message receiving procedures (стр. 50)"

CADiLO
На 50й уже CNMA

CNMI на 44-45 странице.

Кстати нашел в одном источнике, правда по другому модему.

AT+CNMI=2,0,0,0,0<enter> - при получении сообщения в окне терминала будет выводиться код, который сообщит в какой ячейке памяти было сохранено сообщение (код области памяти и номер ячейки).

Очень похоже на ваш случай - память по умолчанию (пустые кавычки) и 30 ячейка.

Я бы попробовал 1,0,0,0,0

К сожалению переспросить у китайцев сейчас не могу - наш инженер в отъезде.
antis
Цитата(CADiLO @ Jul 12 2012, 10:50) *
На 50й уже CNMA

CNMI на 44-45 странице.


На 50 странице есть раздел "3.4.5 Informative Examples" (описание CNMA уже закончилось sm.gif)
и в нем рисунок Figure 3: Message receiving procedures
Если его посмотреть, то очень хорошо видно при каких настройках, что получается

Цитата(CADiLO @ Jul 12 2012, 10:50) *
Кстати нашел в одном источнике, правда по другому модему.

AT+CNMI=2,0,0,0,0<enter> - при получении сообщения в окне терминала будет выводиться код, который сообщит в какой ячейке памяти было сохранено сообщение (код области памяти и номер ячейки).

Очень похоже на ваш случай - память по умолчанию (пустые кавычки) и 30 ячейка.

Я бы попробовал 1,0,0,0,0


30 - это не номер ячейки, а размер PDU входящей SMS
SIM карта всего на 10 SMS.


CADiLO
По теме - написал запрос китайцам, по факту ответа сообщу.
Чесно признаю что сам запутался, но уже интересно стало, надо разобраться.


Ну а карты разные бывают.
SAMSUNG S5230 - сообщения - состояние памяти - SMS
SIM - 3/40
Phone - 0/500

Как видим на карте может быть 40 SMS.
Карточка MTC Украина, с 256кб памяти.

Старая была на 20 SMS, после утери и восстановления дали вот такую.
antis
Хорошо ждем, что скажут китайцы
antis
И что ответили китайцы?
antis
Похоже ответа не будет?
CADiLO
До сентября не отвечу - готовится новая прошивка, а по ней инфу пока не дают.
Сказали что если эта ошибка подтвердится то исправят.
Лето - народ в разъездах...
antis
Уж осень скоро, а нет уже зима настала
И прошивка новая вышла
А ответа все нет.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.