motofan logo
       
> 

At Sms, Код

Udman
сообщение 20.11.2005, 21:48


Мастер
****

Группа: Пользователи
Сообщений: 200
Регистрация: 26.9.2005
Из: Черкассы, Украина
Пользователь №: 52 766
Модель телефона: ROKR E1
Прошивка: R373_G_0E.30.46R

Рейтинг: 43



Тут такая проблема.Получаю список смс через АТ комманды, и вместо текста смс вижу цифры. Пробовал at+cscs="UTS2" поставить перед получением списка,ниче не сменилось. Пробовал at+cscs="ASCII",выводит только англ.символы. at+cmgf=1 это тоже пробовал. Ничего. Переискал все что можно по этому и ничего не нашел. Такой вот вопрос. Как эти СМС(числа) перекодировать в СМС(Текст). Не плохо было бы примерчик. Спасибо. :)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
KosteT
сообщение 21.11.2005, 6:32


Ветеран
*****

Группа: Пользователи
Сообщений: 361
Регистрация: 8.3.2005
Из: Иркутск
Пользователь №: 38 391
Модель телефона: LG Duos
Прошивка: duos

Рейтинг: 122



Udman,
Сорри за неответ на вопрос, но качни прогу easyport там поймёш.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Udman
сообщение 21.11.2005, 11:39


Мастер
****

Группа: Пользователи
Сообщений: 200
Регистрация: 26.9.2005
Из: Черкассы, Украина
Пользователь №: 52 766
Модель телефона: ROKR E1
Прошивка: R373_G_0E.30.46R

Рейтинг: 43



Пробовал. Ничего не понял! Кодирует,только вот как я не понял. Разве в ате коммандах есть что-то типа !log !snd???
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Deamon
сообщение 21.11.2005, 15:18


Интересующийся
**

Группа: Пользователи
Сообщений: 55
Регистрация: 16.8.2005
Из: г.Первоуральск
Пользователь №: 48 814
Модель телефона: E1 iTunes
Прошивка: R365_G_0B.D2.32R

Рейтинг: 20



Дело в том, что русский текст в моторолах может передаваться только в юникоде (в ascii - только латинские символы), поэтому ты и видел только "цифры" вместо букв. Для начала посылай команду AT+CSCS=UCS2 таким образом весь текст тебе будет приходить в юникоде (включая латинксие символы). Ну а затем дело техники, нужно написать процедуру конвертирования юникода (UCS) в аски (ASCII).
Пример:
Аски строка: Motorola
В юникоде: 004D006F0074006F0072006F006C0061
Т.е. 004D 006F 0074 006F 0072 006F 006C 0061 - каждый код соотвествует одному символу (коды в hex). Таблицу кодов можешь найти в сети а по-поводу процедур перекодирования смотри здесь: http://forum.vingrad.ru/index.php?showtopic=54518
"Формы" перекодировки есть в разных программах, например у меня (Phonebook Moto Manager) или в P2kTools
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Udman
сообщение 21.11.2005, 15:51


Мастер
****

Группа: Пользователи
Сообщений: 200
Регистрация: 26.9.2005
Из: Черкассы, Украина
Пользователь №: 52 766
Модель телефона: ROKR E1
Прошивка: R373_G_0E.30.46R

Рейтинг: 43



Спасибо. Сейчас попробуем!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
n0wheremany
сообщение 22.11.2005, 7:51


Прогр@ммер
*****

Группа: Почётные мотофаны
Сообщений: 564
Регистрация: 10.9.2005
Пользователь №: 51 111
Модель телефона: E398

Рейтинг: 341



SMS и формат PDU

Как определено в стандарте ETSI (GSM 03.40 и GSM 03.38), длина SMS сообщения не может быть больше 160 символов, где каждый символ представлен только 7 битами ( 7-битный GSM Default алфавит). Восьмибитная кодировка (максимальная длина сообщений 140 символов) обычно предназначается для передачи не текстовых сообщений, таких как изображения, мелодии, различные OTA сервисы. 16-битная кодировка (максимальная длина 70 символов) используются для сообщений в Unicode (UCS2) кодировке. 16-битовое сообщение класса 0 будет на некоторых телефонах отображаться как "флеш" SMS.

