Forum: PC-Programmierung C-Programm pollt unendlich lange


von horst (Gast)


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
}

von Friend (Gast)


Lesenswert?


von horst (Gast)


Lesenswert?

Irgendwie konnte ich das Problem noch nicht lösen.
Ich versteh einfach nicht, warum das Pollen nicht funktioniert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.