Hallo zusammen Leider habe ich von Elektronik keine grosse Ahnung und hoffe, Ihr könnt mir bei meinem Problem weiterhelfen. Ich möchte anhand der seriellen Schnittstelle (RS232) einen Ein-/Aus-Schalter erstellen und den Status des Eingangssignals mittels einem C-Programm abfragen. Ich habe mir dabei gedacht, dass ich den Ausgang von Pin 4 als Spannung für den Eingang auf Pin 1 missbrauche und dazwischen einfach einen Schalter klemme (siehe Anhang). Eine LED soll anzeigen, wenn der Taster gedrückt wird. Im Netz konnte ich bis jetzt nichts Vernünftiges finden - ist denn die Sache so trivial, dass nirgends wo ein Artikel über so was steht??? Die Schaltung habe ich aufgebaut, das C-Programm ist auch bereits geschrieben - die LED leuchtet auch auf wenn das Programm ausgeführt und der Schalter gedrückt wird - nur ich kann die Spannung auf dem Eingang nicht ablesen. Geht das überhaupt, oder muss ich ein A/D-Wandler oder Max232 oder so etwas dafür anschaffen. Es sollte doch nur ein Schalter werden :-( Bitttttteeee um Hilfe.... Dankeschöönnn... P.S. Das C-Programm läuft unter RedHat Linux.
es ist schon trivial, allerdings sind doch ein paar Kleinigkeiten zu beachten. Frei verwendbar sind 2 Ausgänge (RTS und DTR) sowie 4 Eingänge (CTS,DSR,DCD und RI). Diese Bits sind über die Statusregister der UART erreichbar, wie die unter Linux angesprochen werden - keine Ahnung. Und dann gibts da noch die physikalischen Schnittstellenparameter, ein 1-Pegel ist mit -3..15V, ein 0-Pegel mit+3..15V definiert. Wie sich ein offener Eingang oder ein mit Masse verbundener hält, kann bei jedem PC anders sein, kommt auf die verbauten Treiberchips an. Und um die Sache nun auf den Punkt zu bringen: die Leitung TxD führt, wenn keine Daten gesendet werden, 1-Pegel. Diesen Ausgang über einen Widerstand 10k mit z.B. CTS verbinden, per Software den Ausgang RTS auf + setzen und den Schalter dann zwischen RTS und CTS verschalten.
Ich bin mir nicht ganz sicher, ob ich die Schaltung nun richtig zusammengesetzt habe, denn sie funktioniert immer nocht nicht... was aber auch heissen kann, dass ich mit der software probleme habe (oder mit meinem uralten 133er compi). also, nur zum Sichergehen: |-----------| TXD o----------| 10 kOhm |------------| |-----------| | | CTS o-----------------------------------o | / | RTS o----------/ --------------------| Ich erhalte von RTS überhaupt kein Signal (+/-). auch wenn ich RTS auf + setze ist keine Spannung am Ausgang. Deshalb habe ich den Ausgang von DTR anstatt von RTS genommen... Am DTR ist eine Spannung vorhanden.
uups, meine Schaltung sieht ganz anders als geplant aus... in der anlage befindet sich ein printscreen, wie's richtig aussehen soll...
ja, sieht richtig aus. An TxD und CTS solltest du ca. -10V messen, an RTS +10V. Und wenn der Schalter geschlossen wird, sollten an CTS min. +5V liegen. Wenn das so funktioniert, ist der Rest SOftwaresache.
Hey "Crazy Horse", DU bist der Beste! Die Schaltung funktioniert wirklich... ich habe mein Kabel ausgetauscht - so wie's aussieht war da der Wurm drin... Vielen Dank, ich war nämlich schon bald am verzweifeln... ...für diejenigen, die auch unter Linux einen Schalter über die serielle Schnittstelle auslesen möchten, ist in der Anlage mein Source-Code, den ich für die obige Schaltung erstellt habe. Nach dem Kompilieren mit "gcc -o switch switch.c" kann das Programm mit "switch /dev/ttyS* (zb. ttyS0 für COM1)" ausgeführt werden. Evtl. ist die Ausführung als Daemon noch sinnvoll. Nochmals Vielen Dank.
gerade gefunden, soll es sowas werden: http://www.linux-magazin.de/Artikel/ausgabe/2000/09/Seriell/seriell.html
Hallo Crazy Horse, habe gerade deinen Beitrag gelesen. Habe eine ähnliche Schaltung aufgebaut. Warum verbindest du über eine Widerstand TxD mit CTS? Ich hab nicht.
jawi schrieb: > Hallo Crazy Horse, > > habe gerade deinen Beitrag gelesen. Habe eine ähnliche Schaltung > aufgebaut. > Warum verbindest du über eine Widerstand TxD mit CTS? Ich hab nicht. Weil es keine so gute Idee ist, mit dem Schalter den TxD Pin mit RTS kurzzuschliessen, wenn beide unterschiedliches Potential haben. An Txd hat man -10V, an RTS ca. +10V. Schliesst man den Schalter, arbeiten 2 Ausgänge gegeneinander und das ist meistens keine so gute Idee. Hat man den Widerstand, dann kann an ihm die Differenz abfallen. CTS ist der Eingang, an dem detektiert wird, welche Spannung an dem einen Ende des Widerstands anliegt. Ist der Schalter offen, so sind das -10V. Ist der Schalter geschlossen so sind das theoretisch +10V, die Spannung wird aber wohl ein wenig einbrechen.
Wie wäre es mit einer Optisch getrennten Verbindung ? So entgeht man wenigstens der Gefahr den COM - Port zu TÖTEN ! LG
Tim E. schrieb: > Wie wäre es mit einer Optisch getrennten Verbindung ? So entgeht man > wenigstens der Gefahr den COM - Port zu TÖTEN ! Dann kannst du dir den ganzen 'Aufwand' auch gleich sparen und was 'richtiges' extern machen. Denn die Frage ist bei derartigen Basteleien immer: Wo nimmst du die Versorgungsspannung her?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.