2017-01-17 11 views
-2

このコードはJava Bluecove Bluetooh Libraryを使用して正常に動作します。これは、RFCCOMM直接接続をプローブする主要な方法です。RFCOMM Bluetooth Direct Connection:BlueCoveからIn The Hand 32Feet

私はC#で"In The Hand 32Feet"ユーティリティlibrayに基づいて同じことをしようとしています。テキストコマンドを送信し、デバイスから応答を受け取ることを希望します。 C#の手でに基づいて32フィート

については

JavaベースでBlueCove(ファインワークス!)のために

String serverURL = "btspp://XXXXXXXXXXXX:1;authenticate=false;encrypt=false;master=false";  
StreamConnection sc = (StreamConnection) MicroeditionConnector.open(serverURL); 
DataOutputStream os = sc.openDataOutputStream(); 

String text = "Send command"; 
byte data[] = text.getBytes(); 

os.write(data); 
os.flush(); 
os.close();  

BufferedReader reader = new BufferedReader(new InputStreamReader(sc.openInputStream())); 
StringBuilder out = new StringBuilder(); 
String line; 
while ((line = reader.readLine()) != null) { 
     System.out.println(line); 
     out.append(line); 
} 
System.out.println("Receive data" + out.toString()); 
reader.close();  

これは、C#にに変換することで、私の現在の試みです。 ...問題は、私はpeerStreamにアクセスできないということです。 (は常にCanReadをfalseに戻します)。順次

私は別の方法でこれを行うことができ、結果を読み取るためのコマンドを記述するためのOutputStreamとのInputStream:JavaのBlueCoveサンプルで

あなたが見ることができるようには二重の目的との接続を開くことが可能ですか?

String address = "00:00:00:00:00:00"; 
Guid mUUID = new Guid("00000000-0000-0000-0000-0000500b34fb"); 

BluetoothAddress addr = BluetoothAddress.Parse(address); 
var btEndpoint = new BluetoothEndPoint(addr, mUUID); 
var btClient = new BluetoothClient(); 
btClient.connect(btEndpoint); 

Stream peerStream = btClient.GetStream(); 
using (StreamWriter sw = new StreamWriter(peerStream)) 
{ 
    sw.WriteLine("Send command"); 
    sw.Flush(); 
    sw.Close(); 
} 

if (peerStream.CanRead) 
{ 
    using (StreamReader sr = new StreamReader(peerStream)) 
    { 
    while (sr.Peek() >= 0) 
     { 
     Debug.WriteLine("Receive data" + sr.ReadLine()); 
     } 
    sr.Close(); 
    }  
} 
btClient.Close(); 
btClient.Dispose(); 

答えて

1

私はSWを閉じた後、sw.Close()への呼び出しが同様にストリームを閉じ、したがって、あなたがpeerStreamから読み取るカントと思います。

私はこのような何かをしようとするだろう:

 String address = "00:00:00:00:00:00"; 
     Guid mUUID = new Guid("00000000-0000-0000-0000-0000500b34fb"); 

     BluetoothAddress addr = BluetoothAddress.Parse(address); 
     var btEndpoint = new BluetoothEndPoint(addr, mUUID); 
     var btClient = new BluetoothClient(); 
     btClient.connect(btEndpoint); 

     using (Stream peerStream = btClient.GetStream()) 
     using (StreamWriter sw = new StreamWriter(peerStream)) 
     { 
      sw.WriteLine("Send command"); 
      sw.Flush(); 

      if (peerStream.CanRead) 
      { 
       using (StreamReader sr = new StreamReader(peerStream)) 
       { 
        while (sr.Peek() >= 0) 
        { 
         Debug.WriteLine("Receive data" + sr.ReadLine()); 
        } 
       } 
      } 
     } 
+0

おかげでたくさん!あなたの答えは適切に働きます。 – Sara

関連する問題