C-Programm pollt unendlich lange

Gast #3047644
Lesenswert?

Ich habe ein Programm geschrieben, welches ein Array an meinen 
Zufallszahlengenerator sendet und danach die Zufallszahlen 
zurückliefert.

Das pollen bekomm ich irgendwie nicht hin, mit einem sleep(1) 
funktioniert es teilweise.

Was mache ich falsch?


1
#include <stdio.h>
2
#include <fcntl.h>
3
#include <sys/ioctl.h>
4

5
int main()
6
{
7
  int port;
8
  port = open ("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY);
9
  if (port == -1)
10
  {
11
    printf("Fehler!, Kein Gerät angeschlossen!\n");
12
    return 1;
13
  }
14
  else
15
  {
16
    printf("Gerät an ttyUSB0 gefunden\n");
17
  }
18

19
  int i = 0;
20
  i |= TIOCM_RTS; // Pin RTS wird aktiviert (12V)
21
  i |= TIOCM_DTR; // Pin DTR wird aktiviert (12V)
22
  ioctl (port, TIOCMBIS, &i); 
23
  sleep(3);
24
 
25
  char sende_buffer[]="hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh";
26
  int size = sizeof(sende_buffer);
27
  int bytes;
28
  bytes = write (port, sende_buffer, size); 
29

30
  if (bytes != size) 
31
  {
32
    printf("fehler\n");
33
  }
34
  
35
//sleep(1); //FUNKTIONIERT ABER UNSCHÖN
36
//POLLEN///////////////////////////////////
37
  int sig = TIOCM_DSR;
38
  ioctl(port,TIOCMIWAIT,&sig); //ENDLOS??
39
///////////////////////////////////////////
40
  
41

42
  int bytes2;
43
  char empfangs_buffer[sizeof(sende_buffer)];
44
  bytes2 = read (port, empfangs_buffer, sizeof(empfangs_buffer)); 
45

46
  //AUSGABE
47
  int x;
48
  for(x=0; x<=sizeof(empfangs_buffer)-1; x++)
49
  {
50
    printf("%X\n", empfangs_buffer[x]);
51
  }
52

53
  i |= TIOCM_RTS; // Pin RTS wird deaktiviert (-12V)
54
  i |= TIOCM_DTR; // Pin DTR wird deaktiviert (-12V)
55
  ioctl (port, TIOCMBIC, &i);
56

57
  close(port);
58
}

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