Warum funktioniert es nicht? Das "#" wird korrekt gesendet, aber nicht gelesen (das andere Gerät liest das Zeichen und sendet es). Ich denke, ich kann die zwei folgenden Funktionen nicht in der gleichen Zeit ausführen, aber warum?Bluetooth Low Energy Android Studio
Read_Data.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Write
Data_BLE_Write("#");
//Read
Data_BLE_Read();
Toast.makeText(getApplicationContext(), "Data !!", Toast.LENGTH_SHORT).show();
}
});
Aber wenn ich Data_Ble_Read und Data_Ble_Write mit zwei Tasten Lehrzeichen, dann ist es so arbeiten, ich verstehe nicht, warum ?? Meine Funktionen:
private void Data_BLE_Write(String Caract){
if (mGattCharacteristics != null) {
final BluetoothGattCharacteristic characteristic_W =
mGattCharacteristics.get(3).get(1);
final int charaProp = characteristic_W.getProperties();
if ((charaProp | BluetoothGattCharacteristic.PROPERTY_NOTIFY) > 0) {
mNotifyCharacteristic = characteristic_W;
mBluetoothLeService.setCharacteristicNotification(
characteristic_W, true);
}
if ((charaProp | BluetoothGattCharacteristic.PROPERTY_WRITE) > 0) {
String str = Caract;
byte[] strBytes = str.getBytes();
characteristic_W.setValue(strBytes);
mBluetoothLeService.writeCaracteristic(characteristic_W);
}
}
}
private String Data_BLE_Read(){
Data_Read_Ble = "";
if (mGattCharacteristics != null) {
final BluetoothGattCharacteristic characteristic =
mGattCharacteristics.get(2).get(6);
final int charaProp = characteristic.getProperties();
if ((charaProp | BluetoothGattCharacteristic.PROPERTY_READ) > 0) {
// If there is an active notification on a characteristic, clear
// it first so it doesn't update the data field on the user interface.
if (mNotifyCharacteristic != null) {
mBluetoothLeService.setCharacteristicNotification(
mNotifyCharacteristic, false);
mNotifyCharacteristic = null;
}
mBluetoothLeService.readCharacteristic(characteristic);
}
if ((charaProp | BluetoothGattCharacteristic.PROPERTY_NOTIFY) > 0) {
mNotifyCharacteristic = characteristic;
mBluetoothLeService.setCharacteristicNotification(
characteristic, true);
}
Data_BLE_Write("&");
}
return Data_Read_Ble;
}
"Aber wenn ich Data_Ble_Read und Data_Ble_Write mit zwei Tasten trennen, funktioniert es so, dass ich nicht verstehe warum?" <- Wahrscheinlich, weil es dann genug Verzögerung zwischen dem Schreiben und dem Lesen gibt. Wenn sie unter dem gleichen Knopf sind, geschieht das Lesen direkt nach dem Schreiben. –