Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Delphi Parallele Schnittstelle (https://www.delphipraxis.net/128070-parallele-schnittstelle.html)

delphi-projekt 23. Jan 2009 14:34


Parallele Schnittstelle
 
Hallo alle miteinander,

sorry für diese x-te Frage zu diesem Thema, aber ich brauche dringend Hilfe. :wall:
Ein Kumpel und ich wollen eine an den PC angeschlossene Fernbedienung ansprechen.
Diese Fernbedienung ist über den Druckeranschluss(parallele Schnittstelle) angeschlossen.
Nun zu meinem Problem: Ich nutze Windows XP und habe absolut keinen durchblick wenn es um
solche Anschlüsse geht. In diversen Threads bin ich auch nicht weiter gekommen.

Der Anschluss ist so aufgebaut, das Pin 3,5,7 und 9 angesprochen werden müssen.
der Pin 1 und 13 sind der + und - Pol.

Kann mir irgend einer einen Quellcode geben, den ich nutzen kann?

RWarnecke 23. Jan 2009 14:53

Re: Parallele Schnittstelle
 
Hallo und willkommen in der DP :dp: ,

was hast Du denn schon ? Zu diesem Thema gab es so einige Beiträge hier schon im Forum. Ich bin gerne dazu bereit, Dir zu helfen, wenn Du an einer Stelle im Sourceocode nicht weiterkommst. Aber einen kompletten Sourcecode wirst Du hier nicht so einfach bekommen.

omata 23. Jan 2009 15:24

Re: Parallele Schnittstelle
 
klick

delphi-projekt 24. Jan 2009 09:17

Re: Parallele Schnittstelle
 
Naja, mein Probelm ist hauptsächlich das, dass ich ja Windows XP nutzen muss.

Zur Vorgeschichte: Wir müssen in unserer Schule ein Delphi-Projekt starten, am besten etwas
ausgefallenes (für bessere Abiturnoten etc.)

Ich habe mit einem Kumpel also ein kleines RC Auto genommen, welches wir über den PC steuern wollen.
Die Fernbedienung ist so umgebaut, dass aus der Fernbedienung ein Druckerkabel kommt. Dabei sind
in dem Druckerkabel verschiedene Pins aktiviert die wir ansprechen müssen.

Z.b. Wenn wir eine Stromquelle (5V) an Pin 3 anschließen fährt das Auto gerade aus. Wenn wir diesen
Impuls nun an Pin 5 anschließen, fährt das Auto nach rechts.

Mein Problem ist nun halt das, das ich nicht so recht weiß, wie so ein Quelltext aufgebaut sein muss
da ich ein absoluter Anfänger bin. Außerdem war immer wieder von verschiedenen DLL´s die Rede.

Könntest du mir also helfen RWarnecke?

PS: Die Fernbedienung funktioniert schon :spin2: *stolz* :spin2: .

little_budda 24. Jan 2009 10:55

Re: Parallele Schnittstelle
 
Hallo,

schau dir mal diesen Thread an.
Da findest du auch Beispielcode.

Gruß Holger.

delphi-projekt 30. Jan 2009 13:23

Re: Parallele Schnittstelle
 
Hallo alle zusammen. Leider sind wir echt nicht weiter gekommen mit dem Quelltext. Kann uns denn nicht jemand noch irgendwie helfen?

Es gibt immer Fehlermeldungen, und unsere Fernbedienung wird einfach nicht angesprochen.

Klaus01 30. Jan 2009 13:28

Re: Parallele Schnittstelle
 
.. dann zeige doch mal Deinen SoruceCode.


Grüße
Klaus

blink182 30. Jan 2009 13:34

Re: Parallele Schnittstelle
 
hi,
wir machen in der Schule auch was mit Hardware in Delphi, nutzen aber die Serielle Schnittstelle (ComPort), vllt solltet ihr darauf umsteigen, ist relativ leicht mit TComPort (Doku) ist auch kostenlos.
Hab eben mal geschaut, vllt hilft euch das ja weiter. Dort wird gezeigt wie man mit Delphi die parallele Schnittstelle ansteuert.
Viel Glück noch bei eurem Projekt :)
MfG blink182

delphi-projekt 3. Feb 2009 17:47

Re: Parallele Schnittstelle
 
Oh, danke, das letzte zur parallelen Schnittstelle hat wirklich geholfen.
Nur noch ein Problem gibt es, wie kann ich einen - Pol per Delphi und PC ausgeben lassen?

