Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Telit gl868-dual. Кодировка входящих СМС
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
Ruslan-maniak
Здравствуйте. У меня проблема следующего характера: Я могу совершать звонки, принимать их и отправлять СМС в PDU формате. Однако приём СМС во включенном PDU режиме происходит странно. Если СМС на модем отправленно в 16-битном юникоде (то есть с использованием кирилицы) то с модема я получаю данные как положено по 4 символа на букву. Что соответствует 16-битному юникоду. И всё прекрасно декодируется в ASCII. Но если на модем приходит СМС в обычном тектовом формате (то есть латински буквы, цифры и разные знаки), то с модема я получаю следующий код этого СМС. Все служебные данные (номер отправителя, время, кол-во символов) приходят как надо. А вот сами символы в виде ASCII кода не приходят. То есть нормально приходит только первый символ, а за ним приходит мусор нужного размера. Например код входящего сообщения ("1234") запрошенного с модема АТ командой:
07919732520180F1040B91************00003180206170048204 31D98C06.
Отделённые пробелом данные и есть текст. Как видим первый символ соответствует истине (0x31 = '1'), а дальше три символа с мусором. Кто с этим сталкивался? В чём может быть косяк?
Если выключить режим PDU, то смс в любой кодировке принимается как надо. Так что вынужден сейчас сначала читать смс в режиме PDU (так как только так мы можем узнать кодировку пришедшего СМС), выключать этот режим, и снова читать пришедшее сообщение. Но это какой-то изврат и хочется разобраться в чём дело.
CADiLO
Семибитное кодирование ? wink.gif

http://smsinside.blogspot.com/2007/07/blog-post_09.html

апнот по PDU на русском

http://microchip.ua/simcom/SIM900x/AppNote...0Pdu%20mode.pdf
molecul
Цитата(Ruslan-maniak @ Aug 2 2013, 13:38) *
Здравствуйте. У меня проблема следующего характера: Я могу совершать звонки, принимать их и отправлять СМС в PDU формате. Однако приём СМС во включенном PDU режиме происходит странно. Если СМС на модем отправленно в 16-битном юникоде (то есть с использованием кирилицы) то с модема я получаю данные как положено по 4 символа на букву. Что соответствует 16-битному юникоду. И всё прекрасно декодируется в ASCII. Но если на модем приходит СМС в обычном тектовом формате (то есть латински буквы, цифры и разные знаки), то с модема я получаю следующий код этого СМС. Все служебные данные (номер отправителя, время, кол-во символов) приходят как надо. А вот сами символы в виде ASCII кода не приходят. То есть нормально приходит только первый символ, а за ним приходит мусор нужного размера. Например код входящего сообщения ("1234") запрошенного с модема АТ командой:
07919732520180F1040B91************00003180206170048204 31D98C06.
Отделённые пробелом данные и есть текст. Как видим первый символ соответствует истине (0x31 = '1'), а дальше три символа с мусором. Кто с этим сталкивался? В чём может быть косяк?
Если выключить режим PDU, то смс в любой кодировке принимается как надо. Так что вынужден сейчас сначала читать смс в режиме PDU (так как только так мы можем узнать кодировку пришедшего СМС), выключать этот режим, и снова читать пришедшее сообщение. Но это какой-то изврат и хочется разобраться в чём дело.

Вот, навскидку проверил, все корректно:
Цитата
at+gmm

GL868-DUAL

OK
at+cgmr

10.00.184

OK
at+cmgf=1

OK
at+cscs="UCS2"

OK
at+cmgl="ALL"

+CMGL: 1,"REC UNREAD","002B00370039003100310039003500390039003500300039","","13/08/02,18:00:20+32"
00310032003300340430

at+cmgf=0

OK
at+cmgl=1

+CMGL: 1,1,"",29
07919720990000F3040B919711599905F90008318020810002230A00310032003300340430

OK
at+cmgr=2                                                                      
                                                                               
+CMGR: 0,"",27                                                                 
07919720990000F3040B919711599905F9000831802081315423080031003200330034         
                                                                               
OK                                                                             

Пришлите полный лог, включая версию прошивки.
Ruslan-maniak
Про семибитную кодировку щас поизучаю, теоретически должна быть семибитная (не знал этого), но на практике даже по ней получается мусор.
CADiLO
Бывает что операторы чудят с кодировками - сталкивались уже......

Я в STK c таким столкнулся - служебные сообщения приходят в IRA, а строки меню в UCS-2
Ruslan-maniak
Вот как это проиходит:
Код
AT+CMGF=0
OK

AT+CNMI=2,1,0,0,0\r
OK

AT+CMGD=1,4
OK

+CMTI: "SM",1

AT+CMGR=1
+CMGR: 0,"",23
07919732520180F1040B91************0000318020717262820431D98C06
OK

AT+CMGF=0
OK

AT+CMGR=1
+CMGR: "REC READ","************","","13/08/02,17:37:06+28"

1234

OK


Модем: GL868-DUAL
Прошивка: 10.00.186
CADiLO
Ну декодировал я нормально сообщение - как и говорил семибитная кодировка.

Вместо звездочек подставил 050000000000 - увидите в поле "number is"

Смотрите что у вас в "датакодингсхеме" стоит - в данном сообщении 00

Из документа который я давал выше следует - :
Когда все биты DCS равны 0, то есть DCS = 00h говорит о применении Default GSM Alphabet (алфавита GSM по умолчанию)


PDUSPY вам в помощь
Ruslan-maniak
Ага, разобрался. Огромное спасибо за подсказку.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.