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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.