mercoledì 12 novembre 2008

Stampante seriale (etichette)

Il risultato, a meno di alcuni modesti aggiustamenti, è da ritenersi soddisfacente. La dimensione del riquadro è da aggiustare e le lettere accentate necessitano di un font diverso da quello utilizzato.

Programmare una stampante seriale che utilizza il linguaggio Monarch(R) è stata un esperienza nuova. Dopo aver realizzato il cavo "giusto" (vedi post precedenti) si passa alla codifica delle istruzioni che dovranno essere inviate alla stampante. Nel seguito un breve esempio. Il linguaggio usa dei campi formattati secondo una codifica pre-impostata e con una sequenza fissa di parametri. Un esempio che produce il risultato visibile in foto è questo:

{I,A,0,0,0,1,3 'slash zero cp850'|}
{I,D,7,0,2 'currency symbol italy 2 decimal'|}
{I,B,0,1,1,0,0 'supply type,ribbon_on,feed_mode,sup_pos,cut_pos'|}
{F,25,A,R,M,690,1000,"FMT-6X10" |
C,550,30,0,1,2,1,W,C,0,0," RAGIONE SOCIALE ",0 'mis in decimi di millimetro' |
C,490,30,0,1,1,1,O,L,0,0,"Slogan dell'azienda",0 |
C,450,30,0,1,1,1,O,L,0,0,"Via taldeitali, 99",0 |
C,420,30,0,1,1,1,O,L,0,0,"99999 località (PR) ITALY",0 |
C,360,30,0,1,1,1,O,L,0,0,"Item :Descrizione del contenuto ",0 |
C,310,30,0,1,1,1,O,L,0,0,"Colli: 01 - broken sample",0 |
C,200,30,0,1,1,1,O,L,0,0,"Cod:",0 |
C,200,115,0,1,3,2,O,L,0,0,"ABC-123-XYZ",0 |
L,V,400,10,0,940,10,"" |
L,S,400,650,680,650,10,"" |
Q,10,10,680,950,10,"" |
B,99,12,F,100,115,1,2,80,5,L,0 |}
{B,25,N,1 |
99,"234567891012" |}

Come si può capire, la comprensione non è propriamente di facile assimilazione, ma con il manuale sottomano anche se in inglese, il lavoro è agevolato. Ogni campo è preceduto da una lettera che ne identifica il significato, L per Line, C per Character, B per barcode, F per format ecc... Devo ancora trovare il modo di memorizzare le risposte della stampante, quali ad esempio i codici di errore. Con un minimo di impegno dovrei riuscire a comprendere meglio il funzionamento del processore interno, magari ricavare e de-compilare il firmware per alcune migliorie che ho in mente. E' un vero peccato che questo hardware sia closed source. Infatti, in mancanza di possibilità di apportare migliorie, l'hardware diventa rapidamente rifiuto speciale pericoloso ed è destinato ad ingrossare i canali di smaltimento clandestini. Già, corre voce che alcune associazioni spediscano l'hardware usato in africa con un apparente scopo umanitario. In realtà è un modo per aggirare la legge sui rifiuti speciali e far diventare l'Africa la discarica del mondo. Ma questo è un altro discorso che raramente viene trattato dalla stampa prezzolata per non infastidire i poteri forti.
In mancanza di uno specifico tool di sviluppo, ho proceduto con la scrittura del codice con un semplice editor di testo con successiva prova di stampa. Una volta assimilato il linguaggio, si procede con la pre-codifica dei formati necessari. Per stampare un etichetta alla volta, si fa molto prima ad aprire il sorgente e modificare direttamente il contenuto, a mano, per poi copiarlo sulla porta seriale utilizzata dal sistema (ttyUSB0 nel mio caso). I formati non sono poi molti. La etichette maggiormente utilizzate sono: spedizione materiale con imballo voluminoso, spedizione lettere e buste, mittente e destinatario. Per i più evoluti, etichetta trasparente per il protocollo della posta con codice a barre (che richiede però un ribbon speciale). Per lavori più intensi, che richiedono un elevato livello di personalizzazione e dinamicità ad adattarsi a diversi formati, si sente un pò la mancanza di un programma grafico per linux, che non deve essere poi molto difficile da produrre...Sarà oggetto di studio e ricerca per i momenti di tempo libero. Alla prossima.

P.S. Il punto per punto è solo presunto. Ripeto: Il punto per punto è solo presunto.

Nessun commento: