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.
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).
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:43