Bluetooth chat example

Ich habe mich bisher mit hardwarenaher Programmierung beschäftigt und will nun meine erste App umsetzen.

Zu diesem Zweck will ich ein Projekt auf Basis von BluetoothChat realisieren.

Konkret geht es um eine Mikrocontroller-Platine, die über ein BTM222-Bluetooth-Modul mit einem Smartphone/Tablet kommunizieren soll.

Über Sensoren auf der Platine werden Messwerte aufgenommen, und sollen auf dem Tablet dargestellt werden.

Die Anzeige soll allerdings nicht als einfacher Fließtext erfolgen, sondern die Messwerte sollen immer an einer bestimmten Stelle in der App angezeigt werden.

Der Datenstrom, der vom Mikrocontroller kommt, ist variabel und kann flexibel an die Anforerungen der App angepasst werden.
Die App müsste aus diesem Datenstrom nur die einzelnen Messwerte filtern und an der richtigen Stelle ausgeben.

Ich stelle mir das so vor:

Mikrocontroller sendet per Bluetooth: "T:27,1;RH:35;P:1013..."

Die App soll nun aus diesem Datenstrom erkennen: T ist die Temperatur, Ausgabe des Werts an der entsprechenden Stelle, RH ist die Luftfeuchtigkeit und so weiter.

Mit welcher Methode kann ich den ankommenden SPP-Datenstrom auf diese Art analysieren?
 
ich benötige für dieses Problem wohl einen Parser, zumindest muss ich den Datenstream zerlegen.

Zuvor steht allerdings noch ein grundsätzliches Problem:

Wenn ich zwei Smartphones verbinde, können unbegrenzt viele Zeichen in einer Nachricht übermittelt werden.

Bei einer Verbindung mit meinem Mikrocontroller-BT-Modul werden die Nachrichten unterbrochen.

Die Ausgabe sieht dann aus wie folgt:

"BTM222: T:2
BTM222: 7,2;R
BTM222: H:35;P:
BTM222: 1013 usw."

Ich kann nicht nachvollziehen, wie dieser unregelmäßige Umbruch entsteht.
Jemand einen Ansatz?
 
okay, das Problem ist gelöst.

Anderes Thema: ich will, dass sich die App nach dem Start automatisch mit genau meinem Modul verbindet.
Das Modul ist im System bekannt und bereits gepairt.

Die App muss diese Verbindung also nur aufgreifen.

Wie kann ich das realisieren?

edit:

ich habe zu diesem thema folgenden Beitrag gefunden:

http://stackoverflow.com/a/17120498/4995080

dort wird dieser Code angeboten:

Code:
//Assuming that you have device address and is connectedprivateString partnerDevAdd="00:11:22:AA:BB:CC";privateboolean isConnected=true;

IntentFilter filter =newIntentFilter();
filter.addAction(BluetoothDevice.ACTION_FOUND);
filter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED);
filter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED);

registerReceiver(mReceiver, filter);

// Create a BroadcastReceiver for bluetooth related checksprivatefinalBroadcastReceiver mReceiver =newBroadcastReceiver(){publicvoid onReceive(Context context,Intent intent){String action = intent.getAction();

//We don't want to reconnect to already connected deviceif(isConnected==false){// When discovery finds a deviceif(BluetoothDevice.ACTION_FOUND.equals(action)){// Get the BluetoothDevice object from the IntentBluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

// Check if the found device is one we had comm withif(device.getAddress().equals(partnerDevAdd)==true)
connectToExisting(device);}}

if(BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)){// Get the BluetoothDevice object from the IntentBluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

// Check if the connected device is one we had comm withif(device.getAddress().equals(partnerDevAdd)==true)
isConnected=true;}elseif(BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)){// Get the BluetoothDevice object from the IntentBluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

// Check if the connected device is one we had comm withif(device.getAddress().equals(partnerDevAdd)==true)
isConnected=false;}}};

privatevoid connectToExisting(BluetoothDevice device){newConnectThread(device);}

wo genau Pflege ich das in das Projekt ein?
in den BlutoothChatService.java oder BluetoothChatFragment.java?
 
Zuletzt bearbeitet:

Ähnliche Themen

S
Antworten
4
Aufrufe
4.458
mblaster4711
mblaster4711
A
  • Alex1978
Antworten
4
Aufrufe
733
Alex1978
A
N
Antworten
8
Aufrufe
1.018
NerkJ
N
Zurück
Oben Unten