Forum: PC Hard- und Software par. Drucker erst Einschalten, wenn Daten ankommen


von Sven S. (stepp64) Benutzerseite


Lesenswert?

Hallo,

ich möchte gerne meinen Parallelportdrucker erst mit Strom versorgen, 
wenn Daten am parallelen Port anliegen. Der Drucker verbraucht im 
Standby 16W und hängt an meinem Server.

Gibt es am Parallelport ein Signal welches sich ändert, sobald über die 
Schnittstelle Daten gesendet werden? Mit diesem Signal würde ich dann 
ein Relais schalten, welches den Drucker einschaltet. Könnte das 
funktionieren?

Sven

von Nico (Gast)


Lesenswert?

Die Drucker brauchen normal einige Zeit bis sich sie initialisieren, 
GANZ so einfach wird das also nicht. Was benutzt Du auf dem Server denn 
als Spooler? Vlt. kannst du dem Beibringen sich irgendwo zu melden 
(serial-port?) um den Drucker in Betrieb zu nehmen sobald es Aufträge 
gibt.

von Christian R. (supachris)


Lesenswert?

Linux?
Wir haben sowas hier für Linux laufen. Ein Script überwacht cups, ob ein 
neuer Druckauftrag eingegangen ist, und schaltet den Drucker über ein am 
Serialport befindliches Relais ein (macht einfach den Port auf). Nach 
einer bestimmten Zeit, und wenn kein neuer Druckjob eingetrudelt ist, 
wird wieder ausgeschaltet. Kommt ein neuer Job, startet die Zeit von 
vorne. Hardware ist simpel, einfach ein Relais, ein Transistor, 2 Dioden 
am COM-Port. Stromversorgung des Relais aus den 12V des Servers. Klappt 
super seit Jahren.

von Sven S. (stepp64) Benutzerseite


Lesenswert?

Ich benutze Windows 2003 Server. Serieller und Paralleler Port sind 
vorhanden. Als Treiber ist der HP Laserjet 6P installiert und als 
Spooler der von Windows Server. Wie ich dem nun allerdings beibringen 
soll, dass er zusätzlich noch ein Signal an der Seriellen ausgeben soll, 
wenn Daten ankommen, da bin ich überfragt. Falls das einer weiß, immer 
her damit. Ansonsten stelle ich mir das genau so vor, wie es Christian 
R. beschrieben hat, halt nur für Windows.

Ich hatte halt gedacht, dass irgendein Signal der parallelen 
Schnittstelle wechselt, sobald Daten an den Drucker gesendet werden. Das 
der Drucker Zeit zum Aufwärmen benötigt ist mir klar, allerdings druckt 
der auch die Daten noch aus, wenn sie schon eine Weile im Spooler liegen 
und ich den Drucker per Hand einschalte. Das sollte also nicht das 
Problem sein. Eine Hardwarelösung wäre mir am liebsten, da ich derzeit 
einen Schalter entwickle, welcher auch den Server abschaltet, sobald 
kein Client mehr im Netz ist (das läuft allerdings über die Linklampe 
des Switches und da ist ja der Drucker nicht angeschlossen). Da ich den 
Drucker aber nur sehr selten benutze (so 1-2x im Monat) wollte ich den 
halt nur einschalten, wenn was gedruckt werden soll.

Gruß
Sven

von Christian R. (supachris)


Lesenswert?

Wir wollten das auch erst komplett als reine Hardware-Lösung machen. 
Ging aber nicht. Prinzipiell gibts das Signal schon, aber der 
Druckertreiber startet erst mal überhaupt nix, solange der Drucker nicht 
das Busy-Signal weggenommen hat. Auch als wir das quasi manuell 
simuliert hatten, tat sich noch nix, eventuell tauschen Treiber und 
Drucker beim Einschalten des Druckers noch weitere Daten aus. Schreib 
dir doch ein kleines Programm, was den Spool-Ordner überwacht, den 
wird´s ja sicher bei Windows auch geben.

von Peter (Gast)


Lesenswert?

Normalerweise ist windows der Status des Druckers egal. die Aufträge 
werden einfach in die Warteschlange eingereit. (Der Treiber könnte da 
zwar machen, aber das ist mir bis jetzt nicht untergekommen)

Einfach einen kleinen Dienst schreiben und die Warteschlange abfrage, 
wenn ein Auftrag drin ist dann über die Serielle schnittstelle den 
Drucker einschalten, wenn die Wartechlange leer ist. noch eine kurzen 
Moment warten und ann ausschalten.

von Sven S. (stepp64) Benutzerseite


Lesenswert?

