domenica 2 novembre 2008

Stampante seriale

Dopo aver messo in funzione una stampante industriale per etichette in poliamyde adatte ai capi di abbigliamento, una Alfa 1300 della General Code, non senza difficoltà visto che ora funziona in ambiente linux e non esistono driver specifici, mi sono messo in testa di rimettere in funzione anche delle stampanti PAXAR modello 9642. Ne ho quattro, rigorosamente salvate dalla distruzione (due le ho minimizzate per capire come erano fatte all'interno). Ho la necessità di far funzionare anche queste in ambiente di rete Unix (linux con CUPS in modalità client server), visto che non uso sistemi proprietari per scelta filosofica di vita e religiosa. Una prima delusione l'ho avuta cercando in rete se c'era qualcosa di già fatto. Nulla ovviamente. Il modello è un pò datato, fuori produzione ovvero discontinued. E' classificata come stampante economica, per cui esiste solo il manuale dell'utente. Per nulla scoraggiato, decido di chiamare la filiale italiana della Paxar per cercare alcune informazioni indispensabili. Con che linguaggio deve essere programmata? Che cavo serve? Devo dialogarci via seriale, visto che le porte parallele stanno scomparendo mentre le porte seriali possono essere emulate da una porta USB. Chiamo la centralinista che, dopo essersi assicurata se ero un cliente facoltoso con diritto di assistenza o un pirla qualsiasi indegno di ricevere informazioni tecniche, mi passa gentilmente "un tecnico". Un punto a favore per la Paxar. La gentilissima signorina, alla quale da buon cafone non ho nemmeno chiesto il nome, ma dalla voce deve essere molto simpatica, mi fornisce il numero di cellulare della persona che secondo le interpretazioni delle mie esigenze tecniche verbalmente comunicate, deve essere la persona adatta. Dopo essermi premurato di non disturbare, dato che prima di chiamare un cellulare destinato alle urgenze mi faccio sempre mille scrupoli, chiamo il tecnico. Anche questa persona, fortunatamente rivelatasi preparatissima (una rarità nel mondo IT), mi fornisce dal modello della stampante una serie di informazioni generiche ma utilissime. Il linguaggio interpretato dalla stampante è il Monarch (R). Il cavo seriale deve essere un null modem incrociato. Ad una richiesta di approfondimento mi comunica che se desidero ulteriore assistenza devo "pagare" (così mi da da intendere con un giro di parole) e dato che ho onestamente dichiarato di non essere un cliente ma un tecnico, termino la comunicazione ringraziando sinceramente per le dritte. Per stampare su porta parallela non c'è problema. Basta creare un semplice file di testo formattato come richiesto dal linguaggio in questione e spararlo con un "cp" direttamente verso la porta seriale. Per chi usa CUPS, basta configurare una RAW printer collegata alla parallela /dev/lpt0. Per la seriale la cosa si complica nella scelta del cavo. Un normale null modem seriale incrociato tx/rx non basta. Di null modem a 9 pin maschio femmina ne esistono di 4 tipi, a seconda del protocollo di handshacking supportato dal dispositivo.
  • Null modem semplice asincrono
  • Null modem a 3 fili con handshacking locale asincrono
  • null modem a 6 fili con handshacking parziale asincrono
  • Null modem a 7 fili con handshacking completo asincrono
Mi manca l'informazione relativa al tipo di cavo e non voglio approfittare della disponibilità del tecnico in quanto me lo immagino sempre di corsa ad intervenire presso i clienti per risolvere problemi (lavoro che o fatto per quasi 10 anni e so cosa significa lavorare e rispondere contemporaneamente al telefono in continuazione). Decido allora di andare per tentativi. Armato di stagnatore, inizio a provare le 4 combinazioni. Quella che si rivela vincente è la quarta. Per stampare basta copiare sulla porta seriale il file di testo predisposto con il linguaggio Monarch. cp ESEMPIO.FMT /dev/ttyUSB0 e la stampante risponde correttamente facendo il suo dovere. Bene. Con Cups nessun problema. Se si usa la porta parallela, basta configurare una stampante RAW collegata alla porta /dev/lp0 o seriale /dev/ttyUSB0 (se si una un convertitore Seriale / USB)
Ho già in mente alcune applicazioni pratiche, che mi evitano di usare una stampante "normale" o gli apparecchietti dedicati che non hanno mai i driver per linux. Questa abitudine di compiacere sempre i sistemi proprietari e snobbare i sistemi aperti, credo stia creando una lieve perdita di clientela che via via si va ingrossando. La prima azienda ha perso una fornitura di quasi 1500 euro senza contare la vendita periodica dei consumabili (ribbon ed etichette in rotolo), oltre a perdere l'occasione per dimostrare il suo livello di attenzione e cura per i potenziali clienti. ...bocciata. Credo che la sconsiglierò a tutti i miei clienti che periodicamente mi chiedono consigli per sapere a chi rivolgersi ed evitare fregature. La seconda azienda ha qualche possibilità, l'aiuto è stato prezioso e ringrazio promettendo futura collaborazione nella segnalazione.
Per quanto riguarda il linguaggio Monarch, esiste in rete un manuale che spiega in dettaglio quali stringhe mandare alla stampante. Manca solo un programmino "grafico" da dare al cliente la possibilità di generare i layout desiderati e stamparli in autonomia senza dover districarsi fra lettere e codici testuali. Al lavoro allora. So che n on esiste nulla di simile, nessun programma di stampa etichette per linux che riconosca quel linguaggio. Ci penso io allora. Chi fa da sè fa per tre. Alla prossima.

P.S. Il merlo ha fatto il nido. Ripeto: Il merlo ha fatto il nido.

4 commenti:

diegox80 ha detto...

Ciao, sono Diego, appassionato di informatica e sistemi open source. Tempo fa acquistammo una stampante termica sato lm408e con porta parallela. Non esistono driver per linux, ho scritto all'assistenza italiana e non rispondono, ora mentre scrivevo all'assistenza europea ho trovato questo interessantissimo articolo. Pensi che possa stampare con tale stampante semplicemente "inviando" un file di caratteri direttamente sulla lpt ?

unamico ha detto...

Ciao Diego,
non conosco il modello in questione e bisognerebbe quanto meno conoscere il linguaggio che usa ed i codici di comando, o sapere se nella sua config.interna è prevista qualche emulazione o se accetta la modalità RAW... se la stampante ha un certo costo, magari puoi contattare telefonicamente un tecnico adetto all'assistenza sperando che ti possa dare le informazioni che ti mancano. Se hai le informazioni in merito, linguaggio usato, codici di comando, scrivere il driver non dovrebbe essere particolarmente difficile. Alla peggio... prova ad inviare qualcosa e vedere cosa succede (ricordandoti di resettarla ogni volta). Un altra strada per cercare le info che ti mancano...magari tramite i rivenditori di consumabili, ti basterebbe un nome di un tecnico.... una volta sono arrivato a contattare direttamente taiwan... ti lascio immaginare.
in bocca al lupo.

diegox80 ha detto...

Ho chiamato un tizio, gentilissimo, che mi ha dato delle indicazioni precise: bisogna montare l'etichettatrice come raw, inviare sulla parallela i comandi nel linguaggio SBPL. Ciao grazie

unamico ha detto...

perfetto.... magari se riesci a pubblicare da qualche il manuale del linguaggio ;-)
Ciao