PDU формат
Есть два способа посылки и получения СМС: в текстовом режиме и используя т.н. PDU (protocol description unit) режим. В текстовом режиме (недоступном на некоторых телефонах) - осуществляется только кодирование данных посредством PDU. Таблицы представляемых символов могут отличаться друг от друга и иметь несколько альтернативных кодировок. Наиболее распространенными являются "PCCP437", "PCDN", "8859-1", "IRA", "Win1251" и "GSM". Они могут быть установлены командой AT+CSCS при просмотре СМС на компьютере. При просмотре СМС на телефоне - телефон сам выберен необходимую таблицу символов. Также приложение, предназначенное для чтения СМС сообщений может использовать текстовый режим и режим PDU

Получение сообщения в PDU режиме
Строка PDU содержит не только текст сообщения, но также и необходимую служебную информацию об отправителе, его центре обслуживания, штамп времени и т.д. Все данные представляются в 16-ричном виде. Следующая строка - то, что получается при получении сообщения "hellohello" на телефон Nokia 6110.
07 917283010010F5
040BC87238880900F10000993092516195800AE8329BFD4697D9EC37
Эта последовательность октетов состоит из трех частей: начальный октет, указывающий длину номера SMSC отправителя (07 байт), непосредственно номер SMSC отправителя (917283010010F5), и SMS_DELIVER (определенный ETSI в GSM 03.40).
Необходимо отметить, что некоторые телефоны (например Ericssson 888?) информацию об СМСЦ отправителя не показывают. Октет(ы) Описание
07 Длина номера SMSC (7 октетов)
91 Тип номера SMSC. (91 - номер СМСЦ преджставлен в международном формат)
72 83 01 00 10 F5 Номер СМСЦ отправителя (в десятичных полуоктетах). Если длина номера СМСЦ нечетна, то для выравнивания используется 0xF. В приведенном примере номер СМСЦ: +27381000015.
04 Первый октет SMS-DELIVER
0B Длина адреса отправителя. (0x0B - 11 октетов)
C8 Тип-адреса номера отправителя
72 38 88 09 00 F1 Номер отправителя (десятичные полуоктеты), с выравниванием с помощью 0xF. В приведенном примере номер отправителя: +27838890001
00 TP-PID. Идентификатор протокола.
00 TP-DCS, кодировка
99 30 92 51 61 95 80 TP-SCTS. Штамп времени (полуоктеты). В примере: 99032915165908
0A TP-UDL. Длина сообщения. Если TP-DCS указывает на 7-битную кодировку данных, то данное значение равно числу семиразрядных байтов (10). Если бы TP-DCS указывала на 8-битную кодировку или на Unicode, то TP-UDL (9).
E8329BFD4697D9EC37 TP-UD. Сообщение "hellohello", представленное в 7-битной кодировке

Все октеты представляются в шестнадцатеричном виде, кроме номера СМСЦ, номера отправителя и штампа времени, которые представлены десятичными полуоктетами. Часть сообщения в конце PDU состоит из шестнадцатеричных 8-битовых октетов, но эти октеты представляют 7-битовые данные.
Полуоктеты представляют десятичные цифры, и, например, номер отправителя получается при перестановке десятичных цифр в каждом октете: от "72 38 88 09 00 F1" к "27 83 88 90 00 1F". Длина телефонного номера нечетна, поэтому в последний октет добавлен F. Штамп времени после преобразования равен "99 03 29 15 16 59 08", где первые 6 знаков представляют дату, следующие 6 - представляет время, и последние два- часовой пояс.

Преобразование 8-битовых октетов в 7-битовые
Это преобразование подробно описано в GSM 03.38, а пример преобразования сообщения "hellohello" даже рассморен в этой статье. Преобразование основано на 7-битном GSM Default алфавите, но приложения , используемые PDU, могут использовать любую таблицу символов.

Отправка сообщения в PDU режиме
Следующий пример показывает, как послать сообщение "hellohello" в PDU режиме с телефона Nokia 6110.

AT+CMGF=0 - установить PDU режим
AT+CSMS=0 - установить, если модем поддерживает СМС команды
AT+CMGS=23 - послать сообщение длиной 23 октета (исключая первый октет 0x00)
0011000B916407281553F80000AA0AE8329BFD4697D9EC37

