Softwaretool für Parallelschnittstelle ( LPT)?

Dec 03, 2011 28 Replies

Hallo Group!



Habe da mal wieder so eine Sache...



Ich habe ein elektrisches Signal, passender weise sogar mit TTL-Pegel (0V/5V) als "Vorfallmeldung".



Jedes mal wenn dieses Signal auf "High" springt, möchte ich ein Foto mittels Webcam schießen, die an dem PC (W2k) hängt der eh vor Ort ist.



Die Webcam tut das gewünschte ordentlich via Komandozeile / Batchbefehl.



Das letzte Stückchen was mir noch fehlt, und wo mir die letzten 2 Stunden selbst Google nicht weiter helfen konnte:



Ein kleines Programm welches z.B. eine Leitung am LPT-Port beobachtet und die Batch-Datei aufruft wenn da was wackelt.



Andersherum kein Problem. Haufenweise Programme welche die LPT als Schaltausgang z.B. für Relaissteuerungen usw. nutzen. Aber als Eingang nix...nichtmal ansatzweise was gefunden..:-(



Da muss es doch was geben...so derart ungewönlich kann mein Vorhaben doch nicht sein?



Für ein Tip wäre ich dankbar!



Grüße aus Dortmund



Jürgen Hüser


www.funktechnik-hueser.de

Lesen geht ueber einen der Feedback Register Pins da das eh schon Inputs sind. Sieh Dich mal in der Robotik-Ecke um. Vielleicht kommst Du hiermit weiter:

formatting link

Anzeigen tut es dann, wie weit das mit Batch File Aktivierung geht muessest Du ausprobieren oder im VB selbst dazuschreiben (Source Code ist dabei). Kann bei Win2k aber sein dass es nur ueber die DLL geht, dazu gibt es etwas info hierueber:

formatting link

Gruesse, Joerg http://www.analogconsultants.com/

Die Low-Tech Lösung: alte USB-Tastatur nehmen (oder neue für 5 Euro kaufen), zwei Kabel an eine Taste löten, ggf. noch mit Schalttransistor und mit der Windows Script Engine deiner Wahl die Taste abfragen und dann das Script aufrufen.

Ein klein wenig mehr Hightech: Selber eine "Tastatur" per Microcontroller implementieren :-)

formatting link

Die ultimative Lösung: Ein gerätespezifisches USB-HID Device, nebst passender HID-Auswertesoftware programmieren.

Frank Buss, http://www.frank-buss.de piano and more: http://www.youtube.com/user/frankbuss

Low-tech Brachialmethode, Ingenieure in Paraguay moegen ab hier bitte nicht weiterlesen oder wenigstens vorher eine Magentablette nehmen:

RS232 Port nehmen, auf Remote Echo mit Loop Check schalten, weitgehend "high" senden. Widerstand von TXD nach RXD. Diode oder Relais an das Kabel mit dem TTL Signal. Das zieht bei Null den RXD Pin auf Masse, Loop Check meldet COM Failure, Kamera wird ausgeloest. Bei der Diodenversion aufpassen dass der Widerstand hoch genug ist dass er die TTL Versorgung nicht raufzieht, denn der "lehnt sich in die Substratdiode".

Gibt auch noch Tricks mit anderen RS232 Pins, ist ja interrupt-faehig. Koennte man die Diode sparen :-)

Gruesse, Joerg http://www.analogconsultants.com/

Das meinte ich mit Tricks. Muss man aber eine Software finden die das als Statusaenderung so verknusern kann dass ein Batch File gestartet wird. Oder wo man das irgendwie per Script reinzimmern kann. Wenn das auch nur fuenf Minuten laenger dauert haette ich die beiden Bauteile schon angeloetet und das Kabel zugentlastet :-)

Ich habe Rechner gesehen da war ein LPT Port dran aber keine echte RS232. Das musste man dann ueber USB machen. Wuerde fuer die Kamera vermutlich auch noch schnell genug reagieren.

Gruesse, Joerg http://www.analogconsultants.com/

