我正在尝试编写一个通过蓝牙拨打电话的程序
并返还我的余额(钱)。我正在使用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();
此代码会定期拨打电话,但不会返回包含余额的消息, 在手机中,我可以看到此消息"号码未分配"。
答案 0 :(得分:2)
使用ATD发送SS(补充服务)USSD(非结构化补充服务数据)命令将在非常非常好的情况下仅适用于一个小子集(或根本不工作。当您使用MMI输入这些数字时它们由与解析AT命令完全不同的实体解析。)
您真正想要做的是使用专门编写的AT命令来支持发送SS或USSD。对于USSD,您可以使用
AT+CUSD=[<n>[,<str>[,<dcs>]]]
有关详细信息,请参阅3GPP 27.007 specification。