Обычная версия
Java форум JavaTalks
форум программистов

Поиск   Пользователи   Группы   Регистрация 
 Профиль   Личные сообщения 

 Вход 

Проблемы с кодировкой ответа USSD запроса к GSM модему.
Список форумов
 ->  Локализация (l10n & i18n)


 
Начать новую тему 
Предыдущая тема :: Следующая тема  
Автор Сообщение
Imwill : 1
Новичок

СообщениеСен 26, 2011 16:03 
Ответить с цитатой
Модем Teleofis RX101-R USB построенный на базе GSM модуля Telit GL868.
В проекте используется библиотека SMSLib.
На USSD запрос, например, баланса модем отвечает:
+CUSD: 2,"04110430043B0430043D0441002000330030002E00360034044004430431002E00000000102620000000000000000000AA020A00EA290030DFAA05009D0034C0",72

Используя документацию к GSM модулю Telit GL868 определил, что 72 в ответе означает GSM 3.38 Cell Broadcast Data Coding Scheme in integer format.

Погуглив на эту тему нашел документацию в которой описывается, что 72 = 0x48=01001000 = USC2 (16 bit)

Суть проблемы: имея на руках ответ от модема и зная кодировку, все равно не могу получить ответ в нужном виде. Ответ должен быть вида - "Баланс: 30 руб."
Как я понимаю проблему: библиотека SMSLib получая ответ от модема, не может определить его кодировку и возвращает просто набор шестнадцатиричных цифр преобразованных в строку(ответ на ussd запрос, выполненный с помощью AT команд в терминале, так же набор шестнадцатиричных цифр). Так как на Java я разрабатываю совсем недавно, то я не могу понять как преобразовать полученную от модема строку в текст вида "Баланс: 30 руб.".
К началу Посмотреть профиль Отправить личное сообщение
Skipy : 4805
Я тут живу!
Откуда: Москва, Россия

СообщениеСен 26, 2011 16:21 
Ответить с цитатой
Imwill писал(а):
"04110430043B0430043D0441002000330030002E00360034044004430431002E00000000102620000000000000000000AA020A00EA290030DFAA05009D0034C0"

я не могу понять как преобразовать полученную от модема строку в текст вида "Баланс: 30 руб.".


0411 0430 043B 0430 043D 0441 0020 0033 0030 002E 0036 0034 0440 0443 0431 002E

UCS2 16 bit = UTF-16

0411 = Б
0430 = а
043B = л
0430 = а
043D = н
0441 = с
0020 = ' ' (пробел)
0033 = 3
0030 = 0
002E = .
0036 = 6
0034 = 4
0440 = р
0443 = у
0431 = б
002E= .
_________________
С уважением,
Евгений aka Skipy
www.skipy.ru
P.S. Я НЕ решаю задачи ЗА других!
К началу Посмотреть профиль Отправить личное сообщение Посетить сайт автора
 
Начать новую тему  Ответить на тему
Страница 1 из 1
Список форумов
 -> Локализация (l10n & i18n)


 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Java and all Java-related trademarks and logos are trademarks or registered trademarks of Oracle Corporation in the United States and other countries.
Это сайт не относится к фирме Oracle Corporation и не поддерживается ею.

© 2006-2010 www.javatalks.ru: форум java программистов
Используется скрипт phpBB © 2001, 2010 phpBB Group

Хостинг от bizname.ru