Viel zu kompliziert :) und zu teuer, da Diode + R verplempert :p

Einfach RI nehmen und einen IR auslösen lassen. Notfalls zyklische Statusabfrage des COMport statusRegs bzw. ModemControlReg (weiss nicht mehr genau, wo das RI zu begaffen ist.

Wer LPT hat, hat auch RS232 :)

Saludos Wolfgang

Wolfgang Allinger 15h00..21h00 MEZ: SKYPE:wolfgang.allinger Paraguay mailer: CrossPoint XP 3.20 (XP2) in WinXPprof DOSbox Meine 7 Sinne: reply Adresse gesetzt! Unsinn, Schwachsinn, Bloedsinn, Wahnsinn, Stumpfsinn, Irrsinn, Loetzinn.

Am 04.12.2011 00:45, schrieb Frank Buss:

Ich habe die Tastatur entsorgt und nur den Controller im Einsatz. Frage so 8 Kontakte ab und das funktioniert top. Preiswerter, zuverlässiger und nachbausicherer (auch bei einem evt. Defekt) geht es wohl kaum. Gruß Mirko

Beispiel 1:

ProfiLab Expert 4.0 von

formatting link
eigentlich so eine Art Mini-Labview

Da greift man sich dann den LPT-Port und das "Programm ausführen"-Element, verbindet diese und lässt es nach Einstellung der Portadresse und des auszuführenden Programmes im Hintergrund laufen.

Beispiel 2:

Girder von

formatting link

eine Was-passiert-dann-Maschine, ursprünglich wohl mal zur Auswertung von Fernsteuerungen entwickelt. Kann diverse PC-Ereignisse auswerten und daraus folgend Aktionen starten. Ich benutze das im QRL um bei Empfang eines bestimmten seriellen Schnittstellentelegrammes ein Batch zu starten. Funktioniert aber ähnlich auch mit anderen PC-Schnittstellen und -Ereignissen.

Beides keine Freeware aber für zweistellige Eurobeträge zu haben.

Beispiel 3:

C-Compiler anschmeissen und den Overhead selber programmieren.

"Jürgen Hüser" schrieb...

Falls du das gute alte Qbasic noch hast, da gibt es kleine Programmschnippselchen, die die Ports abfragen.

formatting link
Hier gibts u.a. auch eine portadr.bas oder eine lpt1_in.bas, oder einen Parallelport-Debugger. Vielleicht lässt sich da was "ausschlachten" und "missbrauchen". Abschnitt 9.1 ist vielleicht interessant.

W.

Am 04.12.2011 10:12, schrieb Wolfgang P u f f e:

Ähh, direkter Zugriff auf die I/O-Ports -- geht das bei einem modernen Windows noch?! Ich kann es mir nicht vorstellen.

Unter Linux muss man sich zumindest vor jedem inb/outb erst per ioperm mit Root-Rechten die entsprechenden Permissions holen. Und das ist schon ziemlich ziemlich schmutzig programmiert dann.

Viele Grüße, Johannes

>> Wo hattest Du das Beben nochmal GENAU vorhergesagt? > Zumindest nicht öffentlich! Ah, der neueste und bis heute genialste Streich unsere großen Kosmologen: Die Geheim-Vorhersage. - Karl Kaos über Rüdiger Thomas in dsa

Das geht, aber nicht mehr ganz so direkt und vor allem nicht mehr so "echtzeitmaessig" wie frueher:

formatting link

Wobei wir in einer Firma NT4.0 mal ziemlich echtzeitmaessig umgestrickt haben, mit Erlaubnis von MS. Da geht eine ganz Menge.

Bei Windows geht es auch ueber Permission.

Gruesse, Joerg http://www.analogconsultants.com/

Ja, wird aber nicht empfohlen und braucht von Microsoft undokumentierte Funktionen, z.B. Ke386SetIoAccessMap. Kann also sein, daß es z.B. nach dem nächsten Sicherheitsupdate nicht mehr läuft. Besser einen Treiber schreiben, oder den Portzugriff über einen generischen Treiber abwickeln, wenn es nicht laufzeitkritisch ist:

