| Autor |
Beitrag |
F.Art
      
Beiträge: 434
|
Verfasst: Di 22.03.05 21:25
Ich habe mir eine Relaischaltung gebaut die mit 5V angesteuert werden kann.
Nun möchte ich das mit dem PC verbinden und eine Software entwickeln die diesen Pin 2 von LPT ansteuern kann.
Wie wird das bewerkstelligt?
|
|
jjturbo
      
Beiträge: 516
Win2000 prof., WinXP prof.
D4 Stand., D5 Prof, D7 Prof, D2007 Prof.
|
Verfasst: Di 22.03.05 21:29
Hi,
such mal hier und/oder im Web nach io.dll. Damit schnackelts.
Gruß, jjturbo
_________________ Windows XP: Für die einen nur ein Betriebssystem - für die anderen der längste Virus der Welt...
|
|
F.Art 
      
Beiträge: 434
|
Verfasst: Di 22.03.05 21:51
Leider schnackelt es bei mir noch nicht.
Ich habe nun die io.dll und möchte diese dann mit in meine Exe einbinden und ich könnte einen code gebrauchen der den Pin 2 anspricht.
|
|
jjturbo
      
Beiträge: 516
Win2000 prof., WinXP prof.
D4 Stand., D5 Prof, D7 Prof, D2007 Prof.
|
Verfasst: Di 22.03.05 22:04
Die Port-Adresse muß dezimal angegeben werden, bei LPT1 normalerweise $378(dez.888), dann den Wert, den das Byte haben soll.
PortOut(888,1);//Setzt das erste Bit im ersten Datenbyte
PortOut(888,4);//Setzt das dritte Bit im ersten Datenbyte
PortOut(889,2);//Setzt das zweite Bit im zweiten Datenbyte
Die Belegung der Pins mußt Du der Doku entnehmen.
Gruß, jjturbo
_________________ Windows XP: Für die einen nur ein Betriebssystem - für die anderen der längste Virus der Welt...
|
|
F.Art 
      
Beiträge: 434
|
Verfasst: Di 22.03.05 22:45
Ich habe versucht über Typenbibliothek die DLL in mein Projekt ein zu fügen.
Aber es kam eine Fehler meldung das 'Fehler beim Laden der Typenbibliothek/DLL.'.
Irgendwie muß ich die doch ansprechen.
|
|
Adrian
      
Beiträge: 314
|
Verfasst: Mi 23.03.05 09:52
Servus!
Also machen wir's ganz ausführlich:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| unit PinSetzen; interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Spin, ExtCtrls;
type TForm1 = class(TForm) procedure Senden(Sender: TObject); private public end;
var Form1: TForm1; implementation
{$R *.DFM}
procedure PortOut(Port : Word; Data : Byte); stdcall; external 'io.dll';
procedure TForm1.Senden(Sender: TObject); begin PortOut($378,1); end;
|
Pin2 des LPT entspricht dem niederwertigsten Datenbit, also D0, mit "PortOut($378,0)" kann man es wieder löschen. Wichtig ist auch noch, daß die io.dll im gleichen Verzeichnis steht, in dem sich auch die exe befindet.
Gruß,
Adrian
Moderiert von raziel: Code- durch Delphi-Tags ersetzt.
|
|
F.Art 
      
Beiträge: 434
|
Verfasst: Mi 23.03.05 10:12
OK, soweit lässt der Code sich nun compelieren ohne fehlermeldung.
Gibt es nicht noch eine Möglichkeit die DLL in die Exe ein zu binden?
Oder bleibt nur die Möglichkeit, die DLL ind die Exe einzusmelzen und jedesmal wieder raus zu kopieren?
|
|
Adrian
      
Beiträge: 314
|
Verfasst: Mi 23.03.05 11:00
Servus!
Also ich persönlich kenne keine Methode, eine DLL mit einer exe zu "verschmelzen", das würde ja auch den Sinn der DLLs in puncto Modularität widersprechen. Das von mir dargestellte Beispiel verwendet den statischen Aufruf der DLL, was m.E. einfacher ist, als die dynamische Variante, aber das ändert nichts an der Tatsache, daß zum Funktionieren der Anwendung die DLL vorhanden sein muß.
Wenn man nur mit einer Datei, also ohne DLL, auskommen will, kann man entweder auf Win 9x/ME ausweichen und über ein paar Assemblerzeilen den LPT ansteuern (darüber gibts im Forum ein paar Beiträäge), oder man schreibt sich die Ansteuerung selber. Wie Letzteres geht überschreitet aber leider mein bisheriges Wissen.
Gruß,
Adrian
|
|
F.Art 
      
Beiträge: 434
|
Verfasst: Mi 23.03.05 22:15
Ich persöhnlich code kleine Tools lieber so das sie kompackt eine EXE Datei sind.
Aber in diesem Fall werde ich die DLL mal mit der Exe einsmelzen und bei aufruf meiner Exe diese DLL rauskopieren lassen.
Aber es funktioniert mit dem LPT Pin 2 wunderbar, das ist mir das wichtigste.
|
|
F.Art 
      
Beiträge: 434
|
Verfasst: So 27.03.05 18:30
Jetzt hätte ich noch ne Frage, wie kann man den Pin 2 wieder deaktivieren?
|
|
MajorTwip
Hält's aus hier
Beiträge: 1
|
Verfasst: Mo 11.04.05 13:30
mooien
hehe, das hat er weiter oben geschrieben, mit dem löschen
PortOut (888,0) oder so ähnlich.
sorry,bin VB und nicht Delphi programmer
|
|
|