Hallo,
ich versende von einem STM32F4-Discovery-Board über ein an den UART
angeschlossenes BT-Modul wie folgt Daten:
1 | ...
|
2 | char buf[3];
|
3 | char *pbuf = buf;
|
4 | *pbuf++ = 0xa7;
|
5 | *pbuf++ = 0x01;
|
6 | *pbuf = '\0';
|
7 | USART_SendBuf(USART2, buf, strlen(buf));
|
8 | USART_SendBuf(USART2, "\r\n", strlen("\r\n"));
|
9 | ...
|
Ein an die serielle Schnittstelle angeschlossener Logic Analyzer (LA)
zeigt, dass die Daten wie folgt an das BT-Modul weitergegeben werden:
1 | '167' (0xA7) '1' (0x01) \r (0x0D) \n (0x0A)
|
Die Daten empfange ich mit einem Android-Smartphone wie folgt:
BT-Teil:
1 | private void sendLineRead(String line) {
|
2 | mHandler.obtainMessage(MSG_LINE_READ, -1, -1, line).sendToTarget();
|
3 | }
|
4 | ...
|
5 | BufferedReader reader = new BufferedReader(new InputStreamReader(mmInStream));
|
6 | while (!stop) {
|
7 | try {
|
8 | String line = reader.readLine();
|
9 | if (line != null) {
|
10 | sendLineRead(line);
|
11 | }
|
12 | ...
|
Handler:
1 | ...
|
2 | case BluetoothService.MSG_LINE_READ:
|
3 | String readMessage = (String)msg.obj;
|
4 | mConversationArrayAdapter.add(readMessage);
|
5 | char x;
|
6 | int[] t = new int[readMessage.length()];
|
7 | for(int i = 0; i < (readMessage.length()); i++) {
|
8 | x = readMessage.charAt(i);
|
9 | int z = (int) x & 0xFF;
|
10 | t[i] = z;
|
11 | mConversationArrayAdapter.add(Integer.toString(z));
|
12 | }
|
13 | ...
|
Auf dem Smartphone ausgegeben wird:
Das ist falsch, so viel ist mir klar. Jemand eine Idee was genau ich
falsch mache?
Vielen Dank im Voraus!