www.mikrocontroller.net

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


Autor: Hannes R. (hannespr)
Datum:

Bewertung
0 lesenswert
nicht 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:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/kd.h>
#include <stdlib.h>
#include <unistd.h>
#include <termios.h>
#include <stdio.h>


int main(void)
{
int fd,sta,rts_bits=TIOCM_RTS;
fd=open("/dev/ttyS0",O_RDWR);
ioctl(fd,TIOCMBIS,&rts_bits);
ioctl(fd,TIOCMGET,&sta);
printf("%i\n",sta);
return 0;
}
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

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hannes R. (hannespr)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.