Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - LED am COM-Port zum Leuchten bringen
delphi-programmierer - So 06.05.07 11:26
Titel: LED am COM-Port zum Leuchten bringen
Hallo Leute,
ich bin in der Hardware-Programmierung völlig neu.
Ich wollte über die serielle Schnittstelle (COM1) eine LED beim Klick auf den Button zum Leuchten bringen. Ein Klick auf einen zweiten Button soll die LED ausgehen lassen.
Die Frage ist jetzt, an welchen Pins ich die LED anschließen muss und wie kann ich diese Pins steuern?
Bitte helft mir
aim65 - So 06.05.07 12:18
Wenn Du über die Suche (hier und bei Google) RS232 eingibst, dann kriegst Du tonnenweise Links.
Für eine simple Ansteuerung einer LED würde ich eine Handshake-Leitung nehmen (DTR oder RTS), die Du statisch setzen kannst.
Die Sache ist nicht trivial, da Du nur entweder direkt über die Windows-API oder über eine Komponente / DLL auf die RS232 zugreifen kannst. (z.B. TComport, RSCOM.dll und viele andere mehr).
Hier ein Link, der Dir vielleicht weiterhelfen kann:
http://www.hsg-kl.de/faecher/inf/msr/seriell/prowo04/TCPD.php
Ich benutze übrigens die simple RSCOM.dll von Burkhard Kainka (siehe
http://www.b-kainka.de/). Es gibt aber noch sehr viele andere DLL's/Komponenten.
delphi-programmierer - So 06.05.07 13:27
Hallo Leute,
ich habe mir ein Turorial mit Unit von CyCode
http://www.cycode.net/tutorials.html heruntergelagen. Mit der Anweisung:
Delphi-Quelltext
1: 2:
| OpenCom('COM01'); dtr(1); |
habe ich den 4. Pin angesprochen. Leider kam aber zwischen Masse (Pin 5) und DTR keine Spannung an.
Was mache ich falsch?
Reinhard Kern - So 06.05.07 17:37
delphi-programmierer hat folgendes geschrieben: |
Hallo Leute,
ich habe mir ein Turorial mit Unit von CyCode http://www.cycode.net/tutorials.html heruntergelagen. Mit der Anweisung:
Delphi-Quelltext 1: 2:
| OpenCom('COM01'); dtr(1); |
habe ich den 4. Pin angesprochen. Leider kam aber zwischen Masse (Pin 5) und DTR keine Spannung an.
Was mache ich falsch? |
Hallo,
wahrscheinlich misst du falsch, denn zwischen DTR und GND liegt immer eine Spannung, egal ob und was du programmiert hast: + 12 V ist logisch 1, - 12 V ist logisch 0 (im Idealfall, aber weniger als +- 6 V sollten es nicht sein).
Gruss Reinhard
delphi-programmierer - So 06.05.07 19:15
Hallo Leute,
danke für eure Antworten. Hatte mein Multimeter auf Wechselspannung (wär mal zum Augenarzt gehen müssen). Egal ob ich DTR(1) oder DTR(0) setze bleibt die Spannung gleich (ca. 10V). Wäre es möglich, mit API-Funktionen den DTR-Pin an und auszuschalten (vielleicht mit EscapeCommFunction)? Ich wäre für ein kurzen Beispielcode sehr dankbar.
aim65 - Mo 07.05.07 14:56
In dem von mir oben angegebenen Link hättest Du u.a. das hier gefunden: :)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TComPort.RTS (State:Integer); begin if State=0 then EscapeCommFunction(PortHandle,CLRRTS) else EscapeCommFunction(PortHandle,SETRTS); end;
procedure TComPort.DTR (State : integer); begin if State = 0 then EscapeCommFunction(PortHandle,CLRDTR) else EscapeCommFunction(PortHandle,SETDTR); end; |
delphi-programmierer - Mo 07.05.07 15:21
Danke für dein Beispiel. Die Spannung wechselt jetzt ihre Palarität (von -12 auf +12).
Wäre es eigentlich auch möglich eine Spannung von 0 Volt zu erzeugen.
aim65 - Mo 07.05.07 15:36
JEIN.
Nein - wenn Du einen dritten Zustand ("Tristate" =0Volt, bzw. "floating") haben willst.
Das gibt's aus gutem Grund bei der RS232 nicht.
Ja - wenn du nur zwei Zustände haben willst (+12V / 0V oder -12V / 0V). In diesem Fall musst du aber mit entsprechender Hardware (Pegelwandler) selbst für eine entsprechende Spannungsverschiebung/Teilung sorgen. Zur Umsetzung der +12/-12Volt-Pegel auf TTL (5V/0V) gibt es fertige ICs (z.B. Maxim MAX232), die wenig kosten und meines Wissens in beiden Richtungen arbeiten.
Da man sowieso nix direkt an eine Computer-Schnittstelle hängen sollte, ist das mit ein oder zwei Transistoren eh kein Problem.
delphi-programmierer - Mo 07.05.07 16:13
Danke für deine ausführliche Beschreibung. Ich glaub ich werd mir mal eine Platine, 4 Elkos und den MAX232 bei REICHELT bestellen. Allerdings gibt es mehrere Ausführungen des MAX232. Das sind z.B.
"MAX232 ACPE" , "MAX232 ACSE" , "MAX232 ACWE" und noch andere. Welchen Typ brauch ich?
aim65 - Mo 07.05.07 16:26
Vorsicht - das ist hier kein Elektronik-Forum, wir sind schon ziemlich OT!
Zu deiner Frage: DAS überlasse ich dir :mrgreen: :mrgreen: :mrgreen:
Aber ich will mal nicht so häßlich sein:
1) lade dir das Datenblatt von Maxim runter --> Seite 35.
2) Nimm ACPE (16 pin DIP), die anderen sind SMD-Packages.
Viel Spaß
delphi-programmierer - Mo 07.05.07 16:38
Dann werd ich den mal nehmen.
Danke nochmal an aim65.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!