Wäre gut, wenn ihr eine schnelle Antwort wüsstet.

Danke :gruebel:

Klaus01 3. Feb 2009 17:53

Re: Parallele Schnittstelle
 
Guten Abend,

meinst Du mit Pol einen bestimmten Pin der Schnittstelle?

Die Datenpins sind ja D0 bis D7
Ein Char hat 8 Bit oder auch ein Byte.
Der Char #01 würde dann D0 ansprechen
Der Char #02 würde dann D1 ansprechen
Der Char #04 würde dann D2 ansprechen.

Grüße
Klaus

delphi-projekt 3. Feb 2009 18:12

Re: Parallele Schnittstelle
 
Also unser Stecker der parallelen Schnittstelle
hat die Pins 1 bis 25 (Steckername: Sub-D 25).

So Pin 1 soll nun die Plus Spannung haben,
Pin 3 und 13 dafür sollen eine Negative Spannung haben.

Delphi-Quellcode:
const
  port = $378;


procedure TForm1.cbData0Click(Sender: TObject);
var
  b : byte;
begin
  GetPortVal(port,@b,1);
  if cbData0.checked
  then
    b := b or 1     // Bit0 setzen
  else
    b := b and 254; // Bit0 zurücksetzen, 255-1
  SetPortVal(port,b,1);
end;

So sieht also unser Quelltext aus. Wenn CheckControl geklickt wird, soll es den Bit0 aktivieren.
Stimmt das soweit? Also kommt ja automatisch eine positive Spannung. Wie ist das aber nun, wenn ich eine negative Spannung brauche?

letsfetz 3. Feb 2009 18:54

Re: Parallele Schnittstelle
 
Zitat:

Zitat von delphi-projekt
...Wie ist das aber nun, wenn ich eine negative Spannung brauche?

Eine "negative" Spannung wirst du dem Paralellport nicht entlocken können. Aber ich vermute du meinst damit 0 Volt. Entweder EINS (entspricht ca. +5 Volt) oder NULL (Entspricht ca. 0 Volt)

Eine negative Spannung zu schalten (erzeugen) würde einen viel größeren technischen Aufwand bedeuten.

Klaus01 hats bereits richtig gesagt. Das Bitmuster im Char gibt den Zustand an den 8 Bits am Parallelport wieder.
Somit brauchst du doch nur das richtige Bitmuster (den Char) an den Parallelport übermitteln und schon hast du den entsprechenden Zustand an den Pins. Ob du die nun ver-ORST oder verUNDEST oder einfach nur als "Wert" an den Port übergibst... egal.

delphi-projekt 3. Feb 2009 19:18

Re: Parallele Schnittstelle
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, also nun mal ein Bild zur näheren Information.

Hier schauen

Gut also, es gibt ja die Pins 1-25 bei einem Stecker. Nun haben wir also unsere
Fernbedienung so umgebaut das der PIN3 das Auto gerade aus fahren lässt, PIN 5
dagegen rückwärts, usw...... .

An dem PIN 1 des Steckers soll der Plus Pol sein, dass heißt, wir haben in unserem Quelltext
Delphi-Quellcode:
procedure TForm1.cbData0Click(Sender: TObject);
var
  b : byte;
begin
  GetPortVal(port,@b,1);
  if cbData0.checked
  then
    b := b or 1     // Bit0 setzen
  else
    b := b and 254; // Bit0 zurücksetzen, 255-1
  SetPortVal(port,b,1);
end;
den Pin angesprochen, wenn die Checkbox aktiviert ist. Soweit ist das uns ja ganz klar.

Unser Problem ist jetzt nur das, das der PIN 3, 5 usw. sowie ganz wichtig der PIN 13 negativ gepolt sein müssen. Wie bekommen wir das nun hin? Weil nur so funktioniert das Auto auch.

delphi-projekt 3. Feb 2009 19:21

Re: Parallele Schnittstelle
 
Noch einen Anhang....

die PINS 3,5,....13 müssen nur als - Pol vereinbart sein.
Hatte nen Begriffsfehler.

Blup 11. Feb 2009 10:18

Re: Parallele Schnittstelle
 
Hier werden eigentlich alle Fragen beantwortet:
http://www.epanorama.net/circuits/parallel_output.html

Die Steuerung insbesondere der negativen Spannung über Optokoppler erscheint mir sinnvoll.

letsfetz 11. Feb 2009 13:31

