Hallo,
ich habe einen µC mit einem Bluetooth Modul verbunden und versuche jetzt
mit meinen PC über Bluetooth mit dem µC zu kommunizieren. Ich verwende
einen Bluetooth Manager um einen virtuellen Port zu erstellen, denn ich
mit meinem C Programm öffne.
Betriebssystem ist Linux.
Funktioniert auch alles gut soweit.
Das Problem ist, dass ich als Antwort immer das Ergebnis der letzten
Anfrage erhalte.
In meinem Code Beispiel weiter unten:
Ich SOLLTE bei einer "1" ein "okay" bekommen, bei allem anderen ein "X".
Ich schreibe eine "1" bekomme ein "X", schreibe eine "2" bekomme ein
"okay", schreibe wieder eine "2" bekomme ich ein "X", "1""X", "1"
"okay"...
Ich hoffe ihr versteht was ich meine :)
Der Fehler liegt sehr wahrscheinlich auf der Seite des PC's, da mit
"minicom" alles bestens funktioniert.
Ihr mein Source code, der auf dem PC läuft:
1 | #define PORT "/dev/rfcomm1"
|
2 |
|
3 | #define FALSE 0
|
4 | #define TRUE 1
|
5 |
|
6 | volatile int STOP=FALSE;
|
7 |
|
8 | int main()
|
9 | {
|
10 | int fd, res;
|
11 | char buf[255] = {0};
|
12 | char test[]= {0}; //"123456789";
|
13 | unsigned char input = 0;
|
14 | int count = 0;
|
15 | char dummy[255];
|
16 |
|
17 | fd = open(PORT, O_RDWR | O_NOCTTY );
|
18 | if (fd <0) {perror(PORT); exit(-1); }
|
19 |
|
20 |
|
21 | while (STOP==FALSE) {
|
22 |
|
23 | printf("Type 1 for 'okay' as answer, anything else for 'x': ");
|
24 | fgets(buf, 3, stdin);
|
25 | sscanf(buf, "%c", &input);
|
26 | printf("The sign : %c\n",input);
|
27 | while ( getchar() != '\n' ) sscanf(buf, "%c", dummy);
|
28 | write(fd, &input, 1);
|
29 |
|
30 | res = read(fd,buf,255);
|
31 | printf("%s\n", buf);
|
32 | }
|
33 |
|
34 | return 0;
|
35 | }
|
Hier der Code auf dem µC:
1 | int
|
2 | main (void)
|
3 | {
|
4 |
|
5 | UART_init();
|
6 | unsigned char test = '0';
|
7 |
|
8 | while(1){
|
9 |
|
10 | test = USART_Receive();
|
11 |
|
12 | wait20ms();
|
13 |
|
14 | if(test == '1'){
|
15 | USART_Transmit('O');
|
16 | USART_Transmit('k');
|
17 | USART_Transmit('a');
|
18 | USART_Transmit('y');
|
19 | USART_Transmit(0);
|
20 | }
|
21 | else{
|
22 | USART_Transmit('X');
|
23 | USART_Transmit(0);
|
24 | }
|
25 |
|
26 |
|
27 | }
|
28 | }
|
Vielen Dank