PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : serielle Schnittstelle über ioctl



01-10-2000, 15:25
Ich möchte über die Serielle Schnittstelle in C eine Led zum blinken bringen. Dies versuche ich über ioctl. Die Led häng am DTR Ausgang und am Ground. Die Led leuchtet sobald der Rechner an ist. Sobald ich aber über Open das Device öffne erlischt sie da die Polarität wechselt. Wie kann ich sie über ioctl die Polarität wieder wechseln?

05-10-2000, 18:06
Hallo!

Ich hab's jetzt so gelöst, das ich einfach nur die Datei öffne. (Ich muss nur eine Led ansteurern) Mein Programm soll überprüfen ob Mail da ist und öffnet dann die serielle Schnittstelle. Lösche ich die Mail, geht die Lampe aus. Das Problem:
Die serielle Schnittstelle schliesst sich nur bei bis zu 6 Zeilen in der Mail-Datei. (Also funtzt es bei Mails nicht.) Weis einer woran das liegt?

P.S: Das Programm findet ihr unter <a href="http://www.linux-4-ever.de/checkmail.c">www.linux-4-ever.de/checkmail.c</a>

05-10-2000, 20:57
sag mal sehe ich das in deinem c-file richtig, daß als letzte Anweisung in main() die Funktion main() nochmals aufgerufen wird?? Das wäre nämlich schon eine etwas "unsaubere" und c-untypische Lösung!
Variablen werden auch normalerweise nicht Global definiert, sondern wann immer es geht lokal in einer Funktion.
Du solltest auch mehr einrücken, damit das Programm übersichtlich bleibt!

Da mich das Thema auch interessiert kann ich Dir da gerne weiterhelfen, aber ich bin weder so der tolle Held im Programmieren noch habe ich zu viel Zeit....

Hier eine etwas modifiizierte Version:
///////////////////////////////////////////////////
verdammt ich bin zu blöde vernünftig Source-Code einzufügen!
Ich Mail sie dir....

Gruß,
Sion

[Dieser Beitrag wurde von Sion am 07. Oktober 2000 editiert.]

07-10-2000, 19:01
Kann es sein das du einen C++ Compiler genommen hast

07-10-2000, 20:31
<BLOCKQUOTE><font size="1" face="Arial,Helvetica,Geneva">Zitat:</font><HR>Original erstellt von hennevl:
Kann es sein das du einen C++ Compiler genommen hast[/quote]

Jain. Zum schreiben und syntax-prüfen nehme ich sehr gerne mein altes Visual C 2.0 (MS), aber nachdem die Datei mit .c endet und nicht mit .cpp erkennt er automatisch, daß er keine C++ -Ergänzungen benutzen darf.
Außerdem ist code 100%ig ANSI-C, sollte also auch unter Linux 100%ig laufen!

Gruß,
Sion|at|gmx_de

[Dieser Beitrag wurde von Sion am 07. Oktober 2000 editiert.]

09-10-2000, 18:58
<BLOCKQUOTE><font size="1" face="Arial,Helvetica,Geneva">Zitat:</font><HR>Original erstellt von Sion:
Jain. Zum schreiben und syntax-prüfen nehme ich sehr gerne mein altes Visual C 2.0 (MS), aber nachdem die Datei mit .c endet und nicht mit .cpp erkennt er automatisch, daß er keine C++ -Ergänzungen benutzen darf.
Das einzige nicht ANSI-C-Konforme sind die Kommentare, die ich wie in c++
mit // einleite (Faulheit) - dies ist aber für gcc kein Problem!

Gruß,
Sion|at|gmx_de

[Dieser Beitrag wurde von Sion am 07. Oktober 2000 editiert.][/quote]

10-10-2000, 19:22
<BLOCKQUOTE><font size="1" face="Arial,Helvetica,Geneva">Zitat:</font><HR>Original erstellt von hennevl:
Ich möchte über die Serielle Schnittstelle in C eine Led zum blinken bringen. [...] Wie kann ich sie über ioctl die Polarität wieder wechseln?[/quote]

Ich habe jetzt eine LED über den Parallelport zum blinken gebracht, ist eigentlich einfach. Da kannst Du dann insgesamt 12 (!) verschiedene (!) LEDs ansteuern, und hättest sogar noch 4 Eingänge frei.
Schreib mir falls Interesse besteht!

Sion

sion|at|gmx_de

PS: Schaltet man zwei Ausgänge parallel, wird die LED deutlich heller. Hihi. DON'T TRY THIS AT HOME !!! ...wie die Amis immer so schön sagen...

[Dieser Beitrag wurde von Sion am 10. Oktober 2000 editiert.]

f0rtex
10-10-2000, 20:44
<BLOCKQUOTE><font size="1" face="Arial,Helvetica,Geneva">Zitat:</font><HR>Schaltet man zwei Ausgänge parallel, wird die LED deutlich heller. Hihi. DON'T MAKE THIS AT HOME !!! [/quote]

