Bluetooth lecture des paquets reçu
Bonjour,
J'ai une application Android qui se connecte via Bluetooth avec un nucleo.
Une fois la connections établis j'envoie un message contenant un "1" et le nucleo me répond par "START".
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #include "mbed.h"
Serial BT(PA_9, PA_10); // tx, rx
int main() {
BT.baud(9600);
while(1){
char c = BT.getc();
if (c=='1') {
BT.printf("START");
}
}
} |
J'ai vérifier si tout se passe bien avec l'application Serial Bluetooth Adapter, et tout se passe bien le message "START" est bien reçut après l'envoie du message "1" depuis Android.
Après ça je fais mon application Android, le message "START" est bien reçus mais il est coupé en deux... j'ai en général "S" puis "TART" et parfois "T" puis "TART" gné :weird:.
Je ne comprend absolument pas d’où viens cette erreur. J'ai essayé mon application d'un android à un autre et ça marche nikel, les messages ne sont pas coupé.
le code du thread
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public void run() {
int bytes;
byte[] buffer = new byte[1024];
// Keep listening to the InputStream while connected
while (mState == STATE_CONNECTED) {
try {
// Read from the InputStream
bytes = mmInStream.read(buffer);
// Send the obtained bytes to the UI Activity
mHandler.obtainMessage(Constants.MESSAGE_READ, bytes, -1, buffer).sendToTarget();
} catch (IOException e) {
connectionLost();
break;
}
}
} |
Celui pour afficher sur l'interface
Code:
1 2 3 4 5 6 7
| case Constants.MESSAGE_READ:
byte[] readBuf = (byte[]) msg.obj;
// construct a string from the valid bytes in the buffer
String readMessage = new String(readBuf, 0, msg.arg1);
//Measures measures = new Measures(readMessage);
mConversationArrayAdapter.add(mConnectedDeviceName + ": " + readMessage);
break; |
Je me suis appuyé sur l'exemple donné dans la doc d'android pour faire mon application (Bluetooth Chat).