Das klingt ja schon mal recht vielversprechend. Allerdings habe ich ein 
Problem: Ich kann zwar µC in Assembler programmieren und habe auch schon 
ein wenig html und php gemacht (früher auch mal drei Jahre lang 
Turbo-Pascal :-) aber wie man einen Dienst schreibt oder die 
Warteschlange abfragt, da habe ich keinen Plan von. Ich versuche mir 
zwar derzeit Delphi beizubringen, dass ist aber noch viel Neuland für 
mich. Könntet ihr mir da sagen, wie man das angeht bzw. wo ich mir das 
Wissen dazu aneignen kann? Danke schon mal für eure Unterstützung.

von oszi40 (Gast)


Lesenswert?

Bei einigen Eps*n-Druckern stand im Handbuch eine Tastenkombination wie 
man einen Hexadump damit ausdruckt. So könnte man den gesamten 
Datenstrom auf einfache Art analysieren.

Man sollte jedoch bedenken, daß Laserdrucker in der Aufheizphase ca. den 
10-fachen Strom brauchen. Daher lohnen sich solche Klimmzüge wegen 10 
Minuten Stillstand noch nicht.

von Peter (Gast)


Lesenswert?

mit Delphi sollte es kein Problem sein, wenn man beim anlegen eines 
neuen Projektes nicht Anwendung sondern Service/Dienst wählt hat man 
schon fast alles zusammen, das Abfrage der Druckerwarteschange geht über 
die WindowsApi

http://msdn.microsoft.com/en-us/library/ms535514(VS.85).aspx

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Man sollte jedoch bedenken, daß Laserdrucker in der Aufheizphase
> ca. den 10-fachen Strom brauchen.

Das hängt vom Drucker ab.
Neuere Druckwerke haben eine nur für den Fixiervorgang selbst beheizte 
Fixiereinheit, das sind die, die binnen 10..15 sec nach dem 
Einschalten/Aufwachen aus Standby die erste Seite drucken können.

von oszi40 (Gast)


Lesenswert?

Genau diese Heizung der Fixiereinheit braucht in der Anheizspase etwas 
mehr Strom. Sonst dauerts länger.

von Sven S. (stepp64) Benutzerseite


Lesenswert?

Das ist ja alles richtig, aber ich hatte doch schon geschrieben, dass 
ich meinen Drucker nur 2-3x im Monat benutze. Der steht allerdings in 
der Abstellkammer zusammen mit dem Server. Drucken tun da sowohl meine 
Kinder, als auch meine Frau und ich drauf. Er bekommt also von vier 
Stellen seine Druckaufträge. Im Moment läuft er den ganzen Monat im 
Standby (16W), was also ca. 11kWh pro Monat entspricht. Ist sicher nicht 
die Welt, läppert sich aber mit dem Switch und dem Router und dem 
Server. Deshalb plane ich ein Gerät welches die Geräte nur einschalten 
soll, wenn sie benötigt werden, speziell in diesem Thread: die 
Ansteuerung des Druckers.

@ Peter (Gast): Das überschreitet leider derzeit noch meine Kenntnisse. 
Ich bin mit meinem Delphibuch erst auf Seite 56 (also noch beim 
Einführungsbeispiel). Ich kann zwar ein neues Projekt als Service 
anlegen, weiß dann aber absolut nicht weiter...

von oszi40 (Gast)


Lesenswert?

Schlecht ist, wenn durch Ausschalten undefiniert halbe Druckaufträge 
übrig bleiben. Dann könnten  Druckdaten, die fälschlich als 
Steuerzeichen erkannt werden, zu einen wirren Ausdruck vieler Blätter 
führen.

Sonst wäre eine Schaltuhr am HP6 die schnellste Lösung.

von Sven S. (stepp64) Benutzerseite


Lesenswert?

Deshalb bin ich ja auf der Suche nach einem Signal an der LPT, welches 
ich mit einem µC auswerten kann. Wenn z.Bsp. das Strobe-Signal immer 
aktiv wird, wenn der Server Daten sendet, dann könnte ich das auswerten. 
Ist der Drucker noch nicht an, schaltet der Controller ihn ein und 
startet eine Wartezeit von 10 Minuten, welche immer wieder resetet wird, 
solange Daten ankommen. Kommen 10 Minuten keine Daten mehr, dann wird 
der Drucker wieder abgeschaltet. Ich bin halt nur auf der Suche nach 
solch einem Signal, da ich die Arbeitsweise der par. Schnittstelle nicht 
so genau kenne. Man könnte das sicher auch mal probieren, lieber wäre 
mir aber ich wüsste es genau, weil dieses gesuchte Signal halt immer 
aktiv wird, wenn der PC Daten sendet und es inaktiv ist, wenn der PC 
nichts sendet.

von Anna-zaira E. (nanalisa)


Lesenswert?

Hi Stepp64,
ich bin auf genau derselben Suche wie Du! Was hast Du inzwischen 
herausgefunden?
Vielen Dank im Voraus!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.