Das würd ich wirklich nicht machen!
Wieviel Strom kann ein UART eigentlich liefern? (Die serielle Schnittstelle ist doch ein UART?)

greets
f0rtex

10-10-2000, 21:17
<BLOCKQUOTE><font size="1" face="Arial,Helvetica,Geneva">Zitat:</font><HR>Original erstellt von f0rtex:
Das würd ich wirklich nicht machen!
Wieviel Strom kann ein UART eigentlich liefern? (Die serielle Schnittstelle ist doch ein UART?)

greets
f0rtex[/quote]

Also der Parallelport liefert lt. IBM-Spezifikation im "high" -Modus zw. 2,8 und 5 Volt bei 2,6mA - also nicht sehr viel!
Was der uart der Seriellen Schnittstelle kann weiß ich allerdings nicht, wird aber wahrscheinlich nicht viel mehr sein.
Das "zusammenschließen" war eher ungewollt, habe ja auch extra "don't try this at home" dazugeschrieben.
Besser ist auf jedenfall ein (Mehrfach-)Optokoppler und eine extra Stromversorgung, so kann man auch mehrere Meter Kabel dazwischenschalten.

Sion

UPDATE:
=======
Das mit dem heller leuchten war Blödsinn, die LED leuchtet immer gleich hell, egal an einem oder 2 PINs. ABER: Die Datenpins (2-9) leuchten merklich heller als die restlichen, haben wohl stärkere Stromquellen (kleinere Innenwiderstände), da die Leerlaufspannung die gleiche ist!

[Dieser Beitrag wurde von Sion am 10. Oktober 2000 editiert.]

12-10-2000, 00:49
Also bei mir kommen 10 V raus?!

Mit Ioctl funtzt bei mir nicht weil das mit meinem Controller nicht hinhaut.

Aber bitte mail das mal sion!!

15-10-2000, 13:04
kannst du mir mal ein beispiel schicken wo ich alle 12 LED´s ansteuern kann?

sumilan@web.de

15-10-2000, 14:51
Hi!

Mit den 10 V bezog sich auf die serielle Schnittstelle. bei der parallelen kommen 2 - 5 V raus.
Für alle die das auch machen wollen:
Bei <a href="http://freshmeat.net">Freshmeat</a> nach 'parapin' suchen. Da sind Beispiele bei.

15-10-2000, 16:49
<BLOCKQUOTE><font size="1" face="Arial,Helvetica,Geneva">Zitat:</font><HR>Original erstellt von sumilan:

kannst du mir mal ein beispiel schicken wo ich alle 12 LED´s ansteuern kann?

sumilan@web.de[/quote]
<hr>
pin_output_mode(LP_PIN01|LP_DATA_PINS|LP_PIN14|LP_ PIN16|LP_PIN17);//pin 1-9, 14, 16 und 17 als Ausgang schalten
set_pin(LP_PIN01|LP_DATA_PINS|LP_PIN14|LP_PIN16|LP _PIN17); //alle 12 Ausgänge an
//pin1 & pin7 aus:
clear_pin(LP_PIN01|LP_PIN07);

<hr>
weiteres siehe bei parapin mitgelieferte doc's
Sion

[Dieser Beitrag wurde von Sion am 15. Oktober 2000 editiert.]

12-11-2000, 13:59
Ich habe jetzt eine LED über den Parallelport zum blinken gebracht, ist eigentlich einfach. Da kannst Du dann insgesamt 12 (!)
verschiedene (!) LEDs ansteuern, und hättest sogar noch 4 Eingänge frei.
Schreib mir falls Interesse besteht!

Sion

-------------------
kannst du mir mal dein beispiel programm senden?

sumilan@web.de

12-11-2000, 16:49
<BLOCKQUOTE><font size="1" face="Arial,Helvetica,Geneva">Zitat:</font><HR>Original erstellt von sumilan:
kannst du mir mal dein beispiel programm senden?[/quote]

Ich bin ja immer noch mit der blöden Hardware beschäftigt (als ob ein Opptokoppler und 8 Widerstände für 4 LED's so viel Hardware wären...), Zeit ist halt knapp. Aber das ist jetzt fast abgeschlossen, dann muß ich mich mal genauer an die Software ranmachen, ich habe ja nur ein kleines Testprogramm, und möchte eigentlich so viel wie möglich über Scripte machen, und das C-Proggi dafür so flexibel wie möglich. Müßte aber diese Woche noch fertig werden (also ab Morgen), dann maile ich es dir. Versprochen.

Sion

16-11-2000, 21:40
<BLOCKQUOTE><font size="1" face="Arial,Helvetica,Geneva">Zitat:</font><HR>Original erstellt von sumilan:
kannst du mir mal dein beispiel programm senden?
[/quote]

Habe das aktuelle, leider nicht laufende Proggi in den neuen Thread "Mysteriöses gcc" gepostet.

have fun,
Sion