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 c : Sélectionner tout - Visualiser dans une fenêtre à part
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é.
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 java : Sélectionner tout - Visualiser dans une fenêtre à part
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 Java : Sélectionner tout - Visualiser dans une fenêtre à part
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).
Partager