Taster Verbindung zu HP-Drucker

Moin,
gerade arbeite ich an einem kleinen interaktive Ausstellungsprojekt.
Ohne zu tief ins Detail zu gehen sollen die Zuschauenden auf drei verschiedene Taster drücken können, um so drei verschiedene A4-Drucke "in Auftrag geben".
Verbindung zum Drucker (HP HL-2035) ist per USB möglich.

Habt ihr Ideen, ob dieses Projekt mit einem Arduino Uno umzusetzen ist und wie ein mögliches Skript aussehen könnte?

Ich freue mich über eure Antworten und bedanke mich schonmal im Voraus :slight_smile:

mit einem USB HID fähigen Controller (z.B. Arduino Pro Mini od. Leonardo) 3 Tasten einlesen, und dann am PC einen der 3 Ausdrucke starten.

Vielen Dank für die schnelle Antwort, ich benötige also einen neuen Arduino. Magst du mir einen Link oÄ schicken, wie ich die Verknüpfung der Tastersignale zum Druckbefehl schreiben könnte?

Üblicherweise arbeitet die USB-Schnittstelle am Druckern als Slave. Der PC ist USB-Master und sendet die Druckbefehle. Ist das bei deinem Drucker anders? Hat der eine Host-Schnittstelle?

Die 'üblichen' Arduinos haben ebenfalls nur eine USB Slave Schnittstelle. Es gibt Shields mit denen ein Arduino als Host arbeiten kann. Es gibt auch Arduino kompatible Boards, die als Host arbeiten können, da kenne ich mich aber nicht aus.
Auf jeden Fall must Du auf diese Unterschiede achten. Bei einer USB-Verbindung muss immer eine Seite den 'Host' spielen.
In der einfachsten Variante - wie von @noiasca beschrieben, brauchst Du immer einen PC dazwischen - wobei es dann aber egal ist, wie der Drucker am PC angeschlossen ist.

[Edit] Bei vielen - vor allem eher günstigen - Laserdruckern ist ein großer Teil der Drucksoftware auf den PC ausgelagert und im Druckertreiber integriert. Da ist es ziemlich aussichtslos, die ohne PC ansteuern zu wollen. Das mindeste was man da bräuchte wäre wohl ein Raspi, wenn es passende LINUX-Treiber gibt.

Alles klar, dass ein PC dazwischen geschaltet ist, welcher die Signale senden kann ist technisch umsetzbar. Kennst du ein Tutorial oder Skript, welcher die Drucksignale senden kann?

Kannst Du die gewünschten Drucke über die Tastatur des PC's auslösen ( ohne die Maus zu benutzen) ? Dann genügt es mit der Keyboard-lib genau diese Tastendrücke vom Arduino aus zu schicken.

Was genau sollten denn gedruckt werden bzw
Eine Datei, ein Bild, ein Textfile?!?

Es ist eben doch wichtig was möchtest du da drucken
und welche Art der Standard-Bedienung würde man dazu machen.

Sind das immer die exakt gleichen drei Dateien die da gedruckt werden sollen?

Ist das ein Foto?
Ist das eine Zeichnung?

Muss aus einem Datei-Dialog eine Datei ausgesucht werden?
Wird da bei jeder Interkation eine neue Datei erstellt ja/nein?

Was ein USB-Fähiger Arduino kann ist
so tun als ob er eine Tastatur ist.
Der vom Arduino gesendete Tastendruck wird dann so "ausgewertet" wie wenn man eine Taste auf einer echten Tastatur gedrückt hat.

Was dieser Tastendruck dann bewirkt hängt davon ab welches Programm gerade aktiv ist.

Was der Arduino nicht kann ist:
den ganzen PC spielen und drucken wie ein PC.

Eine weitere Möglichkeit ist den Arduino über eine serielle Schnittstelle mit dem PC verbinden und ein Python-Programm empfängt über die serielle Schnittstelle
Drucke 1
Drucke 2
Drucke 3

was dann das Python-Programm machen muss um das ausdrucken zu veranlassen hängt davon ab was da gedruckt werden soll.

Eine weitere Möglichkeit wäre ein Autohotkey-Script

Also man kann dir am besten helfen wenn du eben doch sehr präzise beschreibst was du da drucken willst und wie genau diese Interaktion zwischen Kunstwerk und Besucher abläuft.

vgs

Da stellst du dir das Ausdrucken viel zu einfach vor.
Da entstehen auf den unteren Ebenen des Betriebssystems selbst für das Ausdrucken einer simplen Textdatei megabyte-weise Daten.

Das ganze läuft darüber dass die Druckfunktionen des PCs angesteuert werden. Und je nachdem was da gedruckt werden soll bedeutet das unterschiedliche PC-Funktionen aktivieren. Und dieses aktivieren wird dann entweder über Tastatur/Maus-Emulation gemacht oder durch das Aufrufen von Druckfunktionen des Betriebssystems

Danke für eure ausführlichen Beschreibungen und Fragen.
Gedruckt werden sollen immer die gleichen drei Bilder (Bild1.jpg, Bild2.jpg, Bild3.jpg), welche sich nicht verändern oÄ.

Du könntest auf PC ein CMD Fenster offen haben. Du legst vorher 3 BAT Dateien an mit den Druckbefehl. Dies kannst du dann aufrufen.

Na Prima.
Dann vergiss alles, was Du bisher gelesen hast.

Du hast einen uno, das reicht vollkommen.

Wie gut bist Du mit Windows vertraut?
Kannst Du einen Scheduler einrichten, der alle Sekunde eine btach-datei startet?
Kannst Du eine Batchdatei schreiben, die Deinen Ausdruck auf einen Drucker auslöst?

Und für alle anderen: Nein, ich habe nicht vor den UNO zu einem HID-device umzubauen.
@wwerner hat offensichtlich die gleiche Idee - Ist mir hier untergegangen... Allerdings ist es nicht ganz so einfach....

Das hört sich doch schonmal gut an, dass es rein technisch umsetzbar ist.
Leider bin ich auf Mac unterwegs und kenne mich mit Batch-Dateien gar nicht aus.

Grr..
Da bin ich raus.

Unter Windows wäre das recht einfach...

Da MAC als UNIX gilt, wäre es wohl mit Shellscript und Cronjob lösbar. Da muss aber ein Kenner des Fallobsts ran, da dort bestimmt noch einige Fallstricke lauern, besonders was die Rechte angeht.

Gruß Tommy

Ich glaub nicht mal, das Du da so einfach vom USB lesen kannst.
Darum.

Normalerweise werden in UNIX alle zeichenorientierten Devices wie eine Datei behandelt, das sollte also gehen.

Gruß Tommy

Ich will jetzt hier keien .ix Diskussion. Ich erinnere Rechtevergabe für dialout...

Dass die Rechte Probleme machen könnten, hatte ich bereits geschrieben. Das ändert aber nichts an der grundlegenden Vorgehensweise.

Gruß Tommy

Dann bitte.
Ich hab geschrieben, das ich raus bin.