Команда AT+CUSD: Кодиране на отговора

Изпращам команда AT+CUSD (за набиране на ussd код) към gsm модем. Работи добре. Отговорът също е правилен на слушалката. Но отговорът е според мен в шестнадесетичен формат или някакво непознато за мен кодиране:

ХАРДУЕР НА GSM МОДЕМ:

Nokia C6-01

Свързан с лаптоп чрез USB кабел. USB режим: Nokia Suite

Команди за инициализиране на кодирането:

AT+CSCS=?

+CSCS: ("UCS2","GSM","PCCP437","PCDN","IRA","8859-1","HEX","UTF-8")

AT+CSCS="IRA"

AT+CSCS?

+CSCS: "IRA"

Също така опитах:

AT+CSCS="GSM"
AT+CSCS="UTF-8"

Действителна команда Ussd:

AT+CUSD=1,"*123#",15

Действителен отговор:

+CUSD: 1,"c47258e1ad7e7f477bb2c6781e0ec72785e691d36136481593cd54f6777d8c2ecb23e1313d6dfd3d36f7764fc26974720fa1b242f8fd161f9b9cc",1

OK

Очакван отговор:

AT+CUSD=1,"*123#",15

+CUSD: 1,"Dear Customer.... some response in english",1

person Syed Aqeel Ashiq    schedule 04.05.2015    source източник
comment
Краят на +CUSD отговора завършва с ,1 това правилно ли е? Или всъщност завършва на ,15?   -  person Matt Aldridge    schedule 04.05.2015
comment
@aldridmc В отговора завършва с 1. Правилно е и не е печатна грешка.   -  person Syed Aqeel Ashiq    schedule 04.05.2015
comment
каква разлика прави това сър?   -  person Syed Aqeel Ashiq    schedule 04.05.2015
comment
Числото след последната запетая определя кодирането на USSD. Обикновено или 15 за 7-битов или 72 за UC2   -  person Matt Aldridge    schedule 04.05.2015
comment
Като странична бележка AT+CMGF=1 влияе само на SMS, а не на USSD.   -  person Matt Aldridge    schedule 04.05.2015
comment
и сега показва 15 след запетаята в отговора. И мога да се обзаложа, че преди това показваше 1 след запетаята.   -  person Syed Aqeel Ashiq    schedule 04.05.2015


Отговори (2)


Изглежда като проблем с декодирането на модема. Трябва да се коригира чрез използване на стандартното IRA кодиране на повечето модеми.

Опитайте да използвате:

AT+CSCS="IRA"

И след това опитайте USSD командата, за да получите отговор отново.

Като странична бележка можете да изведете наличните възможности за кодиране на вашия модем чрез:

AT+CSCS=?

USSD са кодирани като 7-битов GSM или UC2. За да декодирате с помощта на 7-Bit, погледнете 3GPP ETSI 03.38. За декодиране на UC2 това е основно UTF-16, така че 2 байта дефинират символ.

Опитвам със 7-битов:

C4    1 1000100     100 0100     D
72    01 110010     110 0101     e
58    010 11000     110 0001     a
E1    1110 0001     000 1010     <LF>
AD    10101 101     101 1110     ü
7E    011111 10     101 0101     U
7F    0111111 1     101 1111     §
47    0 1000111     011 1111     ?
7B    01 111011     100 0111     G

Dea<LF>üU§?G

Започва добре със 7-Bit, но след 3 символа е просто боклук.

Опитът с UC2 просто произвежда боклуци.

Заключение: Може би конкретен проблем с използвания модем (все пак би било полезно да знаете кой модел на производителя е). Или как сте свързани с модема (като се има предвид, че USSD низът не е валиден шестнадесетичен низ, тъй като е с различна дължина).

person Matt Aldridge    schedule 04.05.2015
comment
Същият отговор дори след настройка. - person Syed Aqeel Ashiq; 04.05.2015
comment
Можете ли да изпълните AT+CSCS=? командвай и ми покажи какво получаваш обратно? Също така би било полезно да знаете производителя и модела на вашия модем - person Matt Aldridge; 04.05.2015
comment
Хей, сър, добавих необходимите команди. Моля, погледнете въпроса ми отново. - person Syed Aqeel Ashiq; 04.05.2015
comment
Можете ли да кажете какво е кодирането на изходния низ? За да мога да обработя изходния низ в моя код, за да го конвертирам в четим формат - person Syed Aqeel Ashiq; 04.05.2015
comment
Изходният низ в текущата си форма не е нищо валидно. Очевидно това е шестнадесетичен низ, но с дължина 117 знака. Така че е неравномерно и следователно или сте имали проблеми с копирането и поставянето, или проблеми с четенето на изхода от самия модем. - person Matt Aldridge; 04.05.2015
comment
Проверих, че няма проблеми с копиране и поставяне в отговорния низ - person Syed Aqeel Ashiq; 05.05.2015
comment
Господине, как да го конвертирате в четима форма? Това може да даде някои указания за действителния проблем. - person Syed Aqeel Ashiq; 05.05.2015
comment
Здравейте, господине, добавих заглавието за хардуер във въпроса си. Моля, погледнете още веднъж. - person Syed Aqeel Ashiq; 06.05.2015
comment
Добре, това помага малко. Можете ли да опитате да зададете кодирането на HEX и да изпратите отново USSD командата и да поставите коментара или въпроса. - person Matt Aldridge; 06.05.2015
comment
Здравейте, сър, благодаря за помощта в това. Моля, помогнете ми по друг свързан въпрос: stackoverflow.com/questions/30125721/ - person Syed Aqeel Ashiq; 08.05.2015
comment
Открих една много вероятна причина за боклука след 3-тия байт: скоростта на предаване е неточна. Когато използвате автоматично предаване на данни, той не избира само една от стандартните скорости на предаване. Може да е всичко. Имах подобна корупция след около 40 знака, като прогресивно се влошаваше. След като издадох AT+IPR=9600, повредата изчезна и съобщението беше ясно. - person Mark Jeronimus; 24.10.2018

темата е малко стара, но може би това ще помогне на хората, които идват тук!

Форматът очевидно е в шестнадесетичен UC2, 16-битов номинален знак! така че трябва да го конвертирате обратно в четим низ! Ако знаете как да програмирате, това е проста задача! създайте своя функция, която прави това! вземете всеки 4 символа! поставете ги на $hex ==› конвертирайте ги в char! пример в php! правите това с двете функции chr(hexdec($hex)) по този начин! БРАВО ЗА БЕЗ ПРОГРАМИСТИ! разгледайте тази страница онлайн конвертор

има твърде много и твърде много не работят! във всички случаи! този е добър! и нещо повече от това! е, че можете да запазите цялата страница на вашия компютър! и го използвайте, когато сте офлайн! те са направили внедряването в javascript! и е включено! страхотен!

добре сега за програмистите! има функция, която създадох в php! работех върху нещо! с AT команди! и тук създадох моя собствена функция! може и да ти помогне!

ето го файла! не можах да го публикувам като код директно тук! някои не са прости (идентификация!) =› това е doc файл на моя google диск

надявам се да е полезно!!!

person Mohamed Allal    schedule 06.03.2017