gsm ATD命令检查我的余额

时间:2014-03-06 23:16:55

标签: c# bluetooth gsm at-command 32feet

我正在尝试编写一个通过蓝牙拨打电话的程序 并返还我的余额(钱)。我正在使用32feet.net蓝牙api。

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();

此代码会定期拨打电话,但不会返回包含余额的消息, 在手机中,我可以看到此消息"号码未分配"。

1 个答案:

答案 0 :(得分:2)

使用ATD发送SS(补充服务)USSD(非结构化补充服务数据)命令将在非常非常好的情况下仅适用于一个小子集(或根本不工作。当您使用MMI输入这些数字时它们由与解析AT命令完全不同的实体解析。)

您真正想要做的是使用专门编写的AT命令来支持发送SS或USSD。对于USSD,您可以使用

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

有关详细信息,请参阅3GPP 27.007 specification