Forum: Mikrocontroller und Digitale Elektronik RS-232 auf Low-Level Ebene ansprechen


von Hannes R. (hannespr)


Lesenswert?

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

von ... .. (docean) Benutzerseite


Lesenswert?

mach mal ein warte auf Tastendruck vor das return 0;, könnte mir denken 
das wenn dein Programm ans Ende kommt das OS wieder "alles richtg" 
stellt

von Hannes R. (hannespr)


Lesenswert?

hey danke das wars jetzt tut sich was (an ner guten doku wär ich aber 
immer noch interessiert)

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.