Update:
Nun habe ich doch eine Referenz hier im Forum gefunden: Tommi muss wohl mal einen „Wrapper“ für „InpOut32.dll“ geschrieben haben, mit dem das gehen sollte. Die Kunst ist, nach den richtigen Suchbegriffen zu fanden. Habe ihm mal eine Mail geschickt, ob er mir das zur Verfuegung stellt -für andere, mit obigen Suchbegriffen sollte man fündig werden.
Hallo,
ich wette, das ist trivial einfach, aber habe schon einen halben Tag vergoogled, ohne ernsthaft weitergekommen zu sein.
Ich habe einen kleinen Testaufbau (Pollin-Relaiskarte) am Parallel Port (Drucker) und würde gerne zu Experimentier-/Übungszwecken via IP-Symcon und PHP Script zugreifen. Die Originalsoftware funktioniert wunderbar.
Es scheint ja in C z.B. Möglichkeiten zu geben, direkt mit OutB(Port,Wert) auf den Druckerport zu schreiben.
Wie könnte man das einfach lösen ? Dankbar für jede Hilfe.
hatte damals das selbe Problem (per Suche nicht gefunden:rolleyes:) und mir selber eine DLL gestrickt. Im Anhang die DLL und der Source-Code für Delphi5(Version 0.3 für Delphi7).
Falls jemand die DLL neu compilieren möchte: die Bibliothek PHP4Delphi wird noch benötigt.
Für den Betrieb benötig man noch die Inpout32.dll („no explicit licence is neede to use this dll for non - commercial applications“) im aktuellen oder Win-System-Verzeichnis.
Die php.ini ist in der Sektion
noch mit den folgenden Einträgen zu ergänzen:
[ul]extension_dir = "D:\Software\IPS\V1\modules" (falls noch nicht vorhanden, natürlich eigener Pfad)[/ul]
[ul]extension = SetParPort.dll[/ul]
Die SetParPort.dll dann in das entsprechende Verzeichnis (extension_dir) kopieren.
Jetzt können die Funktionen aus PHP aufgerufen werden:
- parport_setdatabit(BaseAddress:integer; Bit:string; On:boolean);
BaseAdress: Basisadresse des Parallel-Ports (z.B. LPT1:0x378, LPT2:0x278)
Bit: '0'..'7' für die Datenleitungen 0..7, '9' für alle Datenleitungen
On: True/False
- parport_setctrlbit(BaseAddress:integer; Bit:string; On:boolean);
BaseAdress: Basisadresse des Parallel-Ports (z.B. LPT1:0x378, LPT2:0x278)
Bit: 'S'=Strobe, 'L'=LineFeed, 'I'=Init, 'C'=Select, 'A'=alle
On: True/False
Ab Version 0.3:
- parport_setdata(BaseAdress:integer; Data:integer);
BaseAdress: Basisadresse des Parallel-Ports (z.B. LPT1:0x378, LPT2:0x278)
Data: Port-Daten
Rückgabewert: "OK" / "Wrong Parameters"
- parport_getdata(BaseAdress:integer);
BaseAdress: Basisadresse des Parallel-Ports (z.B. LPT1:0x378, LPT2:0x278)
Rückgabewert: Port-Daten
- parport_setctrl(BaseAdress:integer; Data:integer);
BaseAdress: Basisadresse des Parallel-Ports (z.B. LPT1:0x378, LPT2:0x278)
Data: Port-Daten
Rückgabewert: "OK" / "Wrong Parameters"
- parport_getctrl(BaseAdress:integer);
BaseAdress: Basisadresse des Parallel-Ports (z.B. LPT1:0x378, LPT2:0x278)
Rückgabewert: Ctrl-Daten
Beispiel:
```php
parport_setdatabit(0x378, '0', true);
$parData = parport_getdata(0x378);
Verwende den parallel-Port bei mir (unter W2k, SP4), um 3 LED’s für die Anzeige der Anwesenheit zu steuern.
Wer will kann das Tool gerne benutzten (natürlich ohne Gewährleistung auf defekte oder überlastete parallel-Ports )
Hallo Tinu,
funktioniert - prima. Danke für die ausführliche Hilfe.
Ebenso auch an Timmo, er hatte mir zwei Emails gesendet mit seiner Lösung - diese habe ich allerdings noch nicht am laufen, da mir noch 2 Delphi Libraries fehlen.
Die Relais klackern schon - jetzt mach ich noch schnell eine Mini-Oberfläche im Designer und werde mein erstes IP-Symcon Erfolgserlebnis haben !