Lpd обеспечивает пять атрибутов, которые вы можете установить в
/etc/printcap для контроля всех установок принтера на
последовательном порту. Читайте справочную страницу printcap
и отметьте значение атрибутов br#, fc#,
xc#, fs# and xs#. Последние четыре из
этих атрибутов являются битовыми картами показывающими установки
для использования портом. Атрибут br# это просто скорость
передачи в бодах, например `br#9600'.
Очень легко переводить из установок
stty в
установки флагов printcap. Если вам необходимо, то смотрите
справочную страницу stty.
Используйте stty для настройки порта принтера, так что вы
сможете выполнить копирование файла на него и получить правильно
напечатанный файл. Здесь приводятся данные того, что `stty -a'
показывает для моего принтерного порта.
Разница между этим и тем способом которым порт инициализируется
при загрузке во флагах -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'.
Jon Luckey указал, что некоторые старые последовательные
принтера с десятицентовым последовательным интерфейсом и маленькими
буферами действительно останавливаются когда используется
контроль потока. Он нашел, что запрещение FIFO для
последовательного порта 16550 его Linux-машины с помощью
setserial
исправило проблему потерянных символов (вы по всей видимости можете
просто указать тип uart как 8250 чтобы сделать это).
Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!