Newsgroup: it.comp.os.dos
Titolo: Problema con porta seriale

Ciao a tutti.
Ho un PC con Windows98 e collegata alla porta seriale ho una stampante
serie di etichette. La stampante funciona perfettamente in rete (nel
computer c'e' installato Soltstice), pero quando invio una stampa
localmente da DOS (con COPY) mi compare un errore "ERRORE DI
SCRITTURA, SCRIVENDO NEL DISPOSITIVO COM1" (piu o meno, l愣o
tradotto).
Qualcuno puo' aiutarmi?
Gracie e ciao, Maurizio

(software).  Dipende dalla tua stampante, verifica il manuale.
La cosa strana e' che la stampante prima era collegata a un PC SIEMENS
(Pentium3 con Win98) e tutto funcionava correttamente pero ho cambiato
il PC per un COMPAQ (Pentium3 con Win98) dove e' comparso il problema,
e apparentemente la configuracion e' identica.
Ho aggiornato Windows 98 pero non e' migliorato niente.

 e apparentemente la configuracion e' identica.
Come e` configurato il BIOS?  E` per caso disabilitata la porta?
Spiacente ma Win98 non lo conosco.  Quello che ho descritto era un 
comportamento tipico del DOS.



Verifica nel BIOS le impostazioni relative alla porta seriale.

Verifica nel BIOS le impostazioni relative alla porta seriale.
La BIOS mostra solo questo:
Seguridad de Dispositivo:
	- Puerto en Serie A --> Dispositivo disponible
	- Puerto en Serie B --> Dispositivo disponible
Dispositivos Acoplados:
	- Puerto en Serie A --> 3F8-3FF, IRQ 4
	- Puerto en Serie B --> 2F8-2FF, IRQ 3
Pero non capisco perche' le stampe inviate dal server UNIX funcionano
senza problemi.
Ciao e grazie, Maurizio

 Ciao e grazie, Maurizio
Forse perche` il server e` configurato per una stampante per interfaccia 
seriale e lo spooler gestisce il protocollo con la porta.


 seriale e lo spooler gestisce il protocollo con la porta.
Non esiste nessun "protocollo" su una seriale utilizzata in modo
raw, al piu' IMHO c'e' qualche difficolta' a riprodurre in dos
o windows gli stessi settaggi che usa unix. Al limite, consiglio
di dare un bel "stty -a < /dev/tty??", e vedere di riprodurre lo
stesso settaggio nell'altro ambiente.
bye G.L.
-- 
« E' assolutamente evidente che l'arte del cinema
  si ispira alla vita, mentre la vita si ispira alla TV »
(Woody Allen)

 
Se vuoi trasferire dati su una porta seriale *devi* gestire un 
minimo di protocollo.  Specialmente se la stampante che sta 
dall'altra parte e` piu` lenta del PC che invia i dati.
In genere viene usato o l'hardware od il software, dipende in genere 
dalla stampante o dal cavo che hai.
L'hardware usa i segnali RTS/CTS (Request to Send/Clear To Send) che 
richiede un cavo con almeno 5 fili.  La stampante abbassa CTS per 
sospendere l'invio il PC deve alzare RTS ed aspettare che CTS si 
alzi prima di riprendere l'invio.
Il software usa XON/XOFF (ctrl-Q/ctrl-S) che richiede un cavo con 
solo tre fili.  La stampante invia XOFF per bloccare l'invio e XON 
per riprendere.
In Unix e` lo spooler che gestisce questo protocollo.  Forse per 
"raw" tu intendi una cosa diversa, cioe` il formato dei dati inviati 
alla stampante (Postscript, PCL, PlainText, ecc...).
Non esiste una simile funzionalita` nel DOS.  Deve essere gestita 
dal programma che invia i dati alla stampante.


 programma che invia i dati alla stampante.
Questo e' chiaro. A tal scopo suggerivo di ricavare i settaggi da unix,
e vedere di riprodurli in dos attraverso il comando "mode". Poi,
che un "type >" o un "copy" non abbia un controllo tale da evitare
il debordamento del buffer, e' certamente un altro paio di maniche.
Ma anche in unix, su stampanti che non "stavano dietro" al sistema,
vuoi per un buffer di ridottissime dimensioni, vuoi per altri motivi
(fra cui vecchi uart sulla stampante), era necessario talvolta uno
script per rallentare artificiosamente il flusso dalla seriale alla
stampante.


 bye G.L.


 cioe` non richiedono nessuna elaborazione.
