Newsgroup: it.comp.lang.vo-clipper
Titolo: Porta parallela

Salve,
siccome ho dei problemi di stampa con i programmi clipper 5.3 con la
stampante HP 840c, vorrei sapere:
Invece di usare il solito ISPRINTER() che non mi da nulla di concreto come
posso sapere tutti gli stati della porta parallela?
Grazie
P.Pietro

 posso sapere tutti gli stati della porta parallela?
Perché non usi l'error trapping (BEGIN SEQUENCE/END SEQUENCE)?
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

 ha scritto nel
messaggio news:40A34645...@emagsoftware.it...


 Tu come hai risolto questi problemi?
Veramente non li ho mai incontrati. Secondo me sbagli qualcosa nella
sequenza dei comandi di stampa. Io facevo così:
SET CONSOLE OFF
SET PRINTER TO "tuaporta"
SET PRINTER ON
// Qui stampo
SET PRINTER OFF
SET PRINTER TO
SET CONSOLE ON


 ha scritto nel
messaggio news:40A39C90...@emagsoftware.it...


 trasmetterle i dati.
Controlla di aver attivato lo spooler di Windows. E' quello che
controlla l'invio dei dati alla stampante, non la tua applicazione.


 trasmetterle i dati.
Controlla di aver attivato lo spooler di Windows. E' quello che
controlla l'invio dei dati alla stampante, non la tua applicazione.
EMG


 controlla l'invio dei dati alla stampante, non la tua applicazione.
Scusate il doppio invio.


 
Io, in Clipper 5.2e, ho riscritto la routine di 
gestione degli errori (in errorsys.prg) relativi 
alla stampante per poter gestire direttamente 
l'evento.
Inoltre ti conviene inserire un loop di verifica 
dello stato della stampante/porta parallela nei 
punti critici (ad esempio prima di inviare i nuovi 
dati (nuova riga) dopo un dbskip() ).
/* esempio */
 .....
 nCount := 0
 do while nCount <= 30 .and. !IsPrintOK( lInit )
    nCount++
 enddo
 if !IsPrintOK( lInit ) .and. !ErrPr()
   break
 endif
 ......
/****/
dove IsPrintOk() e' una udf che richiama la 
funzione clipper ISPRINTER() (lInit è un flag che 
vale .T. se stampo in Windows attraverso lo 
spooler Pagescript ed evita la routine di 
controllo in quanto la funzione restituisce 
comunque .T., vale .F. se stampo direttamente 
sulla parallela e la funzione restituisce il 
valore logico di ISPRINTER());
ErrPr() è la mia routine di gestione dell'errore 
di stampante non pronta, che mi avvisa e attende 
se voglio proseguire o interrompere la stampa.
Gestisce tranquillamente stampe di centinaia di 
righe per decine di pagine, senza problemi.
-- 
Bye!
  Scossa
per rispondere togli LaCorrente
e-mail: 
maLaCorren...@tiscali.it

 ha scritto nel
messaggio news:40A4B9E6...@emagsoftware.it...


 l'evento.
Questo evita che il programma termini nel caso che la stampante sia
spenta o senza carta ma non *deve* servire a niente se la stampante č in
grado di stampare regolarmente. Se durante la normale stampa c'č qualche
errore significa che l'handshake non avviene correttamente (cavo
difettoso, porta parallela difettosa, stampante difettosa, etc.).
Bisognerebbe provare a stampare con un comando tipo
DIR > PRN
in una directory con molti file e vedere cosa succede. Deve stampare
senza problemi tutte le pagine.


 Ma lo spooler lavora con i programmi clipper sotto dos???
Sě. E' Windows che gestisce, in ogni caso, la stampante.


 difettoso, porta parallela difettosa, stampante difettosa, etc.).
Certo, davo per scontato il perfetto funzionamento 
dell'hardware. Del resto, se avesse problemi di 
hw di comunicazione tra pc e stampante avrebbe 
problemi anche in windows.


 problemi anche in windows.
Allora non capisco proprio da dove possa nascere il problema dell'OP...


 
Sarà l'ora tarda, saranno gli effetti del vino a 
cena (un Brunello "Schiena d'Asino" del '90), ma 
mi sono perso .... che intendi per OP?


 mi sono perso .... che intendi per OP?
Original Poster, chi ha iniziato il thread.