formatting link

Frank Buss, http://www.frank-buss.de piano and more: http://www.youtube.com/user/frankbuss

Hallo zusammen,

Warum eigentlich nicht via API-Calls, die dafür gedacht sind? Ich hab die jetzt nicht parat, aber so schwer war das seinerzeit mit dem COM-Port auch nicht. Das sollte mit dem LPT nicht schwieriger sein.

Alternativ gibt es reihenweise DLLs, die das anbieten. GiveIO war IMHO auch so 'n Tool, mit dem man dann einfach wieder Portzugriffe machen konnte.

Marte

Doch, das geht. Aber natürlich benötigt man einen Treiber, der den Zugriff auf die Ports "freischaltet".

Im Prinzip ist das bei Windows ganz genauso. Den Treiber kann man auch nur mit Adminrechten laden. Allerdings wäre es sogar möglich, den Treiber dauerhaft zu laden und die Zufriffsrechte nur prozess-selektiv anhand ihrer Besitzer-ACLs herauszurücken.

Zumindest eine grobe Steuerung in dieser Art habe ich schonmal irgendwo gesehen. Mit "grob" meine ich: Alle durch den Treiber zum Zugriff freigeschalteten Ports konnten von allen Benutzern in einer bestimmten Gruppe tatsächlich benutzt werden. Natürlich nicht gleichzeitig, das führt dann logischerweise zum Chaos.

Klar, so sollte man es idealerweise tun. Aber es gibt Situationen wo Latenzzeiten was kritischer sind. War bei unserem Projekt damals in den

90ern der Fall. Aus Gruenden der Kompatibilitaet mussten wir Windows benutzen.
Gruesse, Joerg http://www.analogconsultants.com/

Doch, ist es. Schlicht deshalb, weil Windows LPT längst nicht in dem Maße unterstützt wie COM. Es gibt für LPT keine API-Entsprechung für die für COM-Ports verfügbaren GetCommModemStatus() und EscapeCommFunction().

Möglich, aber schmutzig (und natürlich sehr, sehr unsicher).

Noch `ne weitere Idee:

Olle Maus nehmen und eine der Tasten mit dem Signal beaufschlagen.

IIRC haben viele Maustreiber die Möglichkeit die Tastenbelegung zu editieren und dann kannst ja die Batch oder sonstwas zum triggern der Webcam nehmen.

5V TTL hättest Du auch direkt vor Ort.

Wenn Du unterschiedliche Mäuse x*USB hast, solltest Du eigentlich andere/getrennte Treiber finden oder alte PS/2 Maus kastrieren.

Saludos Wolfgang

Wolfgang Allinger 15h00..21h00 MEZ: SKYPE:wolfgang.allinger Paraguay mailer: CrossPoint XP 3.20 (XP2) in WinXPprof DOSbox Meine 7 Sinne: reply Adresse gesetzt! Unsinn, Schwachsinn, Bloedsinn, Wahnsinn, Stumpfsinn, Irrsinn, Loetzinn.

Am 04.12.2011 20:30, schrieb Wolfgang Allinger:

Netzschalter mit dem Signal beaufschlagen und das Programm in den Autostart-Ordner ;-)

SCNR, aber die API-Funktion GetCommStatus existiert.

Viele Grüße, Alfred.

Am 05.12.2011 01:14, schrieb Wolfgang Allinger:

Eigentlich dachte ich an was Handfestes (C, VB, Delphi o.ä).

Das sieht genial einfach aus. Morgen mal testen.

ALfred.

No problem, aber kann man die API auch aus einer batch Datei aufrufen?

Saludos Wolfgang

Wolfgang Allinger 15h00..21h00 MEZ: SKYPE:wolfgang.allinger Paraguay mailer: CrossPoint XP 3.20 (XP2) in WinXPprof DOSbox Meine 7 Sinne: reply Adresse gesetzt! Unsinn, Schwachsinn, Bloedsinn, Wahnsinn, Stumpfsinn, Irrsinn, Loetzinn.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required