Команда gsm ATD для проверки моего баланса

Я пытаюсь написать программу, которая делает телефонный звонок через bluetooth и возвращает мой баланс (деньги). Я использую API Bluetooth 32feet.net.

BluetoothAddress addr = device.DeviceAddress;
BluetoothEndPoint rep = new BluetoothEndPoint(addr, BluetoothService.Handsfree);
BluetoothClient cli = new BluetoothClient();
cli.Connect(rep);

Stream peerStream = cli.GetStream();
String dialCmd4 = "ATD*100#;\r";
Byte[] sRes = new Byte[200];

Byte[] dcB = System.Text.Encoding.ASCII.GetBytes(dialCmd4);
peerStream.Write(dcB, 0, dcB.Length);

peerStream.Read(sRes, 0, 199);
string t4 = "\n\r----------\n\r" + System.Text.Encoding.ASCII.GetString(sRes);


peerStream.Close();
cli.Close();

Этот код делает обычный звонок, но не возвращает сообщение с моим балансом, а в телефоне я вижу это сообщение «номер не назначен».


person mhamdizo    schedule 06.03.2014    source источник


Ответы (1)


Использование ATD для отправки команд SS (дополнительная услуга) USSD (неструктурированные дополнительные служебные данные) в очень-очень-самом лучшем случае будет работать только для небольшого подмножества (или не будет работать вообще). Когда вы вводите эти номера с помощью MMI, они анализируются. совершенно другим объектом, чем тот, который анализирует AT-команды).

Что вы действительно хотите сделать, так это использовать те AT-команды, которые были специально написаны для поддержки отправки SS или USSD. Для USSD вы используете

AT+CUSD=[<n>[,<str>[,<dcs>]]]

Подробнее см. в спецификации 3GPP 27.007.

person hlovdal    schedule 06.03.2014