2 Stimmen

Android: Bluetooth Serielle (Com Port) Kommunikation mit Android Phone

Ich versuche, mit einem über Bluetooth programmierbaren Mikrocontroller zu kommunizieren. Das Bluetooth-Gerät auf dem Mikrocontroller kommuniziert (speziell) über den seriellen Bluetooth-COM-Anschluss Nummer 4.

QUESTION: Wie kann ich die Android App dazu bringen, Daten von diesem COM-Port (Nummer 4) zu lesen?

Ich weiß, dass die UUID eine bekannte eindeutige ID ist, die für dieses Gerät funktioniert, aber ich glaube nicht, dass sie etwas mit der Angabe des COM-Anschlusses zu tun hat.

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;
} }}

3voto

Don Punkte 85

Der COM-Anschluss ist etwas, das nur auf dem Mikrocontroller existiert, nicht auf dem daran angeschlossenen Bluetooth-Gerät. Das Bluetooth-Gerät weiß nicht einmal, welchen COM-Port der Mikrocontroller für die Verbindung verwendet hat. Die Verbindung zwischen dem Bluetooth-Gerät und dem Mikrocontroller erfolgt über die TX- und RX-Leitungen. Die Tatsache, dass sie an Pins des Mikrocontrollers angeschlossen sind, die einem bestimmten COM-Port zugewiesen sind, ist irrelevant und dem Bluetooth-Gerät unbekannt.

1voto

John Leehey Punkte 21626

Ich hatte dieses Problem mit einem benutzerdefinierten Bluetooth-Gerät, das ich gebaut habe. Anstatt createRfcommSocketToServiceRecord in Ihrem Connect-Thread zu verwenden, versuchen Sie etwas Ähnliches wie das Folgende:

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

Wo mein mmDevice Ihr btDevice ist.

Dadurch wird eine Steckdosenverbindung zwischen dem unbekannten Gerät und dem Smartphone hergestellt. Soweit ich gehört habe, gibt es in Android ein Problem bei der Verbindung "nicht ähnlicher" Geräte. Ein Versuch ist es wert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X