Re: Parallele Schnittstelle
 
Zitat:

Zitat von delphi-projekt
Noch einen Anhang....

die PINS 3,5,....13 müssen nur als - Pol vereinbart sein.
Hatte nen Begriffsfehler.

Ich habe da echt ein Problem mit der genauen Aufgabenstellung. Es ist nicht so dass ich mich in der Elektronik nicht auskennen würde... Aber bitte definier mal " - Pol " ?!?

Entweder du hast Spannungen (zb. +5 Volt) gegen GND (Masse) oder negative Spannung ( - 5 Volt ) gegen Masse.
Wo sitzt deine Masse ? Wie versuchst du die Fernbedienung anzusteuern ? (Ein Schema mit entsprechenden benötigten Spannungspotentialen wäre sehr hilfreich). Um eine negative Spannung "schaltbar" über den Parallelport auszugeben brauchst du mindestens ein weiteres externes Netzteil und ne entsprechende Logikschaltung.

Diese Logik steckt dahinter: Du willst beispielsweise eine negative Spannung von -5V (gegen Masse) erzeugen. Hast aber nur ne positive Spannung (+ 5 Volt gegen Masse) die dir der Parallelport liefert. Ergo musst du mit einer entsprechenden Schaltung dafür sorgen, daß das positive +5 Volt Signal an der Paralellschnittstelle in ein negatives ( -5V ) Signal umgewandelt wird. Dazu brauchst du ne externe Spannungsquelle und einen entsprechende Logik. Blup sagte schon einen brauchbaren Lösungsansatz.
Zitat:

Zitat von Blup
Die Steuerung insbesondere der negativen Spannung über Optokoppler erscheint mir sinnvoll.

Aber vielleicht verstehe ich dein Anliegen auch falsch. Bitte definier mal die elektrischen Gegebenheiten mal ganz genau, damit man dir helfen kann. :-) Also ein Schema auf dem man die gewünschte Verkabelung, die Komponenten und die geforderten Spannungen heraussehen kann.

[EDIT] nach Grübeln über dein Problem denke ich, du meinst mit " - POL " vielleicht den Minuspol der Spannungsquelle an der Fenbedienung ? - In diesem Fall könnte man mit einem Inverter das Signal einfach "umdrehen". D.h. Kommt ein positives Signal, dann wird der Ausgang 0 Volt. also gegen GND gezogen. Der "Minuspol" wäre in dem Fall 0 Volt [/EDIT]

matashen 11. Feb 2009 15:05

Re: Parallele Schnittstelle
 
Mach das
Delphi-Quellcode:
 b := b or 1     // Bit0 setzen
lieber so

Delphi-Quellcode:
B:=b or $1 //Bit 1 setzen
b:=b or $3 //Bit 2 setzen
b:=b or $7 //Bit 3 setzen
b:=b or $f //Bit 4 setzen
b:=b or $1f //Bit 5 setzen
b:=b or $3f //Bit 6 setzen
b:=b or $7f //Bit 7 setzen
b:=b or $ff //Bit 8 setzen
und wegnehmen mit

b:=b- $3


etc...

Reinhard Kern 11. Feb 2009 17:32

Re: Parallele Schnittstelle
 
Zitat:

Zitat von matashen
Mach das
Delphi-Quellcode:
 b := b or 1     // Bit0 setzen
lieber so

Delphi-Quellcode:
B:=b or $1 //Bit 1 setzen
b:=b or $3 //Bit 2 setzen
b:=b or $7 //Bit 3 setzen
b:=b or $f //Bit 4 setzen
b:=b or $1f //Bit 5 setzen
b:=b or $3f //Bit 6 setzen
b:=b or $7f //Bit 7 setzen
b:=b or $ff //Bit 8 setzen
...

Hallo, wenn schon dann

Delphi-Quellcode:
B:=b or $1 //Bit 1 setzen
b:=b or $3 //Bit 1 und 2 setzen
b:=b or $7 //Bit 1 und 2 und 3 setzen
b:=b or $f //Bit 1,2,3,4 setzen
nicht dass das einen Sinn macht, und der Vorschlag fürs Rücksetzen auch nicht.

Gruss Reinhard

matashen 12. Feb 2009 08:35

Re: Parallele Schnittstelle
 
wollte nur zeigen wie man Bits setzt, da die vorgehensweise des Threaderstellers etwas holprig war.

Aber mein komment war falsch, da haste recht :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz