So verbinden Sie zwei Geräte mit demselben Android-GerätAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 So verbinden Sie zwei Geräte mit demselben Android-Gerät

Post by Anonymous »

Ich entwickle eine Android-Anwendung, die Google Maps und Bluetooth verwendet, um Daten von einem Arduino Nano mit einem HC-06-Modul zu verfolgen.
Derzeit kann ich eine Verbindung zu einem HC-06-Gerät herstellen und dessen Daten wie Koordinaten und Winkel verarbeiten. Jetzt möchte ich gleichzeitig eine Verbindung zu zwei HC-06-Modulen herstellen, jedes von einem separaten Arduino Nano, und Daten von jedem unabhängig verarbeiten.
Zum Beispiel:
  • Gerät 1 → sendet Breitengrad und Längengrad
  • Gerät 2 → sendet Winkel
Hier ist mein aktueller Code für die Verbindung zu einem einzelnen HC-06 und die Datenverarbeitung:

Code: Select all

private void connectToHC06() {
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (bluetoothAdapter == null) {
Toast.makeText(this, "Bluetooth not supported", Toast.LENGTH_LONG).show();
finish();
return;
}

if (!bluetoothAdapter.isEnabled()) {
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
return;
}

Set bonded = bluetoothAdapter.getBondedDevices();
BluetoothDevice connectedDevice = null;
for (BluetoothDevice d : bonded) {
if ("HC-06_BT".equals(d.getName())) {
connectedDevice = d;
break;
}
}

if (connectedDevice == null) {
Toast.makeText(this, "HC-06 not found", Toast.LENGTH_SHORT).show();
return;
}

try {
bluetoothSocket = connectedDevice.createRfcommSocketToServiceRecord(HC06_UUID);
bluetoothSocket.connect();
inputStream = bluetoothSocket.getInputStream();
Toast.makeText(this, "Connected to HC-06", Toast.LENGTH_SHORT).show();
startListening();
} catch (IOException e) {
Log.e(TAG, "Connection error", e);
Toast.makeText(this, "Connection error", Toast.LENGTH_SHORT).show();
}
}

Code: Select all

private void startListening() {
if (inputStream == null) return;

new Thread(() -> {
byte[] buffer = new byte[1024];
int bytes;
StringBuilder messageBuffer = new StringBuilder();

while (!Thread.currentThread().isInterrupted()) {
try {
bytes = inputStream.read(buffer);
if (bytes [*]Wie sollte ich die Threads und Eingabeströme strukturieren, um Konflikte zu [url=viewtopic.php?t=15143]vermeiden[/url] und die Daten korrekt zu verarbeiten?

[/list]
Jede Codebeispiele oder Vorschläge sind willkommen!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post