Hur du skapar Android BLE program snabbare och enklare? (13 / 17 steg)
Steg 13: Få MCU data via protokollet
MCU data ta emot och skicka protokollet använder JSON paket, och formatet är {"T": ditt värde, "V": ditt värde,...}. Naturligtvis kan du definiera andra värden. Skapa MyArray.java i src-katalogen, som syftar till att ansluta två matriser. Koden som visas enligt nedan:
allmän klass MyArray {
statiska offentliga byte [] arrayCat (byte [] buf1, byte [] buf2) {
byte [] bufret = null;
int len1 = 0;
int len2 = 0;
om (buf1! = null)
len1 = buf1.length;
om (buf2! = null)
len2 = buf2.length;
om (len1 + len2 > 0)
bufret = nya byte [len1 + len2];
IF(len1 > 0)
System.arraycopy (buf1, 0, bufret, 0, len1);
IF(len2 > 0)
System.arraycopy (buf2, 0, bufret, len1, len2);
återvända bufret;
}
}
Kopiera protocol.java i min exempelkod till src katalog lägga till medlem
privata protokoll
OnCreate (), ta bort:
bluetoothHandler.setOnRecievedDataListener();
Lägg till:
protokoll = nytt protokoll (här, ny sändare (denna, bluetoothHandler));
protocol.setOnReceivedDataListener(recListener);
Lägga till medlem i MainActivity:
privata statisk slutliga boolean ingång = false;
privata statisk boolean slutresultatet = sant;
privata statisk slutliga booleska låg = false;
privata statisk slutliga booleska hög = sant;
privata boolean digitalVal [];
privata int analogVal [];
Initierar i onCreate:
digitalVal = nya boolean [14].
analogVal = ny int [14].
privat OnReceivedRightDataListener recListener = ny
OnReceivedRightDataListener() {
Public int onReceivedData (String str) {
TODO autogenererade metod stub
försök {
JSONObject readJSONObject = ny JSONObject(str);
typen int = readJSONObject.getInt("T");
int värde = readJSONObject.getInt("V");
Switch(Type) {
fall Protocol.ANALOG: {
int pin = readJSONObject.getInt("P");
analogVal [pin] = värde;
} bryta;
fall Protocol.DIGITAL: {
int pin = readJSONObject.getInt("P");
digitalVal [pin] = (värde > 0)? HÖG: LÅG;
} bryta;
fall Protocol.TEMPERATURE: {
flyta temperatur = ((float) värde) / 100;
} bryta;
fall Protocol.HUMIDITY: {
flyta fuktighet = ((float) värde) / 100;
} bryta;
standard: semester.
}
} fånga (JSONException e) {
TODO autogenererade catch-block
e.printStackTrace();
}
Return 0;
}
};