Newsgroup: it.discussioni.ingegneria
Titolo: Memoria plotter. Il driver non la usa?

     Filippo B.
--------------------------------------
Per rispondere anche via e-mail eliminare   '_RIMUOVIMI_'   e   '.invalid'
dall'indirizzo.
To reply also by e-mail, cancel   '_RIMUOVIMI_'   and   '.invalid'
from the address.
--------------------------------------

 >possibile.
[cut]
La storia e' piu' complessa di quanto possa sembrare.
La stampa e' sostanzialmente la trasformazione di primitive grafiche (fra
cui anche caratteri ed oggetti 3D) in punti su carta.
Cosa succede quando si stampa?
In modo molto semplificato il programma chiama il driver di stampa (di
windows o dell'applicativo) e gli trasmette le informazioni per la stampa in
2D secondo un formato predefinito abbastanza semplificato, ad es. per
tracciare una linea su un A4 gli dice "traccia una linea dal punto xy al
punto XY del foglio".
Il driver poi si incarica di elaborare queste informazioni per la stampante,
secondo il suo protocollo, e quindi inviargliele, magari passando per lo
spooler di windows.
Poiche' una volta sulla parallela la velocita' non e' un gran che, ci si e'
inventati dei "metalinguaggi" (ad es. PCL, HPGL, HPGL2, PostScript) tali per
cui non si invia alla stampante il documento punto per punto, ma secondo un
"metaliguaggio" abbastanaza semplice e compatto; ad es. la stessa linea in
HPGL diventa una procedura del tipo "Vai alla coordinata xy; penna giu'; vai
alla coordinata XY; penna su", quattro comandi in tutto ed una occupazione
di banda minima, anche se espressa in ASCII e non compressa.
E' chiaro che se il computer deve inviare comando per comando ed aspettare
l'ok dalla periferica, la macchina rimane impegnata troppo tempo e impiega
troppe risorse. Ecco perche' e' nata la memoria delle stampanti, prima come
buffer, poi come vera e propria stazione di elaborazione.
Infatti fintanto che la stampa era quella di un plotter a rullo le
istruzioni non dovevano essere elaborate, ma eseguite una per una. Con
quelle a getto d'inchiosto il buffer era l'immagine di una strisciata, o al
massimo di alcune, dopo di che la stampante poteva anche fermarsi per
attendere i successivi comandi.
Con le laser non e' stato piu' cosi': prima di avviare la stampa *tutto*
l'inchiostro doveva essere sul rullo. Quindi il driver di queste stampanti
invia tutto il disegno espresso nel "metalinguaggio" visto prima, la
stampante lo elabora nella *propria* memoria e col *proprio* processore,
crea l'immagine bitmap della pagina e la proietta sul rullo, e quindi sulla
pagina.
Nota: una volta la memoria costava cara, quindi una laser con 1Mb costava
molto cara e poteva andare "fuori memoria" abbastanza facilmente. Oggi
invece le memorie non costano tanto, la loro incidenza sul costo finale e'
molto basso. Ecco perche' anche sui plotter a getto d'inchiostro e' stato
incrementato il "buffer" in modo considerevole, e a questo punto e' stato
anche aggiunto il processore (ad es. la scheda HPGL o PostScript), in modo
che il driver comunichi la stampa alla periferica in un "metaliguaggio" ad
alta velocita' e poi ci pensi la stampante! ... quindi con computer
libero...
Tornando ai tuoi problemi...
1- su un plotter a getto e' vero che il computer deve fare in "grosso del
lavoro", cioe' procedere alla rasterizzazione dell'immagine, pero' piu'
memoria c'e' sul plotter (e il driver deve saperlo!) e prima si fa visto che
la trasmissione su parallela procedera' senza interruzioni: il guadagno di
tempo e' cmq minimo. Alcuni plotter pero' (ad es. gli HP) oltre alla memoria
hanno di serie anche il processore HPGL/HPGL2, per cui la trasmissione e'
nel "melalinguaggio" HPGL/HPGL2 piu' compatto e veloce. E' chiaro che per
questi la memoria e' molto importante: se non ce la fanno il driver ha anche
l'opzione "Usa la memoria del computer", che non fa altro che rasterizzare
l'immagine, suddivviderla in strisciate ed inviala pezzo per pezzo alla
stampante, cioe' ritorna fra le normali getto d'inchiostro.
2- "l'invio diretto alla stampante" posso intuire che sia semplicemente un
bypass al sistema di stampa di windows: ha tutti i problemi visti prima,
solo che viene saltato il driver di stampa e lo spooler, utilizzando un
driver ottimizzato interno. Il guadagno di tempo sta nelle ottimizzazioni
interne, ma l'invio risente di tutti i problemi visti prima, piu' il
problema del "blocco macchina" dovuto al mancato utlizzo dello spooler di
windows.
3- Delle schede HPGL o HPGL2 (ma anche del PostScript) abbimo detto prima.
In sostanza spostiamo l'elaborazione raster dal computer alla stampante, con
guadagno di tempo dovuto al minor flusso di dati (la parallela e' e rimane
lenta) e maggior velocita' di elaborazione dovuta ad un processore dedicato.
4- Mi spiace ma non conosco il tuo plotter Oce'. Penso che la velocizzazione
utilizzando il driver della HP750c sia dovuta piu' al tipo di dati che
trasmetti che al driver. In sostanza da AutoCAD trasmetti un disegno
vettoriale, che tale rimane fin dentro la stampante. La serie 750 e'
abbastanza vecchia, quindi penso che usi come protocollo HPGL, quello dei
vecchi plotter a rullo (non HPGL2, che e' stato ottimizzato anche per la
grafica), il che giustifica tanta memoria, che probabilmente e' associata ad
un processore HPGL: se il disegno e' composto di linee bene, se ci sono
curve, riempimenti, ecc.. si trova in difficolta', ed in particolare quando
trasmetti i testi o le immagini raster. Per velocizzarlo un po' potresti
cercare i drivers aggiornati, ma non penso si possa fare tanto...
5- Per la stampante Infotec (non conosco neppure questa purtroppo...): PCL5
e' tutto sommato un buon linguaggio, abbastanza ottimizzato e dedicato alla
grafica; la memoria per la rasterizzazione e' ottimale. La lentezza sulle
stampe di foto digitali devi ricercarla secondo me nel tipo di collegamento,
in quanto il processore in questi casi lavora ben poco. Probabilmente e'
collegata con un cavo stampante parallelo, e quindi il flusso di dati e'
tutto sommato molto basso (se non ricordo male siamo attorno al centinaio di
Mb per ora...): fintanto che trasmetti testi o immagini vettoriali sono
sufficienti poche informazioni, che transitano velocemente (ad es. per la
linea sono suff. due punti x,y, eventualmente con colore e spessore; per il
carattere il colore, il codice ASCII e la tabella di codifica), quando pero'
passi alle foto c'e' poco da ottimizzare, devi per forza trasmetter punto
per punto coordinate e colore, ben che vada puo' essere sufficiente solo il
colore, ma se consideri che per una stampa 600 dpi, che non e' certo il top,
si richiede (600/2.54)x(600/2.54)x32bit = 1785603bit = 1744kb = 1.7Mb ti
spighi molte cose. Il protocollo PCL5 ha delle compressioni, ma non possono
essere "lossy" (non possono cioe' perdere punti come fa jpg), quindi il
flusso di dati per lungo il povero cavo e' veramente eccessivo. Soluzioni:
sicuramente passare ad un collegamento migliore, ad es. con porta di rete
base 100 (e relativa rete alle spalle) o USB 2.0; una scheda PostScript
potrebbe migliorare le cose, soprattuto se e' dell'ultima generazione, con
quidni molte ottimizzazioni, ma non quanto un miglior collegamento (senza
considerare che le screde PostSsript costano veramente tanto...)
Ho semplificato molto, e spero di non aver detto "castronerie". Cmq se hai
bisogno di altre informazioni fatti sentire...
Ciao
--
Doc Hollywood
------------------------------------------------------------------------
Non penso mai al futuro, viene cosi' presto. (A.Einstein)
------------------------------------------------------------------------

bisogno di altre informazioni fatti sentire...
A questo punto non mi resta che chiedere: ci sono driver HP/GL2 e PCL
5c "generici", cioe' ottimizati per il linguaggio e che vadano bene
per tutte le macchine con tali schede?
Mi hanno proposto "winline" per il plotter HP/GL2. Qualcuno lo usa e
ne sa qualcosa?
  Grazie


 ne sa qualcosa?
Nulla purtroppo...
