2014-03-06 3 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

SSD (보충 서비스) USSD (구조화 된 보완 서비스 데이터) 명령을 보내기 위해 ATD를 사용하면 아주 아주 좋은 경우에는 작은 하위 집합에서만 작동합니다 (또는 전혀 작동하지 않습니다). MMI는 AT 명령 구문 분석과 완전히 다른 엔티티로 구문 분석됩니다.

정말로 원하는 것은 SS 또는 USSD 전송을 지원하도록 특별히 작성된 AT 명령을 사용하는 것입니다. 사용하는 USSD의 경우

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

자세한 내용은 3GPP 27.007 specification을 참조하십시오.

+0

감사합니다! – mhamdizo