2014-03-06 51 views
0

我想寫一個程序,通過藍牙 撥打電話,並返回我的餘額(金錢)。我正在使用32feet.net藍牙api。gsm ATD命令來檢查我的餘額

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

此代碼進行常規呼叫,但不會返回包含我的平衡, 消息,並在電話中,我可以看到「未分配號碼」這條消息。

回答

2

使用ATD發送SS(補充服務)USSD(非結構化補充服務數據)命令將在非常非常好的情況下僅適用於一小部分子集(或根本不適用)。 MMI,它們被一個完全不同的實體解析,而不是解析AT命令的實體)。

你真正想要做的是使用那些專門被寫入的AT命令來支持發送SS或USSD。對於USSD使用

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

有關詳細信息,請參閱3GPP 27.007 specification

+0

謝謝我的作品! – mhamdizo