Autor Beitrag
delphi-programmierer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 48

DOS, WIN XP
RAD Studio 2010, Turbo Pascal 6.0
BeitragVerfasst: So 06.05.07 11:26 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 312

Win 9x, Win XP
Delphi 3pro, 7PE
BeitragVerfasst: 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:
www.hsg-kl.de/faeche...ell/prowo04/TCPD.php
Ich benutze übrigens die simple RSCOM.dll von Burkhard Kainka (siehe www.b-kainka.de/). Es gibt aber noch sehr viele andere DLL's/Komponenten.
delphi-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 48

DOS, WIN XP
RAD Studio 2010, Turbo Pascal 6.0
BeitragVerfasst: So 06.05.07 13:27 
Hallo Leute,

ich habe mir ein Turorial mit Unit von CyCode www.cycode.net/tutorials.html heruntergelagen. Mit der Anweisung:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 591
Erhaltene Danke: 14



BeitragVerfasst: So 06.05.07 17:37 
user profile icondelphi-programmierer hat folgendes geschrieben:
Hallo Leute,

ich habe mir ein Turorial mit Unit von CyCode www.cycode.net/tutorials.html heruntergelagen. Mit der Anweisung:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 48

DOS, WIN XP
RAD Studio 2010, Turbo Pascal 6.0
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 312

Win 9x, Win XP
Delphi 3pro, 7PE
BeitragVerfasst: Mo 07.05.07 14:56 
In dem von mir oben angegebenen Link hättest Du u.a. das hier gefunden: :)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TComPort.RTS (State:Integer); //RTS entweder auf 0 oder auf 1 setzen
begin
 if State=0 then
  EscapeCommFunction(PortHandle,CLRRTS)
 else
  EscapeCommFunction(PortHandle,SETRTS);
end;

procedure TComPort.DTR (State : integer); //DTR entweder auf 0 oder 1 setzen
begin
 if State = 0 then
  EscapeCommFunction(PortHandle,CLRDTR)
 else
  EscapeCommFunction(PortHandle,SETDTR);
end;
delphi-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 48

DOS, WIN XP
RAD Studio 2010, Turbo Pascal 6.0
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 312

Win 9x, Win XP
Delphi 3pro, 7PE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 48

DOS, WIN XP
RAD Studio 2010, Turbo Pascal 6.0
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 312

Win 9x, Win XP
Delphi 3pro, 7PE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 48

DOS, WIN XP
RAD Studio 2010, Turbo Pascal 6.0
BeitragVerfasst: Mo 07.05.07 16:38 
Dann werd ich den mal nehmen.
Danke nochmal an aim65.