0

我正在尝试编写一个通过蓝牙拨打电话并返回我的余额(钱)的程序。我正在使用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();

此代码进行常规呼叫,但不返回包含我的余额的消息,并且在电话中我可以看到此消息“未分配号码”。

4

1 回答 1

2

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

你真正想做的是使用那些专门编写的支持发送 SS 或 USSD 的 AT 命令。对于 USSD,您使用

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

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

于 2014-03-06T23:48:34.200 回答