2011-09-21 4 views
2

나는 Monodroid를 며칠 동안 사용해 왔지만 여전히 Bluetooth를 통해 명령을 보내는 방법을 알 수 없습니다.MonoDroid Bluetooth

이것은 나의 시나리오입니다. Android 2.1 이상에서 작동하는 태블릿/핸드폰이 있고 데이터를 Bluetooth 프린터로 보내고받을 필요가 있습니다 (바이트 단위).

내가 지금까지 관리하는 것 : 제대로 수행과

using Android.Bluetooth; // library necessary 

BluetoothAdapter bth = BluetoothAdapter.DefaultAdapter; 
if (!bth.IsEnabled) 
    bth.Enable(); 

ICollection<BluetoothDevice> bthD = bth.BondedDevices; 

foreach (BluetoothDevice d in bthD) 
{ 
    if (d.Name == "DPP-350") 
    { 
     Java.Util.UUID UUID = Java.Util.UUID.FromString("00001101-0000-1000-8000-00805F9B34FB"); 
     // Get the BLuetoothDevice object 
     BluetoothSocket s = d.CreateRfcommSocketToServiceRecord(UUID); 

     s.Connect(); 

     // Try to send command 
     ... 

     s.Close() 
    } 
} 

이 프로그램은, 페어링 정보를 요청합니다. 나는 명령을 전송하는 방법에는 여러 가지 시도 :

// the command 
// Self_Test = Chr(27) + Chr(84) = ESC T 
byte[] dBytes = System.Text.Encoding.GetEncoding(1252).GetBytes(Self_Test); 

// wont work 
new Java.IO.ObjectOutputStream(s.OutputStream).Write(dBytes); 
// wont work 
System.IO.Stream st = s.OutputStream; 
if (st.CanWrite) 
{ 
    st.Write(dBytes, 0, dBytes.Length); 
    st.Flush(); 
} 
// wonk work 
s.OutputStream.Write(dBytes, 0, dBytes.Length); 
s.OutputStream.Flush(); 

이 없음 오류가 발생하지 않습니다를. 여기에 옵션이 부족합니다 ...

미리 감사드립니다!

+0

'디버그'블루투스 기기와 페어링하여 데이터를 전혀 전송하지 않는 방법이 있습니까? 오류가 무엇인지 그리고 오류가 어디에서 발생했는지 아는 것이 아니라 수정하는 것이 어렵습니다. – jonp

+0

아니요, 없습니다. 그러나 동일한 프로그램은 WM 6.x를 구축하고 작동합니다. 가장 큰 차이점은 WM에서는 통신 할 수있는 .dll과 작동하지 않는 Mono가 있다는 것입니다. 내 문제는 단지 명령을 보내고 .dll을 사용하지 않고 프린터에서 일어나는 일이 발생하는 것입니다. – Gh0stman

답변

4

나는 이것이 매우 오래된 스레드라는 것을 알고 있지만 다른 사람들이 대답을 알 수 있도록 답장을 보내고 싶었습니다. 나는 너무 열심히 수색했다.

s.OutputStream.BeginWrite(buffer, 0, buffer.Length,new AsyncCallback(delegate {}), State.Connected); 

감사합니다.