2011-09-21 6 views
2

Je travaille avec Monodroid depuis quelques jours et n'arrive toujours pas à savoir comment envoyer une commande via Bluetooth.MonoDroid Bluetooth

Ceci est mon scénario: J'ai une tablette/téléphone portable fonctionnant sous Android 2.1+ et j'ai besoin d'envoyer et de recevoir des données à une imprimante Bluetooth (en octets).

Ce que je réussi à ce jour:

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

Le programme demande les informations d'appariement avec est fait correctement. J'ai essayé plusieurs façons d'envoyer la commande:

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

Aucune erreur est relevée. Je suis à court d'options ici ...

Merci d'avance!

+0

Existe-t-il un moyen de coupler avec un périphérique Bluetooth «débogage» pour voir si les données sont envoyées? Sans savoir ce qu'est l'erreur et où elle se produit, il est plutôt difficile de corriger ... – jonp

+0

Non, il n'y en a pas. Mais le même programme est construit en WM 6.x et fonctionne. La différence principale est que sur WM j'ai un .dll pour communiquer et sur Mono qui ne fonctionnera pas. Mon problème est juste d'envoyer la commande et voir quelque chose se produire avec l'imprimante sans utiliser le fichier .dll – Gh0stman

Répondre

4

Je sais que c'est un très vieux fil, mais je voulais poster une réponse pour que les autres connaissent la réponse. Moi aussi j'ai cherché dur sans chance.

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

Merci.