hi
Ich bin relativ neu beim Hardware nahen Programmieren und im Moment noch
dabei mich via. trial and error auszuprobieren.
Jetzt bin ich aber gerade an nem Punkt wo das nicht mehr funzt, da ich
kein Error bekomme und es aber trotzdem nicht tut was es soll.
Zum Problem:
Was ich im Moment erreichen möchte ist eigentlich trivial. Ich möchte
auf dem RTS Pin meiner RS-232 den Logikpegel ändern (von low zu high).
Diese Veränderung des Pegel sollte ich dann mit Messgerät messen können
welches ich an GND und RTS anschließe. Meiner Meinung nach müsste das so
gehen:
1 | #include <sys/types.h>
|
2 | #include <sys/stat.h>
|
3 | #include <fcntl.h>
|
4 | #include <sys/ioctl.h>
|
5 | #include <linux/kd.h>
|
6 | #include <stdlib.h>
|
7 | #include <unistd.h>
|
8 | #include <termios.h>
|
9 | #include <stdio.h>
|
10 |
|
11 |
|
12 | int main(void)
|
13 | {
|
14 | int fd,sta,rts_bits=TIOCM_RTS;
|
15 | fd=open("/dev/ttyS0",O_RDWR);
|
16 | ioctl(fd,TIOCMBIS,&rts_bits);
|
17 | ioctl(fd,TIOCMGET,&sta);
|
18 | printf("%i\n",sta);
|
19 | return 0;
|
20 | }
|
der gcc gibt keine Fehler beim compilieren aus und die ioctl() Funktion
hat als Rückgabe 0, sprich funzt auch. Die Ausgabe ist "16646". Sieht
also alles so aus als würde es gehen (auch wenn ich mit der Ausgabe
nichts anfangen kann) bloß das Messgerät zeigt weiter -5,6V an. Das
ändert sich auch nicht wenn ich statt BIS BIC nehme (könnte ja sein das
der Pin schon "high" ist und ich nur das Messgerät falsch angeschlossen
habe) .
Ich hab mir einiges im inet zu dem Thema durchgelesen bin aber darüber
nicht zu dem Fehler gekommen. Mein Hardware Aufbau hab ich auch schon
mehrmals gecheckt (Kabel durch geklingelt, Messgerät getestet).
Ich arbeite auf einem IBM T41 mit Ubuntu 9.04 gcc-Version 4.3.3.
Meine Frage ist ob das was ich machen will Grundsätzlich geht und wenn
ja wie bzw. wo mein Fehler bei der Sache ist? Wenn jemand eine gut
Dokumentation für System Calls die RS-232 betreffen kennt, würde mir das
auch schon helfen.
P.S. ich hoffe ich bin damit in diesem Forum richtig, da es ja nicht
direkt was mit Mikrocontrollern zu tun hat