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 | }
|