Настройка printcap
Lpd обеспечивает пять атрибутов, которые вы можете установить в /etc/printcap для контроля всех установок принтера на последовательном порту. Читайте справочную страницу
и отметьте значение атрибутов br#, fc#, xc#, fs# and xs#. Последние четыре из этих атрибутов являются битовыми картами показывающими установки для использования портом. Атрибут br# это просто скорость передачи в бодах, например `br#9600'.
Очень легко переводить из установок в установки флагов printcap. Если вам необходимо, то смотрите справочную страницу stty.
Используйте stty для настройки порта принтера, так что вы сможете выполнить копирование файла на него и получить правильно напечатанный файл. Здесь приводятся данные того, что `stty -a' показывает для моего принтерного порта.
dina:/usr/users/andy/work/lpd/lpd# 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
Разница между этим и тем способом которым порт инициализируется при загрузке во флагах -clocal, -crtscts, and ixon. Настройки вашего порта могут отличаться в зависимости от того как ваш принтер делает контроль потока.
В действительности вы используете stty странным способом. Так stty работает с терминалами, подключенными к его стандартному вводу, вы используете его для манипуляций с заданным последовательным портом используя символ `<' как показано выше.
После того как вы правильно установили настройки stty, так что `cat file > /dev/ttyS2' (в моем случае) посылает файл на принтер, посмотрите в файл /usr/src/linux/include/asm-i386/termbits.h. Этот файл содержит некоторое количество #defines и несколько структур (вы можете захотеть напечатать этот файл на принтере (он у вас работает, не так ли?) и использовать его как черновик). Перейдите в раздел который начинается с:
/* c_cflag bit meaning */ #define CBAUD 0000017
Этот раздел перечисляет значение битов fc# и fs#. Вы будете уведомлены, что имена здесь (после скорости передачи) соответствуют одной из строк вывода stty. Не я ли сказал что все будет легко?
Заметим какая из этих настроек начинается с a-- в вашем выводе stty. Просуммируем все эти числа (они в восьмеричном представлении). Это представляет собой биты которые вы хотите очистить, так что результатом будет ваше свойство fc#. Конечно помните что вы будете устанавливать биты прямо после очистки, так что вы можете просто использовать `fc#0177777' (я так делаю).
Теперь сделаем это для тех установок (перечисленных в этом разделе) которые не имеют a в начале -- в вашем выводе stty. В моем примере самые важные это CS8 (0000060), HUPCL (0002000), и CREAD (0000200). также заметим флаги для вашей скорости передачи (мои равны 0000015). Сложим их все, и в моем примере получим 0002275. Это идет как ваше свойство fs#
(`fs#02275' великолепно работает в моем примере).
Сделайте тоже самое с установкой и очисткой для следующего раздела включаемого файла, "c_lflag bits". В моем случае я не устанавливал ничего, так что я просто использовал `xc#0157777' и `xs#0'.