Сообщение состоит из 23 октетов (46 символов). Первый октет (0х00) не считается, он указывает на длину информации о СМСЦ.
Строка PDU: Октет(ы) Описание
00 Длина информации о SMSC. Длина - 0 означает, что для отправки СМС должен использоваться номер SMSC, сохраненный в телефоне. Этот октет является дополнительным. Для некотоорых телефонов этот октет должен быть опущен! (Но все равно будет использоватьтся СМСЦ, сохраненный в телефоне.
11 Первый октет SMS-SUBMIT
00 TP-Message-Reference. Значение 0х00 указывает на то, что в качестве номера телефона отправителя будет использоваться номер.
0B Длина номера получателя (11)
91 Тип-адреса. (91 указывает международный формат телефонного номера).
6407281553F8 Телефонный номер получателя в международном формате в полуоктетах (46708251358). Если указать номер телефона в местном формате (Type-of-Address равен 81 вместо 91), то для указания номера телефона можно было бы использовать 10 октетов (0x0A) и октеты были бы представлены как 7080523185 (0708251358).
00 TP-PID. Идентификатор протокола
00 TP-DCS.
AA TP-Validity-Period. "AA" означает 4 дня. Этот октет является дополнительным, см. 4 и 3 первого октета
0A TP-User-Data-Length. Длина сообщения.
E8329BFD4697D9EC37 TP-User-Data. Эти октеты представляют сообщение "hellohello", преобразованное в 7 битку.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Udman
сообщение 28.11.2005, 23:44


Мастер
****

Группа: Пользователи
Сообщений: 200
Регистрация: 26.9.2005
Из: Черкассы, Украина
Пользователь №: 52 766
Модель телефона: ROKR E1
Прошивка: R373_G_0E.30.46R

Рейтинг: 43



Ец такой вопрос у меня есть. Наверное не буду создавать новую тему, напишу здесь,может кто увидет. Как через АТ можно получить время и дату СМС сообщения доставленного или принятого? Заранее спасибо за ваши ответы!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
n0wheremany
сообщение 1.12.2005, 15:29


Прогр@ммер
*****

Группа: Почётные мотофаны
Сообщений: 564
Регистрация: 10.9.2005
Пользователь №: 51 111
Модель телефона: E398

Рейтинг: 341



Udman
Дык - выше описано по моему всё что нужно.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Softel1
сообщение 1.12.2005, 16:09


Интересующийся
**

Группа: Пользователи
Сообщений: 34
Регистрация: 26.3.2005
Пользователь №: 39 601
Модель телефона: Motorola c380
Прошивка: R364_G_0B.D1.09R

Рейтинг: 1



Re: Udman
Вот пример (фрагмент журнала программы easyport для Мото С380) -- номера тел - изменены

------------>>> даёт команда mmgR -см. ниже - специально только что послала смс "Привет" (потратила денежки ! :( )

Moto++Перекодированный список СМС в телефоне - команда -> at+mmgl="ALL"

+MMGL: 2, "REC UNREAD", "+70957699100"
Message for 8916-------, with identification 051201190441 has been delivered on 2005-12-01 at 19:04:51.
+MMGL: 1, "REC UNREAD", "+7916-------"
Привет
+MMGL: 704, "STO SENT", "+7916-------"
Привет
+MMGL: 697, "STO SENT", "8916-------"
Поздравляю с годовщиной семьи. мото с390 с гол. зубом 4т.р.в Евросети
+MMGL: 691, "STO SENT", "+7916-------"
Поздравляю с Дн м рождения! Желаю чтобы у тебя вс получалось
+MMGL: 684, "STO SENT", "088011"
?
OK

++ Перекодировано SMS-сообщений=6 (в кодировке "UCS2")
at+mmgr=1
+MMGR: "REC UNREAD", "+7916--------", "2005/12/1,19:4:41"
Привет
OK

++ Перекодировано записей тел. книги=0 (в кодировке "UCS2")

++ Перекодировано SMS-сообщений=7 (в кодировке "UCS2")

++ Перекодировано записей еженедельника=0 (в кодировке "UCS2")
:)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
At Sms, Код · Ломаем и строим! · Forum
 

Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 4.8.2025, 4:56

Форум живёт: