USSD-ответ является числовым

AT+CUSD=1,"service_code",15

+CUSD: 0,"0056006F0074007200650020006300720065006400690074002000730074006F0072006D002D0063007200650064006900740020006500730074002000310036003500310032002E00300030002000440069006E00610072002E",72

Как получить читаемый ответ? Благодарю.

это AT&V:

&С: 1; Д: 2; &Э: 0; &Ф: 0; &S: 0; &В: 0; Э: 0; Л: 0; М: 0; Вопрос: 0; В: 1; Х: 1; З: 0; \Q: 3; \С: 0; \В: 0; S0: 0; С2: 43; С3: 13; С4: 10; С5: 8;С6: 2; С7: 60; С8: 2; С9: 6; С10: 14; С11: 95; С30: 0; S103: 1; S104: 1;+FCКЛАСС: 0; +МКФ: 3,3; +ИФК: 2,2; +ИПР: 115200; +ДР: 0; +DS: 0,0,2048,6;+WS46: 12; +CBST: 0,0,1;+CRLP: (61,61,48,6,0),(61,61,48,6,1),(240,240,52,6,2);+CV120: 1 ,1,1,0,0,0; +ЧСН: 0,0,0,0; +CSSN: 0,0; +КРЕГ: 0; +CGREG: 0;+CFUN:; +CSCS: "ИРА"; +КСТА: 129; +КР: 0; +CRC: 0; +СМЭЭ: 2; +CGDCONT: (1,"IP","интернет","0.0.0.0",0,0); +CGDSCONT: ; +ВГТФТ: ; +CGEQREQ: ; +CGEQMIN: ; +CGQREQ: ; +CGQMIN: ;+CGEREP: 0,0; +CGDATA: "PPP"; +CGКЛАСС: "А"; +СГСМС: 1; +CSMS: 0;+CMGF: 1; +CSAS: 0; +КРЕС: 0; +CSCA: "+21350001701", 145; +CSMP: ,,0,0;+CSDH: 0; +CSCB: 0,"",""; +ДДД: 0; +ДАЛЕЕ: 0; +ФКЛ: 0; +ПОИСК: 0,0; +ES: ,,;+ESA: 0,,,,0,0,255,; +КМОД: 0; +КВХУ: 1; +CPIN: ÿÿÿÿÿÿÿÿ,ÿÿÿÿÿÿÿÿ;+CMEC: 0,0,0; +КПД: 1,1; +CIND: 0,2,1,0,0,0,0,0; +CMER: 0,0,0,0,0;+CGATT: 0; +ГКАКТ: 0; +КПБС: "СМ"; +CPMS: "ME","ME","ME";+CNMI: 3,1,0,2,0; +CMMS: 0; +ФТС: 0; +ФРС: 0; +ПТН: 3; +FRH: 3; +FTM: 96;+FRM: 96; +ККУГ: 0,0,0; +КОПС: 1,0,""; +CUSD: 1; +САОС: 1; +CCWA: 1;+CCLK: ""; +КЛВЛ: 2; +КОММУТ: 0; +CPOL: 0,2,"",0,0,0; +ЦПЛС: 0; +КТЗР: 0;+КТЗУ: 0; + ЗАЖИМ: 1; +КОЛП: 0; +CDIP: 0; +КЛИР: 0; +ZSNT: 0,0,0;+ZDLFREQ: 0,0; +ЗОПРТ: 0; +КМВЛ: 0


person user1104916    schedule 06.05.2016    source источник
comment
Это pdu, введите AT+CMGF=1, чтобы переключиться в текстовый режим.   -  person Alex K.    schedule 06.05.2016
comment
Спасибо за ответ, но проблема та же   -  person user1104916    schedule 06.05.2016


Ответы (1)


Основной ответ - просто интерпретировать каждые 2 байта как строковое представление шестнадцатеричного числа. Каждая цифра 2 является символом UCS-2. Итак, ваша строка

Votre credit storm-credit est 16512.00 Dinar.

Длинный ответ: вам нужно прочитать 3GPP TS 23.038 V13.0.0 (2015-12) и интерпретировать значение 72, чтобы понять, как декодировать эту строку. В вашем случае это group=0100 coding=UCS2 compressed=false.

Также я думаю, что +CMGF не влияет на +CUSD. Это больше для команды, связанной с смс. Вы можете попробовать установить at+cscs="IRA" для выбора вашей кодировки, но я не думаю, что это поможет с UCS2, и это нестандартный способ.

3GPP TS 27.007 V13.4.0 (2016-03)

если dcs указывает, что используется 16-битная схема кодирования данных (UCS2): MT/TA разбивает 16 битов на два 8-битных октета. Каждый из этих октетов преобразуется в соответствии с 8-битной схемой кодирования данных, при этом наиболее значимый октет идет первым (например, десятичное значение 4906 представляется TE в виде четырех символов 132A (IRA 49, 51, 50 и 65))

Byt мой WaveCom SIM300 отправляет UCS2 напрямую, если установлен IRA и шестнадцатеричная строка, если установлен HEX.

person moteus    schedule 20.05.2016