Parallel Port in IPS-PHP ansteuern - wie ?

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.

Grüsse
Axel

Hallo Axel

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 :wink: )

Update: Version für IPS 2.2 hier (ungetestet).

Gruss
Tinu

Neue Version 0.3 gemäss „Wunsch“ von jörg

SetParPort02.zip (174 KB)

SetParPort03.zip (226 KB)

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 !

Grüsse
Axel