Member 10364520 Ответов: 4

USSD-приложение, использующее AT-команды


Привет

Я написал приложение на языке C#, которое должно взаимодействовать с gsm-модемом с помощью AT-команд.
Все остальные команды работают хорошо для меня, за исключением USSD-команд, которые, по-видимому, возвращают шестнадцатеричную или зашифрованную строку в ответе.

USSD-команда, которую я выполняю, такова: AT+CUSD=1,"*125#",15 и он возвращает тот же результат в моем коде и на гипертерминале.

Взгляните на запрос и результат запроса, который я взял с экрана hyperterminal

AT+CUSD=1,"*125#",15
ОК

+CUSD: 0,"004100630063002000420061006C00200030002E003000300030003000200055005300
440020004500780070003A00300036002F00300033002F00310034002E0030005400580054007300
20004500780070003A002D002E00300042006F006E0075007300200053004D005300200045007800
70003A002D002E0030004600720065006500200053004D005300730020004500780070003A002D00
2E0030002E0030003000550053004400200042006F006E0075007300200061006900720074006900
6D00650020006500780070003A002D002E004E00650077002000530049004D00200030002E003000
30005500530044002C00300053004D0053002C00200030002E00300030004D0042002C0020003000
4D004D00530020004500780070003A002D002E002000300054004D00200053004D005300730020",
72

не могли бы вы помочь мне как можно лучше, я застрял.

Richard MacCutchan

Каких результатов вы ожидаете? Если вы получаете те же значения от hyperterm, то ваш код, вероятно, правильный.

Member 10364520

Я ожидаю получить свой баланс, и я должен получить такой ответ: "Ваш баланс составляет 100 долларов..."

Richard MacCutchan

Вам нужно уточнить у вашего поставщика услуг, каков формат ответа.

aminvincent

могу я получить ваш проект? потому что мне нужен пример для ussd-команды ,...Спасибо

4 Ответов

Рейтинг:
2

Alexander D. Alexeev

Я думаю, что сообщение находится в шестнадцатеричном представлении символов Юникода
Ваше сообщение

Акк бал 0.0000 Ехр долларов:06/03/14.0 TXTs Опыта:-.0Bonus СМС Ехр:-.0Free SMS-сообщения Ехр:-.0.00 долларов США, при этом бонусные опыта:-.Новые SIM-0.00 долларов США,0SMS, 0.00 МБ 0MMS опыта:-. SMS-сообщения 0TM

Просто преобразуйте строку из шестнадцатеричного кода в байты и интерпретируйте ее как строку unicode.


CPallini

5.

Рейтинг:
1

Member 10364520

Во всяком случае, мне удалось решить ее в прошлом году, Спасибо за ответ.


Ehsan Waris

не могли бы вы поделиться своим кодом, пожалуйста? Мне нужна помощь в отправке ussd-кодов через gsm... и я не могу найти никакого полезного учебника или hrlp.

Member 10888987

Не могли бы вы рассказать мне, как вы решили эту проблему?

Member 11431150

Вы можете использовать функцию split для разделения данных.
Например в VB.Net :

Dim strData as string = "Mydata1,Mydata2,MyData3"
Dim mSplit() as string = strData.Split(",")

в строке 2 mSplit-это массив. Значение mSplit сейчас таково :

mSplit(0) = "Mydata1"
mSplit(1) = "Mydata2"
mSplit(2) = "Mydata3"

Рейтинг:
1

Member 11431150

Перед отправкой USSD с помощью команды AT, пожалуйста, установите модем или Handphone в текстовый режим, с


При+CMGF=1 это устанавливает модем в (текстовый режим)


При+CMGF=0 это устанавливает модем в режим (PDU mode)

Надеюсь, вы меня понимаете


RashmitaS

Я пытаюсь отправить USSD-код для запроса баланса от Hyperterminal с помощью GSM-модема Huawei.

Я получаю ошибку [+CME ERROR: 100], когда использую код в+CUSD=1,"*901#",15

Поэтому я изменил свой код на AT+CUSD=1,"2a39303123",15

Теперь ответ таков

ОК
+CUSD: 2

Но нет никакого ожидаемого ответа вроде "баланс:Rs. 46.84.Ek ko dui offer! Matra Rs. 12* ma 18 Мб данных.Yo dainik data pack kharid garna *17123# dial garnuhos"

который я получаю, когда отправляю тот же USSD-код из приложения модема. Пожалуйста, помогите.

Member 2281771

У меня все та же проблема. Я получаю только +CUSD: 2 , но никаких данных не предоставляется.
Пожалуйста, посоветуйте , как я могу получить необходимые данные, например баланс:....

Рейтинг:
0

romi_4rd1

Try switch your chips to another provider, I have same problem before.


Richard MacCutchan

Ответили Четыре года назад.