Uhm... Raw indica in genere un insieme di dati che non sottostanno a 
nessun tipo di decodifica, cioè sono dati puri, in effetti potrebbe 
indicare una serie di dati digeribili direttamente dalla stampante.
-- 
IBM: It's Better 'morrow
News 2000 [v 2.06] / StopDialer / PopDuster - 
http://www.socket2000.com
Akapulce portal: 
http://www.akapulce.net

 indicare una serie di dati digeribili direttamente dalla stampante.
Questo e` il modo in cui in unix vengono definite le code che non 
necessitano di alcuna elaborazione.
Per esempio una stampante che riceve i dati gia` elaborati da Windows.


 quelle.
Ovvio, ma pur non avendo esperienza risalente alle teletype, al piu' 
anni di configurazioni delle multiporte su unix e dei relativi CRT
si', il discorso e' comunque analogo, sempre di rs232 si parla...
Comunque, teniamo presente che il flusso delle seriali e' gestito,
almeno in unix, dal sistema operativo. Lo spooler puo' chiamare ioctl (o
che per lui: stty) dalle impostazioni memorizzate nella configurazione
porte, stampanti, etc., ma e' sempre e' comunque il sistema operativo
che gestisce il flusso come richiesto. Il programma di spool si limita
a leggere e scrivere sul device (oltre a fare molte altre cose...),
una volta che esso e' adeguatamente settato.  Insomma, non e' il
programma che si occupa direttamente e costantemente del flusso e del
suo "protocollo" (al piu', ripeto con ioctl, ma solo se sei root).
Cosi' avviene, sia pure piu' limitatamente e con piu' inconvenienti,
sul dos, che imposta e usa la porta tramite bios (del resto e' un os
bios based...). Dopo (anche se ripeto rispetto a unix ci possono essere
piu' inconvenienti), basterebbe scrivere su com1:, com2:, comX:
E il piu' delle volte funzia, se si e' settato bene la porta,
garantisco. Senno', perche' con mode puoi assegnare il device prn:
a comeX: invece che al default lpt1: ?  Senza togliere che molti
programmi gestiscono direttamente la seriale, proprio perche' il bios
ed il dos e' assai limitante e problematico. :-)
bye G.L.

 ed il dos e' assai limitante e problematico. :-)
Di quale DOS stai parlando?  Sicuramente fino al 6.22 non esisteva 
alcun supporto di OS per gestire la seriale.  Con il comando mode 
potevi settare la velocita`, ma non esisteva alcun servizio per 
evitare l'overrun del buffer.  Le funzioni del BIOS le avevo trovate 
inutilizzabili. Ti poteva andare bene se usavi velocita` molto 
basse. 300 bps equivalgono a 30 char per sec. e anche le prime 
stampanti ad aghi seguivano questa velocita`. Ma solo in testo, con 
la grafica non c'era modo.  Le vecchie telescriventi non credo 
arrivassero a 10 char per sec.
Non conosco i DOS successivi per cui non saprei proprio rispondere.


 l'overrun del buffer.
Non ricordo, comunque la stampante stampava bene, sia pur con un prova
non molto lunga (si trattava di test su dos, per fare un troubleshooting
su unix: e' la stampante o la macchina o unix?). Vedo dall'help di mode
(pero' in windows 2000...):
C:\>help mode
Configura le periferiche di sistema.
Porta seriale:               MODE COMm[:] [BAUD=b] [PARITA=p] [DATI=d] 
[STOP=s]
                                       [to=on|off] [xon=on|off] 
[odsr=on|off]
                                       [octs=on|off] [dtr=on|off|hs]
                                       [rts=on|off|hs|tg] [idsr=on|off]
bye G.L.