PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP zur Steuerung des LPT-Ports ?!?



Fehlfunktion
10.04.2008, 19:20
Hi,

nach 2 Jahren melde ich mich mal wieder hier im Board zu Wort, leider kenn ich meinen alten Usernamen nicht mehr :-(


Nun ja, ich wüsste gerne, ob man mittels PHP den LPT-Board direkt steuern kann. Ein Feedback ist nicht notwendig, d.h. es muss nur der "E/A-Befehl" erteilt werden (für eine Relaisplantine am LPT-Port).

Ziel ist es, ohne Zusatzprogramme oder Module zu arbeiten -> Daher eine direkte Steuerung!

Kann mir da einer weiterhelfen?

THX & CU

Andun
11.04.2008, 08:11
Ziel ist es, ohne Zusatzprogramme oder Module zu arbeiten -> Daher eine direkte Steuerung!

Hi

Also so einfach wird es nicht gehen. Das Problem ist, dass der Apache Webserver, welchen du ja wahrscheinlich einsetzten willst, erstmal nichts mit dem Druckerport zu tun hat. Warum sollte er auch.

Es gibt aber shcon Zusatzprogramme, bzw. Module für Apache, die das möglich machen. (Nie probiert, aber öfter mal gelesen. Weiß aber leider auch keinen Namen mehr ...)

mfg
Andun

askazo
11.04.2008, 08:31
Am einfachsten wird es sein, wenn Du den Zugriff auf den LPT-Port in einem kleinen Programm regelst, dass Du mit C++ / Basic oder ähnlichem schreibst und dieses dann aus PHP per exec() aufrufst.

Direkt ohne Umwege aus PHP ist das ansonsten nicht möglich.

Gruß,
askazo

Lemonsquash
11.04.2008, 10:35
Ist es wohl :P

Du warst mit exec schon auf dem richtigen Weg:
system() ist der Aufruf, der hier notwendig ist. Mit diesem kannst du systembefehle direkt verschicken. Unter Linux also zum Beispiel ein echo auf /dev/ttyS0 (seriell, parallel weiß ich grad ned auswendig). Unter Windows geht das auch (mit DOS-Befehlen). Da gäbe es zum Beispiel den com-command DEBUG mit dem du Assemblercode ausführen kannst (also auf den Parallelport schreiben)

ABER ACHTUNG: der system() - aufruf kann aus Sicherheitsgründen deaktiviert sein. Wenn du ihn benutzt solltest du vorher sicherstellen, dass niemand sonst auf dem Server PHP-Skripte raufladen und ausführen kann.

Mfg.
Lemon

Scoby
11.04.2008, 11:48
der system() Aufruf SOLLTE per default deaktiviert sein. Sowas sollte man ausschließlich auf Inselsystemen machen. Ansonsten kannst du, wenns nicht Zeitkritisch ist, über eine Datenbank / Textdatei und ein weiteres Programm realisieren. Wenn du die Kiste ans Netz Hängen willst würd ich es so machen.

Scoby

askazo
11.04.2008, 11:57
Oha, system() kannte ich auch noch nicht.
Wieder was dazugelernt.

Lemonsquash
11.04.2008, 13:19
Sowas sollte man ausschließlich auf Inselsystemen machen. Ansonsten kannst du, wenns nicht Zeitkritisch ist, über eine Datenbank / Textdatei und ein weiteres Programm realisieren. Wenn du die Kiste ans Netz Hängen willst würd ich es so machen.
Scoby

Da stimme ich Scoby soweit voll zu. Deswegen auch mein Hinweis, dass darauf geachtet werde muss, das an dem Server niemand anderes was macht.

Auf keinen Fall solltest du in dem Systemaufruf irgendwas mit ungeprüften übergebenen werten oder gar direkten Variablen machen.

Also etwas wie:


system($_GET['befehl']);

ist maximal tabu!!!!

Mfg.
Lemon

dundee12
11.04.2008, 14:59
Also ich nutze auch den exec Befehl und ein weitere Programm für meine Relaisplatine, das sich über Parameter ansteuern lässt.

Funktioniert wunderbar.
Das Programm heißt Z-Parswitch!

Merew
13.04.2008, 19:02
exec ("echo Hallo > LTP1");

geht doch wunderbar Oo

Fehlfunktion
15.04.2008, 03:38
Also erst mal ein Danke an Alle, für die vielen Antworten - wobei ich die letzte von Merec irgendwie als "Sarkasmus" auffasse - FUNZT NET :D

Jedenfalls war besonders der Hinweis von Dundee12 hilfreich! Da ich das Program Z-ParSwitch eh seit geraumer Zeit auf der Platte hatte, habe ich es mal ausprobiert. Und obwohl die Hilfestellung seitens GOOGLE und CO relativ mies war, habe ich es hinbekommen!

Jedoch ein Manko - der Zeitlag - vielleicht liegts in der Tat an meiner Rechnerkrücke - aber die Steuerung braucht "lange"! Wobei das nur durch den Aufruf der Z-ParSwitch.exe ist (falscher Dateiname = schnellere Abwicklung)!

Falls einer ne "bessere Methode kennt", ohne den Zeitlag, - bitte Melden!

Und an Merew - sollte das mit dem .... "(echi Hallo > LPT1") ... wirklich "sarkastisch" sein?

cu

dundee12
15.04.2008, 11:43
Jedoch ein Manko - der Zeitlag - vielleicht liegts in der Tat an meiner Rechnerkrücke - aber die Steuerung braucht "lange"!

Hm, bei mir ist da etwa eine Verzögerung von 2-3 Sekunden drin, mehr nicht!

Fehlfunktion
15.04.2008, 14:05
Kann man irgendwie die "Datei" in den Speicher geladen halten (diese Z-ParSwitch), so dass der Zugriff schneller erfolgt?

einballimwas
16.08.2008, 23:05
Falls es noch jemanden interessiert: Mit PHP kann man die Serielle Schnittstelle Auslesen und befehle senden, siehe mikrokontroller.net...

dundee12
16.08.2008, 23:47
Falls es noch jemanden interessiert: Mit PHP kann man die Serielle Schnittstelle Auslesen und befehle senden, siehe mikrokontroller.net...

Du meinst wohl eher http://www.mikrocontroller.net/ ;)

Mal gucken ob ich damit was anfangen kann und es für meine Steuerung verwenden kann.


Da isses:
http://www.mikrocontroller.net/articles/Ports_benutzen_(PHP)