Moin moin, meine Frage ist zwar allgemeiner, aber hier die konkrete Situation (kann ggf. überlesen werden): Ich habe hier einen Etikettendrucker, der über einen Seriellen Port anzusprechen ist (Intermec Easycoder C4 via Esim). Der Drucker nimmt über die serielle Schnittstelle im Grunde Befehle entgegen wie "platziere 'text' an Stelle xy in Größe z", "platziere 'barcode' an Stelle xy", "drucke Etikette", "lösche Imagebuffer", etc. Um die Bedienung so einfach wie möglich zu machen soll dieser an einen Raspberry Pi geklemmt werden, der wiederum ein Webinterface zur Verfügung stellt. Hier soll zwischen verschiedenen Templates ausgewählt werden können, die entsprechenden Textzeilen eingetragen werden können und dann die Etikette gedruckt werden können. Die Ansteuerung des Druckers selbst ist kein Problem (Python), das Webinterface umzusetzen auch nicht (Python oder PHP). Meine Frage ist die folgende: Wie setze ich elegant die Kommunikation zwischen Webinterface und nackter Hardware um? Ich möchte (auch wenn das Netzwerk nicht öffentlich und als sicher einzustufen ist) ungern dem Webserver großartig Privilegien einräumen um den seriellen Port zu kontrollieren. Mein einziger Ansatz ist bisher XML-RPC, aber gibt es noch andere Ideen? Grüße scus
scus schrieb: > ungern dem Webserver großartig Privilegien einräumen um den seriellen > Port zu kontrollieren Naja, so ein riesiges privileg ist das nicht ;-) Ich würde hier aber einen Server-Prozess (z.B. Java, C#) nutzen welcher zwei Dinge vereint: - Allgemeine Verwaltung der Resource Drucker (angebunden über Seriell) - Bereitstellung einer Weboberfläche um Task an Drucker zu übersenden
Du musst doch nur dem Webserver-User oder der Webserver-Gruppe Lese- und Schreibberechtigung auf den seriellen Port geben. Das geht mit einer entsprechenden udev-Regel
Das Zugriff auf den seriellen Port nicht soo problematisch ist, ist mir klar. Die Frage sollte auch eventuelle zukünftige Projekte abdecken, die eventuell kritischere Berechtigungen erfordern... Außerdem möchte ich nicht unbedingt einen Webserver neu erfinden, der dann in meinem "Druckspooler" integriert ist. Da würde ich am liebsten auf etwas wie lighttpd zurückgreifen, den ich mit PHP/Python Skripten füttern kann, bei denen ich vielleicht fertige Bibliotheken für Templates o.ä. nutzen kann. Grüße scus
'spooler' ist m.M. nach schonmal der richtige Ansatz: Du willst den Druckauftrag nicht direkt vom web-server an den Drucker schicken, weil es sonst passieren kann, dass zwei gleichzeitige Auftraege den Drucker blockieren oder Mist rauskommt. Besser ist es da, die Auftraege in eine Warteschlange zu stecken und dann einen Hintergrundprozess (daemon) zu haben, der alleinigen Zugriff auf den Drucker hat und die Auftraege sequentiell abarbeitet. Die Warteschlange kann z.B. ueber eine message queue implementiert sein oder auch nur ueber Dateien in einem bestimmten Verzeichnis (wie das z.B. sendmail macht).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.