J'étudiais le bluetooth et j'essayais d'écrire le code pour continuer à écouter le flux d'entrée pendant la connexion et je suis tombé sur l'extrait de code suivant:
int data = mmInStream.read();
if(data == 0x0A) {
} else if(data == 0x0D) {
buffer = new byte[arr_byte.size()];
for(int i = 0 ; i < arr_byte.size() ; i++) {
buffer[i] = arr_byte.get(i).byteValue();
}
// Send the obtained bytes to the UI Activity
mHandler.obtainMessage(BluetoothState.MESSAGE_READ
, buffer.length, -1, buffer).sendToTarget();
arr_byte = new ArrayList<Integer>();
} else {
arr_byte.add(data);
}
Quelqu'un peut-il expliquer quelle est la différence entre 0x0A et 0x0D. Et donnez également une brève explication sur ce code. Veuillez partager vos opinions.
Les valeurs commençant par 0x
sont des hexadécimaux. 0x0A
est \n
caractère de nouvelle ligne et 0x0D
est \r
retourne le caractère. Vous pouvez en savoir plus sur la façon de les convertir ici , ou utiliser le tableau de conversion
Le code exécute essentiellement différents blocs de logique en fonction de la valeur de data
qui est lue à partir de mmInStream
Brièvement:
data
est 0x0A
, le caractère de nouvelle ligne \n
, il est ignoré et n'est pas ajouté au arr_byte
data
est 0x0D
, le caractère de retour \r
, il construit un tampon à partir de arr_byte
et envoyer le tampon à l'activité de l'interface utilisateurdata
est un autre caractère, il est ajouté à arr_byte
J'espère que cela t'aides.