2011-09-21 140 views
2

我一直與Monodroid工作了幾天,仍然無法弄清楚如何通過藍牙發送命令。MonoDroid藍牙

這是我的情況:我有一臺使用Android 2.1+的平板電腦/手機,需要向藍牙打印機發送和接收數據(以字節爲單位)。

我管理至今:

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中編譯並工作的。 主要區別在於,我有一個.dll溝通,並在單聲道,不會工作。 我的問題是發送命令,並看到與打印機發生的事情,而不使用.dll – Gh0stman

回答

4

我知道這是一個非常古老的線程,但我想發佈回覆,以便其他人知道答案。我也努力搜索,沒有運氣。

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

謝謝。