LINUX.ORG.RU

программно задать шрифт для матричного принтера

 


0

1

два матричника стоят epson lx-1170
на двух компах с вендой. производится печать присылаемых текстов на них.
печатать нужно в двух режимах в 15cpi и 20 cpi.
имеется когдато давно написанный exe который постоянно запущен и хоткею способен менять cpi у принтера!
личной инциативой решил перевести организацию на линукс. Но вот эти две машины малину всю портят.
этот экзешник явно посылает некие esc последовательности при нажатии хоткея
Почитав маны по ESC/P наткнулся только на «set 15 cpi printing» делается это chr(15)
Ещё имеется set 10 cpi - chr(18) и всё
А вот изменение на 20 или хотя бы на 17 нет. Но эта шайтан программа на венде это делает!
Вопрос лишь в том, что послать на порт принтера, чтобы эта сучка стала печатать в 20 cpi

зы: обратная махинация с настройкой по дефолту 20ки, не пашет. Потому что chr(15) по сути сжимает шрифт, а при 20 попросту не пашет. А chr(18) превращает 20ку в 12cpi


А ты уверен, что шайтан-программа не в графике символы печатает?

Zubok ★★★★★
()
Ответ на: комментарий от four_str_sam

печатают локально. прямо на параллельный порт

Zubok уверен. программа ничего не печатает. но после манипуляций с ней при помощи хоткея prn по текстовому файлу и печатает в нужном размере. файлы для печати рождаются в cp866. печатают из far (это такой вендовый клон нортон командера)

kuko
() автор топика

Давнео это было....

Примерно так:

15cpi - это не сжатый - это отдельно

10cpi сжатием превращаются в 17cpi

12cpi в сжатом режиме - это 20cpi

15 - ставится явно, чтобы получить 20 - надо поставить 12 и сжатие.

Elyas ★★★★★
()
Ответ на: комментарий от kuko

файлы для печати рождаются в cp866.

Не совсем понял. Объясни. Программа выдает файл в cp866, ты его направляешь в принтер напрямую? И вот этот файл печатается с 20 cpi? Проверь тогда в текстовом файле наличие спецсимволов помимо самого текста. Эти символы могут не отображаться при просмотре.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Elyas

если я Вас правильно понял. по дефолту нужно поставить 15, а потом esc/p командой поставить 12 cpi а потом послать команду сжатия и на выходе я получу 20 cpi?

Zubok спецсимволы это есть esc последовательности. программа посылает их на принтер перед печатью. Откуда берутся файлы не принципиально. Программа посылает команду (то же текст по сути) на принтер. После посылается текст.

kuko
() автор топика
Ответ на: комментарий от kuko

Я бы не стал надеяться на дефолт. Определитесь с необходимыми Esc-командами, а потом, например организовать две очереди на один физический принтер (два логических), печатающие с разной плотностью

Elyas ★★★★★
()
Ответ на: комментарий от kuko

Zubok спецсимволы это есть esc последовательности. программа посылает их на принтер перед печатью. Откуда берутся файлы не принципиально. Программа посылает команду (то же текст по сути) на принтер. После посылается текст.

Вот это место и не совсем было понятно. Я из первого объяснения подумал, что уже готовые файлы в cp866, которые подготовила программа, уже напрямую в порт записываешь (ленейная печать). А на самом деле печать осуществляется через программу-посредника и она неявно вставляет заголовок с ESC-кодами, а не в файл записывает их.

А по какому порту подключение? Поставь прослушку на порт, если не докопаешься.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Elyas

ваш совет прошёл. благодарю.
нужно было всего лишь вначале задать 12й а потом сжать


Zubok, в конретном вопросе это не приципиально. Записывала ли программа команды в файл или посылала напрямую в порт - не суть. Этот момент гибкий и его можно изменить в любой момент.
Проблема была именно в подходе со стороны принтера. Ему то всёравно - что получил то и печатает.
lpt порт.
всем спасибо. вопрос закрыт.

kuko
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.