www.mikrocontroller.net

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


Autor: Sven Stefan (stepp64) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Nico (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sven Stefan (stepp64) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sven Stefan (stepp64) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: oszi40 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: oszi40 (Gast)
Datum:

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

Autor: Sven Stefan (stepp64) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: oszi40 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sven Stefan (stepp64) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Anna-zaira Engeln (nanalisa)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.