Bluetooth Verbindung read() write() Problem

Gast #2078847
Lesenswert?
• ▲
▼
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren