КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Форматы данных
Форматы данных и интерфейсы принтеров Современные принтеры способны работать в любом режиме — графическом или текстовом. После включения питания, аппаратного или программного сброса принтер готов к получению текстовых данных и команд. Принтеры, как правило, работают в расширенной (8-битной) таблице ASCII-кодов. Первые 32 кода (О-lFh) используются для управляющих символов, непосредственно не отображаемых принтером. Далее следуют коды специальных символов, цифр, прописных (верхний регистр, uppercase) и строчных (нижний регистр, lowercase) букв латинского алфавита. Коды 80-FFh требуются для знаков национального (в частности, русского) алфавита и символов псевдографики.
Файл BINCOD.CHR представляет собой таблицу всех печатных символов (управляющие коды пропущены), расположенных по 16 символов в строке. Из управляющих кодов, используемых при печати в символьном режиме, особо отметим код возврата каретки (CR, ODh), перевода строки (LF, OAh) и формата (FF, ОСh). Если принтеру задан режим AutoLF, то по коду возврата каретки принтер будет автоматически выполнять и перевод строки. Этот режим может быть задан настройкой принтера, а также специальным сигналом интерфейса Centronics. Файлы для печати в конце каждой строки, как правило, содержат пару кодов — CR и LF (последовательность байтов 0D, ОА), и при их распечатке в режиме AutoLF будут пропускаться пустые строки. Обычно режим AutoLF не используют. По трактовке управляющих кодов среди матричных принтеров распространены две основные системы команд: IBM (для принтера IBM ProPrinter) и Epson. Практически все команды изменения режимов печати (переключение шрифтов, изменение размера, эффекты печати и т. п.), а также переключения в графический режим, начинаются с кода Escape (Esc, lBh). Далее следует один или более байтов кода команды; формат последовательности определяется первым байтом (командой), следующим за кодом Esc. Вся эта конструкция называется Escape-последовательностью. Для графической печати существует множество языков со своими системами команд. В матричных принтерах использовались два режима печати — битовый образ и растровый режим. Битовый образ был вполне естественным для первых 8-9-игольчатых принтеров. В этом режиме блок графических данных несет байты, отвечающие за печать одной колонки всех иголок головки принтера. Для 9-игольчатых принтеров было удобно печатать колонки из 8 точек (чтобы колонка уместилась в байт), младшему биту байта соответствовала верхняя иголка. Байты задавали соседние колонки, слева направо. Escape-последовательность графического элемента строки состоит из команды печати, кода режима (разрешения), числа колонок в строке (2 байта), за которыми следует требуемое число байтов данных для каждой колонки. Графический принтер будет интерпретировать эту последовательность как блок графических данных, а следующие байты — как новую команду или символ текста. Для 24-игольчатых принтеров каждую колонку задают три байта графических данных. Строка будет напечатана после подачи символов CR, LF. В строке может быть несколько графических блоков, расположенных друг за другом, и они даже могут чередоваться (или совмещаться) с текстовыми символами, но использовать эту возможность программно неудобно. Для графической печати нужно отдельно программировать и вертикальный шаг перемещения бумаги (межстрочное расстояние). Управляя шагом и графическим режимом, можно выбирать требуемое разрешение по вертикали и горизонтали. Битовый образ пригоден только для черно-белой печати; он неудобен тем, что формат блока данных зависит от числа иголок принтера (бывают и 24-, и 48-игольчатые принтеры). В растровом режиме черно-белой печати каждый байт графических данных несет информацию о горизонтальной группе из восьми точек линии; старший бит соответствует левой точке, следующие друг за другом байты отображаются слева направо. После байтов, описывающих одну линию, следуют байты следующей линии (сверху вниз), и так до конца страницы (аналогично образу экрана в графическом режиме). Для цветной печати формат несколько сложнее, но общая идея сохраняется. Растровый режим естественен для лазерных принтеров — он соответствует способу формирования изображения на барабане. Этот режим поддерживают и многие современные струйные принтеры. Логически этот формат удобнее, поскольку он не зависит от числа сопел, правда, требует довольно большой буферной памяти принтера, но на современном этапе развития техники это уже не проблема. Растровый режим позволяет представить любое изображение. Однако здесь (как и при битовом образе) объем передаваемых данных растет пропорционально произведению вертикального и горизонтального разрешения (dpi) на размеры изображения (в дюймах) и число битов на пиксел для цветной печати. Для лазерных принтеров фирма Hewlett-Packard разработала специальный язык PCL (Printer Control Language), в котором кроме управляющих команд, аналогичных Escape-последовательностям матричных принтеров, имеются и графические, описывающие рисование геометрических примитивов. В языке имеются и средства работы со встроенными шрифтами принтера, включающие масштабирование и повороты букв. Язык PCL поддерживают и ряд струйных принтеров. Использование языка PCL позволяет сократить объем данных, передаваемых принтеру для печати сложных изображений, состоящих из текста и графики, по сравнению с растровым форматом. Особенно эта экономия существенна для высокого разрешения и цветной печати — для PCL объем передаваемой информации не так сильно зависит от разрешения и цветности. Однако для использования этих преимуществ язык PCL должно «понимать» и приложение, осуществляющее графический вывод. Поддержка PCL вполне естественна приложения с векторной графикой (включая текстовые процессоры и издательские системы). Сугубо растровые системы, естественно, будут генерировать команды растровой печати. Язык PostScript также предназначен для лазерных принтеров. В этом языке вся страница описывается в векторном виде. Шрифты задаются контурами (линиями Безье), и их растеризацией (в нужном цвете) занимается встроенный процессор принтера, в соответствии с возможностями принтера и выбранным разрешением печати. Векторное описание всех объектов (символов и геометрических фигур) обеспечивает возможность точного выполнения преобразований (масштабирование, позиционирование, повороты, зеркальные отражения). При этом файл печати не зависит от типа принтера (или иного устройства) — требуется только поддержка версии языка, на которой создан файл. Шрифты, используемые для отображения страницы, передаются в файле печати в компактном торном виде. Кроме того, принтер PostScript имеет большое количество стандартных встроенных шрифтов, которые позволяют еще больше экономить объем передаваемых данных. Реализация PostScript требует наличия у принтера мощного встроенного процессора, ОЗУ и ПЗУ большого объема. Для плоттеров, которые получают исключительно векторные команды рисования, существует несколько различных языков. Общепринятым является язык HP-GL, его понимают все плоттеры и практически все прикладные программы, использующие графический вывод на плоттер. Для плоттеров, особенно перьевых, актуальна оптимизация входных данных. Например, при многоцветных изображениях гораздо выгоднее нарисовать сначала все элементы одного цвета, затем другого. Программы, генерирующие данные для рисования, обычно поступают иначе: они «отрабатывают» изображения по объектам. Серия мелких многоцветных объектов породит частую смену перьев, за каждым из которых головка должна «сбегать» к магазину. Иногда имеет смысл использовать дополнительные программы-оптимизаторы, входными данными для которых служит выходной файл графического приложения. Поскольку между печатающим (чертящим) приложением и принтером (плоттером) всегда находится программный драйвер, при несоответствии их языков почти всегда требуется драйвер-транслятор. Так, например, матричный принтер, не русифицированный на аппаратном уровне, можно русифицировать программно. Предпочтительно использовать загружаемый знакогенератор принтера — для этого компьютер должен послать в принтер блок данных определенного формата, содержащий команды загрузки и собственно содержимое знакогенератора. Однако такая загрузка должна выполняться каждый раз после включения принтера; драйвер должен отслеживать состояние принтера (по сигналам интерфейса), и своевременно подгружать знакогенератор. Однако не все принтеры имеют такую возможность. Проще обстоит дело, когда у принтера имеется знакогенератор с русскими буквами, но они расположены в ином порядке, чем требуется. В этом случае драйвер-русификатор должен просто перекодировать символы по таблице. Правда, для этого ему требуется «понимать» графические команды принтера и прозрачно (без преобразования) пропускать графические данные. Если принтер вообще не имеет нужного алфавита и загружаемого знакогенератора, приходится печатать текст в графическом режиме. Для этого драйвер должен выполнять растеризацию символов, неизвестных принтеру или всех подряд (для однородности), и выводить их на принтер в графическом режиме. При этом более чем на порядок возрастает объем передаваемой информации, что замедляет скорость печати, особенно при маломощном процессоре (время расходуется и на растеризацию, и на собственно вывод данных). Аппаратная или программная русификация принтеров актуальна лишь для печати текстовых файлов средствами DOS. Приложения Windows используют графические режимы принтеров, и вопросы русификации уже переходят в чисто программную область (драйверы и системные шрифты). Однако печать в графическом режиме на матричных игольчатых принтерах хоть и возможна, но по нынешним меркам слишком медлительна и шумна. Для такой печати больше подходят струйные, а еще лучше — лазерные принтеры. Программный драйвер может реализовывать графический язык, не поддерживаемый принтером. Так, например, есть программные реализации языка PostScript. Однако при этом центральный процессор компьютера нагружается объемной 'задачей растеризации, причем в ОЗУ должен умещаться весь растровый образ выводимой страницы. Кроме того, на принтер будет выводиться огромный объем данных, что особенно неприятно при сетевом подключении принтера. Так что при больших объемах печати лучше использовать настоящий (аппаратный) PostScript, а не пользоваться его программной эмуляцией. Из вышесказанного вполне понятно, что драйвер принтера должен соответствовать типу принтера и его языковым возможностям. Так, например, при использовании принтера с PostScript об этом должен «знать» драйвер принтера, иначе графический вывод будет производиться всегда в растровом режиме и никаких преимуществ аппаратного PosScript пользователь не получит.
Дата добавления: 2013-12-13; Просмотров: 365; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |