Page suivantePage pr�c�denteTable des mati�res

15. Les imprimantes s�rie

Le d�mon lpd fournit cinq attributs que vous pouvez positionner dans /etc/printcap afin de contr�ler le port s�rie sur lequel se trouve votre imprimante.

br
 (numerique) definit le taux de transfert en bauds (appel a ioctl(2))
fc
 (num) efface des indicateurs (sgtty.h)
fs
 (num) positionne des indicateurs (inverse de `fc')
xc
xs

Pour d�finir la vitesse du port, la syntaxe est �vidente. Exemple: br \#9600.

Les autres param�tres � positionner correspondent � un ensemble de bits, que l'on pourra soit positionner, soit mettre � 0. Pour effacer des bits, on utilisera les param�tres fc et xc, pour les positionner, fs et xs.

Faites bien attention aux bits que vous s�lectionnez. Mais au fait que sont-ils ? Souvenez-vous..., la commande stty. Elle indique de nombreux param�tres caract�risant un tty. La commande stty -a affiche en clair les param�tres du tty, certains d'entre-eux �tant pr�c�d�s d'un tiret s'ils sont invalid�s et sans tiret s'ils sont valid�s. La commande stty peut �tre appliqu�s au port s�rie (voir exemple). Ce sont certains de ces param�tres (des drapeaux, des flags, donc des bits) que l'on va manipuler.

 # stty -a < /dev/ttyS2
 speed 9600 baud; rows 0; columns 0; line = 0;
 intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
 eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
 lnext = ^V; min = 1; time = 0;
 -parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
 -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr
 -igncr -icrnl ixon -ixoff -iuclc -ixany -imaxbel
 -opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0
 bs0 vt0 ff0
 -isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop
 -echoprt -echoctl -echoke

Note: utilisez toujours stty de cette fa�on (stty < /dev/ttyS?); cette command utilise en effet l'entr�e standard).

Vous pouvez utiliser cette commande pour configurer le port de fa�on � obtenir une impression correcte. Par exemple, les diff�rences que l'on peut noter entre le stty ci-dessus et l'initialisation du port au d�marrage de ma machine r�side dans les informations -clocal, -crtscts et ixon. (La configuration de votre port pourra tr�s bien �tre diff�rente selon la mani�re dont votre imprimante g�re le contr�le de flux).

Votre port �tant bien configur�, faites : cat fichier> /dev/ttyS? (? est le num�ro de votre port) pour imprimer un fichier.

Imprimez par exemple le fichier /usr/src/linux/include/asm-i386/termbits.h. Vous y d�couvrirez un tas de d�finitions de constantes et de structures. Nous allons voir quelles valeurs d�finies dans ce fichier vont nous servir pour configurer le port, non plus avec stty, mais avec les param�tres fc, xc, fs et xs du fichier printcap. Regardez la section commen�ant par :

 /* c_cflag bit meaning */
 #define CBAUD   0010017

Elle d�crit justement les bits manipulables � l'aide de fc et fs dont on parlait. On y voit les constantes des vitesses de modulation en baud, puis des lignes qui nous int�ressent particuli�rement : ce sont les m�mes param�tres que dans la commande stty. Je sens que vous voyez o� on veut en venir. stty n'est qu'un interface n�cessaire au positionnement (ou effacement) de bits.

Vous savez maintenant que chaque param�tre affich� par stty correspond � un bit, et qui ont la valeur 0 lorsqu'il y a un tiret devant. Notez alors les bits � effacer (ce sera fait avec la param�tre fc) et ceux � positionner (param�tre fs). Exemple: `fc\#0177777' (Attention le param�tre fc semble surcharger le param�tre br, donc prenez garde � les positionner correctement).

Ensuite occupez-vous des bits � positionner. Par exemple s'il faut positionner les bits cs8, hupcl et cread, regardez les constantes CS8 (0000060), HUPCL (0002000) et CREAD (0000200). Pensez � la vitesse de modulation qu'il faut aussi d�finir, dans mon cas, ce sera B9600 (0000015). Tous ces bits ensemble font `0002275'. Indiquez cette valeur au param�tre fs.

Effectuez les m�me r�glages avec la section suivante intitul�e

 /* c_lflag bits */

Dans mon cas je n'ai rien � positionner, j'ai donc simplement � fournir la valeur xc\#0157777, puis xs\#0. Une fois votre fichier printcap correctement d�fini, essayez d'imprimer. Si quelque chose ne va pas, continuez � lire les paragraphes suivants.

Souvenez-vous de toujours commencer par les bits que vous souhaitez voir � 0 (fc et xc), puis de d�finir seulement apr�s des bits � positionner (fs et xs).

La commande cat fonctionne pour le port s�rie, mais pas lpd

La mise en place de lpd n'est pas trait�e ici, mais sachez que si vous avez des probl�mes avec la configuration du port s�rie, vous pouvez emp�cher lpd de le configurer en consid�rant votre imprimante comme ne pr�sentant pas une interface normale. Lisez �galement � ce propos le chapitre suivant.

Donnez � votre imprimante le p�riph�rique /dev/null1 (mknod /dev/null1 c 1 3). N'utilisez pas /dev/null, pour ne pas qu'il soit ouvert de mani�re exclusive. Enlevez les param�tres de vitesse et de positionnement des bits du fichier printcap.

Cr�ez un shell-script comme ci-dessous :

 #!/bin/sh
 echo if: $*>> /var/spool/lpd/results
 # /dev/lp est un lien vers /dev/ttyS2 auquel est reliee l'imprimante
 exec votre_vieux_filtre $*> /dev/lp

...ou si vous n'avez pas de param�tre `if' configur�...

 #!/bin/sh
 echo if: $*>> /var/spool/lpd/results
 cat> /dev/lp
 # la commande ``echo -ne'' suppose que /bin/sh correspond a bash
 echo -en \\f> /dev/lp

Donnez-lui les droits de lecture/�criture pour tout le monde. Essayez-le: /usr/lib/lpd/if <FICHIER.

D�finissez un filtre d'entr�e dans votre fichier printcap pour appeler ce script. :if=/usr/lib/lpd/if:.

Utilisez la commande stty pour configurer le port correctement. Essayez d'imprimer. Vous devriez pouvoir d�terminer si le(s) fichier(s) sont bien mis dans le r�pertoire de spool. Cela devrait imprimer, si votre essai manuel du script pr�c�dent a fonctionn�. Bien entendu, le mieux serait de pouvoir se passer du script d'entr�e et donc du param�tre if.

Supposons donc que la m�thode pr�c�dente a fonctionn�, et que vous pensez avoir correctement configur� votre fichier printcap. Ex�cutez la commande stty -a </dev/ttyS?. Si certains param�tres ne sont pas corrects, v�rifiez les constantes du fichier termbits.h. Si la configuration est incorrecte, malgr� tous vos efforts de v�rification, n'h�sitez pas � installer un d�mon r�cent.

15.1 Imprimantes anciennes et caract�res perdus

Certaines anciennes imprimantes s�ries ont des petits tampons m�moire et g�rent mal le contr�le de flux. Supprimer le FIFO du port s�rie (16550) avec setserial (faites croire � setserial que c'est un port 8250 et �a marchera).


Page suivantePage pr�c�denteTable des mati�res

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:43