2011-02-19 4 views
2

J'essaie de communiquer avec un microcontrôleur programmable Bluetooth. L'appareil Bluetooth sur le microcontrôleur communique (spécifiquement) sur le numéro de port COM série Bluetooth 4.Android: Communication Bluetooth série (Com Port) avec Android Phone

QUESTION: Comment puis-je obtenir l'application Android pour lire les données de ce port COM (numéro 4)?

Je sais que l'UUID est un ID unique bien connu, qui fonctionne pour cet appareil, mais je ne pense pas que cela ait quelque chose à voir avec la spécification du port COM.

static final UUID myUUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); 
btSocket = btDevice.createRfcommSocketToServiceRecord(myUUID); 
btSocket.connect(); 
valid.append(btDevice.getName() + "\n" + btDevice.getAddress()); 
north.append("Socket Connected"); 
InputStream mmInStream = btSocket.getInputStream(); 
OutputStream mmOutStream = btSocket.getOutputStream(); 
byte[] buffer = new byte[10]; 
int bytes; 
StringBuffer str = new StringBuffer(); 
while (true)       {        
    try { 
    mmOutStream.write("a".getBytes()); 

     //Reads a # of bytes until the end of stream is reached 
     bytes = mmInStream.read(buffer); 
     //Transform to string 
       str.append(buffer.toString()+"\t");       //Clear the buffer 
     Log.e("DATA", "THE DATA: "+ str.toString()); 
     south.setText(str.toString()); 
     str.delete(0,str.length()); 
     } catch (IOException e) { 
     break; 
} }} 

Répondre

1

J'ai eu ce problème avec un périphérique Bluetooth personnalisé que j'ai construit. Au lieu d'utiliser createRfcommSocketToServiceRecord dans votre fil de connexion, essayez quelque chose de similaire à ce qui suit:

public ConnectThread(BluetoothDevice device) throws 
     SecurityException, NoSuchMethodException, IllegalArgumentException, 
      IllegalAccessException, InvocationTargetException { 
      mmDevice = device; 
      BluetoothSocket tmp = null; 

      // Force a BluetoothSocket for a connection with the 
      // given BluetoothDevice 

      Method m = mmDevice.getClass().getMethod("createRfcommSocket", 
          new Class[]{int.class}); 

     mmSocket = (BluetoothSocket)m.invoke(mmDevice, Integer.valueOf(1)); 
    } 

Où mon mmDevice est votre btDevice.

Cela force une connexion socket entre le périphérique inconnu et le smartphone. D'après ce que j'ai entendu, il y a un problème avec Android qui connecte des appareils "non similaires". Ça vaut le coup.

3

Le port COM est quelque chose qui n'existe que sur le microcontrôleur, pas sur le périphérique Bluetooth qui y est connecté. Le périphérique Bluetooth ne sait même pas quel port COM le microcontrôleur a utilisé pour s'y connecter. La connexion de l'appareil Bluetooth au micro se fait via les lignes TX et RX. Le fait qu'ils soient connectés aux broches du micro affecté à un port COM spécifique n'est pas pertinent et est inconnu du périphérique Bluetooth.

Questions connexes