РУКОВОДСТВО ПО SCANJET HP Запрос номера модели HP ESC*s3E Scanjet всегда возвращает значение 9190A в ответ на этот запрос. Scanjet+ возвращает значение 9195A. Для совместимости, можно сделать проверку всех 5 цифр. Проверка первых 3х цифр дает уверенность, что это сканер семейства HP Scanjet. Заметим, что в HP введена обратная совместимость семейства настольных сканеров Scanjet. Пример: Scanjet возвращает ESC*s3dW9195A, что показывает, что это Scanjet+. Запрос даты производства ESC*s4E Эта ESC - последовательность заставляет сканер выдать 4 цифровое число, которое явл-ся кодом даты производства фирменного - - - - - ПО HP - соглашению для кодов дат, первые 2 цифры явл-ся годом после 1960 и 2 другие цифры явл-ся неделей года, начиная с 01 для первой недели года. Например, неделя, начинающаяся с 6 янв 1986, будет представлена как 2602. Сканер возвращает ESC*s4d4W????, где ???? - это ASCII - представление кода даты как описано выше. Запрос состояния ESC*s5E (только для Scanjet+) Эта команда возвращает 7-байтовую строку состояния, содержащую результаты последнего самотестирования. Формат строки возврата "ESC*s5d7Wxxxxxxx", где каждый x представляет "P" для "Pass" или "F" для "Fail" так Байт 1: CPU CHIP 2: CPU ROM 3: CPU & GAMMA RAM 4: CALIBRATION RAM 5: NRP and RAC CHIPs 6: HOME POSITION 7: LAMP КОМАНДЫ СООбЩЕНИЯ ОБ ОШИБКАХ Введение Когда условие ошибки замечено устр-вом SCL, то целый номер ошибки вырабатывается и заносится в стек ошибок (типа "последний - вошел - первый - вышел"), который может читаться компьютером. Scanjet осущ-ет подмножество такой возможности, где стек ошибок содержит только самые свежие номера ошибок. Будущие сканеры могут поддерживать большие стеки. Запрос max глубины стека ошибок ESC*s256E Эта команда заставляет Scanjet вернуть значение "1". Scanjet всегда возвращает ESC*s256d1V, показывающую, что может храниться только одна ошибка в стеке ошибок. Запрос текущей глубины стека ошибок ESC*s257E Когда Scanjet получает эту команду, он выдает "1", если получается ошибка со времени последнего "Сброса оборудования" или "Чистки ошибок". Иначе "0". Если Scanjet имеет ошибку в стеке ошибок, возвращает ESC*s257d1V. Чтение номера текущей ошибки ESC*s259E Эта команда заставляет устр-во вернуть N текущей ошибки. Использование этой команды не вызывает очистки ошибок или не обращзает линию "Ошибка" на интерфейсе в "ложь". Если "тек. глубина стека" = 0, (т.е. нет ошибок с последнего "Сброса оборудования" или "Чистки ошибок"), нулевой ответ будет возвращен (ESC*s259dN). "Тек. номер ошибки" м.б. очищен со "Сбросом оборудования" или "Чисткой ошибок". Сканер возвращает ESC*s259d#V, где # - ASCII - представление значения номера ошибки. Если тек. номер ошибки - 1024, это указывает на заклинивание бумаги в ADF. Чтение старейшей ошибки ESC*s261E Эта команда заставляет устройство выдать "Старейший номер ошибки". Исполнение этой команды не вызывает чистку ошибок или "ложь" на линии интерфейса. Ошибка: Чистка "старейшего номера ошибки" происходит со "Сбросом оборудования" или "Чисткой ошибок". Если не было ошибки со времени, когда была последняя чистка ошибок, устройство возвращает 0-ответ. Если "Старейший номер ошибки" - 3 (неверное окно), тогда сканер вернет ESC*s261d3V. Чистка ошибок ESC*soE Эта команда вызывает следующие действия, если уже не существует ошибки, требующей вмешательства оператора или обслуживающего персонала, для которой должные действия еще не предприняты: 1. Чистка стека ошибок. 2. Сброс "текущей глубины стека" в 0. 3. Сброс "старейшего номера ошибки". 4. Установка линии интерфейса "Ошибка" в "ложь". Замечание: Эта команда не чистит ошибку отсутствия положения "домой". Эта ошибка показывает сбой оборудования, который д.б. исправлен, чтобы быть очищенной. ОСНОВНАЯ ИНФОРМАЦИЯ О ЯЗЫКЕ УПРАВЛЕНИЯ СКАНЕРОМ (SCL) ФОРМАТ ESC-ПОСЛЕДОВАТЕЛЬНОСТЕЙ Введение Эта глава описывает обобщенный формат ESC-последовательностей, используемых Scanjet и Scanjet+. 2 символа ESC-последовательностей 2 символа ESC-последовательностей имеют вид ESCX, где X - это символ из ASCII-таблицй в пределах от 30H до 7EH (0 до ~). Если получен символ от 21H до 2FH (! до /), то ESC-посл-ть параметризуется и интерпрети- руется, как будет обсуждено позднее в этой секции. Неверный синтаксис Если получен символ от 0H до 20H (NUL до Пробел), 7FH (DEL) или 80H до FFH (после ESC), то эта последовательность неверна и будет выработана ошибка команды формата. Неверный символ в этом случае д.б. обработан на высшем уровне грамматического разбора ESC-посл-ти. Высший уровень грамматического разбора ESC-посл-ти - это уровень, на котором символ обрабатывается как независимый символ или код управления (т.е. независимый от предыдущих символов. Нераспознанные 2 символа ESC-последовательности Для HP9190 единственная поддерживаемая двухсимвольная ESC-посл-ть - ESCE. Следовательно, если любой символ от 30H до 7EH, отличный от 45H(E), следует за 'ESC', будет выработана "Нераспознанная командная ошибка". Параметризированные ESC-последовательности Имеют форму: ESC P g # t1 # t2 # t3 ... #Tn [данные], где g, #, ti и [данные] являются функциональными. P - параметризированный символ - это символ из ASCII-таблицы в пределах от 21H до 2FH (! до /). Цель этого символа - показать, что эта ESC-посл-ть параметризирована. Единственный параметризированный символ, узаконенный для Scanjet - это '*' (2AH). g - групповой символ - символ из ASCII-таблицы в пределах 60H - 7EH (' до ~). Цель - определить группу или тип выполняемого управления. # - поле значения - группа символов, определяющих численное значение. Численные значения содержат символы от 20H до 3FH (Пробел до ?). ti - символ параметра - любой символ ASCII-таблицы от 60H до 7EH (' до ~). Этот символ указывает параметр, к которому применяется предыдущее поле значения. Символ параметра м.б. функционально заменен его соот. верхне-шифтовым символом, означающим завершение ESC-последовательности. Tn - завершающий символ - любой символ из ASCII-таблицы от 40H до 5EH (@ до ^). Этот символ определяет параметр, к которому применяется поле предыдущего значения. Этот символ завершает ESC-последовательность и используется вместе с ti. [данные] - данные - относятся к порогизированным данным. Порогизи- рованные данные - это 8-битовые данные, связанные с ESC-последовательностью, которая не интерпретируется грамматическим разбором ESC-посл-ти. ПОЛЕ ЗНАЧЕНИЯ Оно может содержать только числовое значение. Числовое значение представляется как ASCII-строка цифр ('0' до '9'), которой может предшествовать знак унарной операции ('+' или '-'), и за которой следует обозначение дробной части через использование десятичной точки ('.'). Предполагается, что поле - целое, если не указано иное в определении ESC-последовательности. Если поле значения отсутствует и ожидается '1', то предполагается значение '0'. Основание числового значения поля - десятичное. Ведущие нули и пробелы игнорируются. Величина значения поля д.б. не более 32767. Если определено значение > 32767, соответствующий параметр устанавливается на граничное значение (32767 для беззнаковых или положительных чисел и -32767 для отрицательных. Десятичные цифры от '0' до '9' и '.' начинают поле числового значения. Если поле числового значения уже начато, пробелы действуют как завершение, закрывающее это поле числового значения. Для HP9190 допустимы числа справа от десятичной точки, однако исполь- зуются только целые части чисел. Завершающий символ Он (Tn) действительно является символом-параметром последнего параметра в командной последовательности. Однако, чтобы различать Tn-формы от пред- шествующих параметрических символов (ti), последний ti изменяется до Tn вычитанием 20H из его ASCII-кода. Например, ESC*f1L и ESC*f1l300F оба включают свет сканера, но второй также управляет положением элемента сканера. Замечание: Параметрический символ и его соот. верхне-шифтовой завер- шающий символ являются той же самой функцией. Параметрический символ дает пользователю возможность связать ESC- посл-ти из той же самой группы. Завершающий символ заканчивает ESC- посл-ть и м.б. использован вместо парам. символа. Исполнение команд Выполняемые команды исполняются так, как они декодируются. М.б. отдельные случаи, в которых порядок параметров может иметь значение. Неверный синтаксис Если неверный символ получен в пределах ESC-последовательности (т.е. синтаксис неверен), обработка этой ESC-посл-ти завершается, и вырабатывается "Ошибка формата команды". Неверный символ интерпретируется независимо от предыдущих символов для сохраненных данных (т.е. обрабо- танных на "верхнем" уровне, независимо от предыдущих символов). Замечание: Неверный синтаксис применим только для пользовательских данных, устройство интерпретирует и игнорирует все данные, добавленные к пользовательскому потоку для целей протокола (т.е. "ENQ" для последоват. ENQ/ACK - протокола,...). Нераспознанные параметризированные ESC-посл-ти Любая параметризированная ESC-посл-ть (или порция из нее), правильная синтаксически, однако нераспознанная Scanjet, игнорируется. Scanjet возвращает ошибку нераспознанной команды. Параметризированная ESC-посл-ть с неверными пар-ми Любая распознанная ESC-посл-ть, которая содержит значения неверных параметров, вырабатывает "Ошибку параметра". Однако, запрошенный параметр не игнорируется. Сканер пытается выбрать поддерживаемый параметр, близкий к запрашиваемому, если удается. Отношение запроса значения поля к параметру Значение поля, которое соответствует каждому отдельному параметру, это функция символов в ESC-посл-ти, используемых, чтобы установить параметр. Формула следующая: Значение = (P - '''') * 1024 + (G - 'a') * 32 + (T - 'A') где ESC-посл-ть, устанавливающая параметр вида ESCPG#T, как указано ранее в этой главе. Если поле значения в команде запроса не распознано, будет возвращен 0-й ответ, но ошибка не вырабатывается. Если компьютер посылает сканеру любую команду после команды запроса, но перед чтением ответа на запрос ответ будет потерян. Далее описываются формат данных, которые посылают- ся из Scanjet в компьютер. Формат ответов Сканера на запросы Введение. Ответы на запросы о состоянии выдаются в виде ESC-посл-ти с командами запроса в первой части ответа. Глава 1 суммирует отдельные ответы о состояни, поддерживаемые Scanjet-ом. Ответы на запрос о численных параметрах. Основная форма их такова: ESC * s <Ид-р запроса> <завершение 1> <значение> V <Идент-р запроса>: Поле значения соотв-го запроса. Это уникальный номер-идент-р, назначенный к каждому пар-ру, который можно читать. <завершение 1>: "p" - для ответов на запросы в форме ESC*s#R, показывающей, что следует параметр. "d" - для ответов на запросы вида ESC*s#E, показывающих, что следуют данные. <значение>: ASCII - представление реализуемого значения параметра. В случае пар-ра, который м.б. установлен прямо с SCL ESC-посл-ю, значение нах-ся в тех же самых единицах, что и поле значения, используемого, чтобы установить параметр. Смысл того, что это "реализуемое" значение, в том, что любое округление или усечение (в случае размерностей), которое было сделано сканером, д.б. отражено в возвращенном значении. Возвращаемые значения в дециточках будут округляться до следующего высшего целого значения, чтобы компенсировать усечение, которое случается внутри сканера, когда бывают получены значения в дециточках, которые нельзя точно перевести в целое число отсчетов устройств. Строковые параметры Основная форма ответов на запрос для строковых значений: ESC*s <Иден-р запроса> d <счетчик байтов> W <строка данных> <Иден-р запроса>: Поле значения соответствующего запроса. Имеется уникальный N идетификатора, назначенный каждому пар-ру, который можно читать. <счетчик байтов>: Значение, которое явл-ся числом байтов строки данных, которое следует за завершающим символом. <строка данных>: Строковый параметр, который был затребован запро- сом. Нулевой ответ Scanjet возвращает ответ на любой запрос состояния, который плучен из компьютера. Запрос - это любая ESC-посл-ть формата: ESC*s# <завершение> Если Scanjet получает запрос о параметре, который не поддерживается, будет возвращен 0-й ответ, но ошибка не вырабатывается. Формат 0-го ответа: ESC*s <Ид-р запроса> <завершение 1> N где <Ид-р запроса> и <завершение 1> как выше. Формат данных, возвращаемых сканером Введение. Данные из Scanjet возвращаются как единый блок двоичных данных без заголовка или сопровождающей информации. Так как чтение данных сканера обычно включает передачу большого количества даннех на относительно высокой скорости, важно не сдерживать компьютер, чтобы не потерять данных при чтении. След-но, SCL-стандарт для передачи незакодированных данных. Это то, что данные не включают контроля, вставленного в данные. Все строки сканирования в данном сканировании содержат одинаковое число байтов и представляют собой одинаковое число отсчетов. Формат "однобитовых-на-отсчет" данных Эти данные включают в себя выводные типы порогизированных, растрированных, черных и белых данных. Первый отсчет данных для любой строки сканирования начинается в наиболее значащем бите первого байта данных для этой строки сканирования, соседний отсчет представлен следующим наиболее значащим битом и.т.д. Каждый байт представляет данные для 8-отсчетов,кроме последнего байта строки сканирования, который добавляется информацией, если необходимо завершить передачу строки сканирования на целом числе байтов. Добавочные биты являются даннными изображения. Формат данных серой шкалы Вывод Scanjet-а упаковывает данные серой шкалы, используя 4 или 8 битов на отсчет.(8 битов поддерживаются только Scanjet+). Упакованные данные серой шкалы не дополняются информацией между данными для отдельных отсчетов на данной строке сканирования. Наиболее значащий бит первого байта данных, возвращаемых в компьютер, является наиболее значащим битом значения серой шкалы для первого отсчета строки сканирования. Наиболее значащий бит каждого значения серой шкалы соседствует с наименее значащим битом пере......щего отсчета. Как и в данных "один-бит-на-отсчет", последний байт дополняется данными изображения, если нужно, чтобы достичь целого числа байтов в строке сканирования. Ошибки параметра Введение Эта глава описывает условия, которые вызывают параметрированные ESC-последовательность, если вырабатываются "ошибки параметра". Шаги, предшествующие обработке Когда HP9190 получает распознанную параметризированную команду, значение параметра предворительно обрабатывается по следующим шагам: 1. Если значение не указано, предполагается 0. 2. Отрицательные значения усекаются в отрицательные целые. 3. Положительные значения усекаются в положительные целые. 4. Если значение меньше -32767, оно заменяется на -32767. 5. Если значение больше 32767, оно заменяется на 32767. Следующая таблица иллюстрирует эти шаги и показывает какие значения вызывают "ошибку пар-ра" Шаг Значение запроса Модифицир. значение Ощибка пар-ра 1 никакого 0 нет 2 -abc.xyz... -abc нет 3 abc.xyz... abc нет 4 <-32767 -32767 есть 5 >32767 32767 есть Ошибки сообщений Когда условие ошибки, замеченной SCL-устройством, вырабатывается целый номер ошибки и опускается в стек ошибки ("последний пришел - первый вышел"), который может читаться компьютером. Scanjet осуществляет подмножество этой возможности, когда стек ошибок содержит только наиболее свежий номер ошибки. Пользователь Scanjet м. читать наиболее свежую и самую старую ошибку со времени последнего сброса. Единицы данных, поддерживаемых Scanjet, включают следующие: Стек ошибок - номер наиболее свежей ошибки. Scanjet поддерживает только одну позицию в стеке, но будущие SCL-устр-ва м. поддерживать возможность хранения нескольких ошибок в стеке. Сообщение старейшей ошибки - номер ошибки, которая случилась самой первой. Этот номер может также быть записан в "стек ошибки", но может читаться без воздействия "текущей глубины стека ошибок". Эта единица может быть очищена только со "Сбросом оборудования" или "Чисткой ошибок". Текущая глубина стека - она = '1', если ошибка записана в стек, или '0', если ошибок не было со времени последнего "Сброса оборудования" или "Чистки ошибок". Шаги, которые делает Scanjet, когда замечает ошибку, следующие: 1. Вырабатывается номер ошибки. 2. Если "текущая глубина стека" имеет значение '0', новый номер ошибки записывается как "сообщение о старейшей ошибки". 3. Если "текущая глубина стека" = 1, наиболее свежая ошибка убирается из "стека ошибок". 4. Новый номер ошибки вводится в "стек ошибок", и "текущая глубина стека" устанавливается в 1. 5. Бит ОШИБКА в интерфейсе Центроникс устанавливается в "истину". Следующая секция описывает команду для манипуляций и чтения единиц данных. См. рисунок 4 для обзора команд и сообщений. ПРИЛОЖЕНИЕ A КОДЫ СИМВОЛОВ ASCII Десятичное Восьмеричное Шестнадцатиричное Символ 000 000 00H NUL 001 001 01H SOH 002 002 02H STX 003 003 03H ETX 004 004 04H EOT 005 005 05H ENQ 006 006 06H ACK 007 007 07H BEL 008 010 08H BS 009 011 09H HT 010 012 0AH LF 011 013 0BH VT 012 014 0CH FF 013 015 0DH CR 014 016 0EH so 015 017 0FH si 016 020 10H DLE 017 021 11H DC1 018 022 12H DC2 019 023 13H DC3 020 024 14H DC4 021 025 15H NAK 022 026 16H SYM 023 027 17H ETB 024 030 18H CAN 025 031 19H EM 026 032 1AH SUB 027 033 1BH ESC 028 034 1CH FS 029 035 1DH GS 030 036 1EH RS 031 037 1FH us 032 040 20H SP 033 041 21H 034 042 22H 035 043 23H 036 044 24H $ 037 045 25H % 038 046 26H & 039 047 27H 040 050 28H 041 051 29H 042 052 2AH 043 053 2BH + 044 054 2CH 045 055 2DH 046 056 2EH 047 057 2FH 048 060 30H 0 049 061 31H 1 050 062 32H 2 051 063 33H 3 052 064 34H 4 053 065 35H 5 054 066 36H 6 055 067 37H 7 056 070 38H 8 057 071 39H 9 058 072 3AH 059 073 3BH 060 074 3CH < 061 075 3DH 062 076 3EH > 063 077 3FH ? 064 100 40H @ 065 101 41H A 066 102 42H B 067 103 43H C 068 104 44H D 069 105 45H E 070 106 46H F 071 107 47H G 072 110 48H H 073 111 49H I 074 112 4AH J 075 113 4BH K 076 114 4CH L 077 115 4DH M 078 116 4EH N 079 117 4FH O 080 120 50H P 081 121 51H Q 082 122 52H R 083 123 53H S 084 124 54H T 085 125 55H U 086 126 56H V 087 127 57H W 088 130 58H X 089 131 59H Y 090 132 5AH Z 091 133 5BH 092 134 5CH 093 135 5DH 094 136 5EH A 095 137 5FH 096 140 60H 097 141 61H a 098 142 62H b 099 143 63H c 100 144 64H d 101 145 65H e 102 146 66H f 103 147 67H g 104 150 68H h 105 151 69H i 106 152 6AH j 107 153 6BH k 108 154 6CH l 109 155 6DH m 110 156 6EH n 111 157 6FH o 112 160 70H p 113 161 71H q 114 162 72H r 115 163 73H s 116 164 74H t 117 165 75H u 118 166 76H v 119 167 77H w 120 170 78H x 121 171 79H y 122 172 7AH z 123 173 7BH 124 174 7CH 125 175 7DH 126 176 7EH 127 177 7FH DEL ПРИЛОЖЕНИЕ B ИСПОЛЬЗОВАНИЕ РАЗРЕШЕНИЯ И ПАРАМЕТРОВ МАСШТАБИРОВАНИЯ РАЗРЕШЕНИЕ СКАНИРОВАНИЯ Параметры разрешения сканирования д.б. установлены на разрешение принтера. Это поддержит вид пропорции точной для сканируемого и печа- таемого изображения. Если разрешение принтера 240 * 180, тогда первичное разрешение сканирования д.б. установлено на 240 точек/дюйм, а вторичное - на 180 точек/дюйм. МАСШТАБИРОВАНИЕ Команды масштабирования позволяют пользователю изменить размер изображения по каждой отделбной необходимости. Границы масштабирования изображения зависят от текущего разрешения сканирования. Т.к. разешение сканирования действует на масштабирование, пользователь должен сначала установить разрешение сканирования, затем запросить границы масштабиро- вания, и затем установить желаемый масштаб. Не следуя этому порядку команд, вы рискуете сделать ошибку масштабирования. Отношения между разрешением сканирования и масштабированием следующие: 37.5 <= (масштаб) * (разрешение) <= 600 Где масштаб 1.00 это 100% масштабирования. Масштабирование в первичном направлении сканирования имеет один более жесткий эффект, который может впоследствии сдерживать max границы для масштабирования серой шкалы. Это отношение следующее: (масштаб) * (разрешение) * (битов/отсчет) * (ширина) <= 2048 байт Поскольку "битов-на-отсчет" и "ширина" явл-ся частью равенства, max граница первичного сканирования д.б. запрошена после "типа выводных данных" и установки "первичной ширины". Это добавочное ограничение получается только тогда, когда требуется сканирование серой шкалы, которое имеет свыше 80% полной длины строки сканирования и масштаб, близкий к max, разрешенному для этого разрешения. Таблица Примеров разрешения и границ масштабирования Разрешение Min Max Принтера масштаб масштаб 38 99 1578 75 50 800 100 38 600 150 25 400 180 21 333 200 19 300 240 16 250 300 13 200 600 7 100 РУКОВОДСТВО ПО SCANJET Используемые типы данных: - порогизированные - белые - черные - растрированные 1. Порогизированные: Это черно-белые данные, один бит на отсчет. Значение 1 будет, если опт. плотность в этой точке больше заданного уровня, и 0, если меньше. М.б. наоборот. 2. Белые: Используется для тестирования, гонит белые данные ("0"), 1 бит на отсчет. 3. Черные: Тестирование, значение "1", 1 бит на отсчет. 4. Серая шкала: 4 или 8 бит на отсчет в единицах опт. плотности, т.е. 0 - белое и max число (15/255) черное. Данные идут в компьютер либо в упакованном формате 2 отсчета на байт (при 4-х битах на отсчет), либо один отсчет на байт (при 8-ми битах на отсчет). 5. Растрированные данные: Scanjet осуществляет схему для представления многоуровневой серой шкалы в один бит на отсчет-форме. Цель этого подхода - дать возможность представить данные на двоичных выводных устройствах (где каждая точка либо "вкл", либо "выкл"), что поддерживает некоторую из информации серой шкалы, которая была бы потеряна простым применением операции порогизации, как с "порогизированными" данными. Термин "растрированные данные" используется в этом документе, чтобы сослаться на подход, где данные серой шкалы на вводе вырабатываются в виде множества отсчетов в матричной форме. Т.о., пространственное разрешение заменяет возможность представления инф-ии серой шкалы. Scanjet поддерживает 4 предопределенные растровые матрицы и 1, опре- деленную пользователем. На матрицы ссылаются по номеру, который называется "растровый ИД" (идентификатор). На Scanjet поддерживаются 4 типа растровых матриц: - 8 x 8 Fatting - 4 x 4 Fatting - 4 x 4 Bayer - 4 x 4 вертикальная линия Каждая растр. матрица имеет свои преимущества и недостатки: 8 x 8 лучше фотокопирует, но с некотрой потерей разреш. 4 x 4 имеет лучшее разрешение, но хуже фотокопирует из-за возможностей фотокопирования 4 x 4VF имеют среднее разрешение и воз-ть фотокопирования 4 x 4VL по отношению к двум первым. КООРДИНАТНАЯ СИСТЕМА первичное направление сканирования (возрастание по x) точка (0,0).---------------------> отсчета I I область доступная вторичное направлениеI сканирования I сканированию (возрастание по y) I I I V Сначала последовательно вводятся все отсчеты по строке (первичное направление), затем каретка передвигается на одну строку, и сканируется следующая строка. Точка (0,0) - называется "точка отсчета сканируемой области" ЕДИНИЦЫ РАЗМЕРНОСТИ Scanjet поддерживает две единицы измерения: - дециточки - отсчеты устройства Дециточки постоянны для всех сканеров и принтеров. Имеется 720 дециточек/дюйм. Scanjet поддерживает наивысшее разрешение 300 отсч.ус-ва/дюйм. Все размерности установлены жестко либо в дециточках, либо в отсчетах независимо от текущего разрешения сканирования. Например, положение окна, которое определено при разрешении 300 отсч/дюйм, не изменится при разре- шении 150 отсчетов/дюйм. Координатная система не зависит от масштабирования. При изменении разрешения дробные величины округляются до следующего целого. Например, наше разрешение 300 отсч/дюйм. Пользователь устанав- ливает 75 отсч/дюйм и вводит изображение из окна шириной 5 отсчетов, тогда сканер вернет 2 отсчета в каждой строке сканирования: 75 / 300 = 1/4; 5 * 1/4 = 5/4 -> 2 Однако, спецификация оригинальной ширины хранится в отсчетах и не подвергается округлению. И если разрешение изменить на 300 отсч/дюйм, то окно сканирования дало бы в результате 5 отсчетов на строку сканиро- вания. ОКНА Сканер вводит данные изображения, определенные типом окна. Окно определяется положением и шириной по каждому измерению. (0,0)\__________________________ i (x0,y0) i i \________________ i x0 = гориз. положение окна(в отсчетах) i i i i y0 = верт. положение окна -:-:- i i i i p0 = гориз. ширина окна -:-:- i i окно i i q0 = верт. ширина окна -:-:- i i i i "ширина" и "положение" д.б. >= 0 i i_______________i i i \ i i______________________\_i \(x0+p0-1, y0+q0-1) Верхний левый угол окна называется точкой отсчета окна. УМОЛЧАНИЯ Окно: от (0,0) до (2550,3508) Тип данных: порогизированные Кол-во окон: 1 КОМАНДЫ SCL Доступ к возможностям Scanjet достигается только через использование SCL-команд в виде ESC-последовательностей. Сканер обрабатывает ASCII- строки, которые начинаются с ESC-символов, как команды. Все нераспознан- ные символы сбрасываются сканером и не вызывают никаких действий. Каждая команда, чтобы установить параметр, имеет три команды запроса, чтобы затребовать информацию на этот параметр. Различные команды-запросы различаются по завершающему символу. Если завершающий символ = "L" - нижнее разрешенное значение параметра, "H" - верхнее -:-:-:- "R" - текущее установленное значение пар-ра. Сканер возвращает ESC-последовательность в ответ на команду запроса. Ответная ESC-последовательность включает инф-ию о том, на какую команду сканер отвечает, и требуемое значение. Использование опросных команд весьма рекомендуется для развития совместимых Scanjet-драйверов. Замечание: 1. Пробелы в командах - только для ясности чтения и не являются частью команды. Замещается "?" - завершающим символом. Замещаем "#" на соот. ASCII-символы, представ- ляюшие параметры, установленные для команды. 2. Числа, указанные в командах, являются ASCII-символами, представляющими числа. Т.о., если команда "ESC*a257R", то командная последовательность будет: символ ESC(1BH), символ '*', символ 'a', символ '2', символ '5', символ '7', символ 'R'. Сброс ESCE Вызывает у сканера аппаратный сброс, устанавливающий все параметры в их значения по умолчанию. КОМАНДЫ РАЗРЕШЕНИЯ СКАНИРОВАНИЯ Уст-ть разрешение по x ESC*a#R Уст-ть разрешение по y ESC*a#S Опросить разрешение по x ESC*s10323? Опросить разрешение по y ESC*s10324? Примеры: ESC*s10323L требует у сканера вернуть нижнюю границу разрешения в первичном направлении. Сканер всегда возвращает на запросы следующие ответы. ESC*s10323p#V - для первичного направления ESC*s10324p#V - для вторичного направления , где # - число для текущего, верхнего и нижнего разрешения (38 - нижнее, 600 - верхнее). КОМАНДЫ ФАКТОРА МАСШТАБИРОВАНИЯ Установить масштаб по x ESC*a#E Установить масштаб по y ESC*a#F Опросить масштаб по x ESC*s10310? Опросить масштаб по y ESC*s10311? Установить масштаб по x Выбирает фактор масштабирования в первичном направлении сканирования. Эта команда используется для масштабирования выводных данных, значение поля масштаба кратно 100, так что 100(умолч) означает, что данные не масш- табированы. Если масштаб = 50, а сканер работает на 300 отсч/дюйм, то сканер выдаст 150 шаблонов данных на дюйм. Масштаб м.б. установлен на любое значение от 1 до 5000, но уровень ограничительных рамок зависит от x-разрешения по след. формуле: 1200 <= (X-масштаб) * (X-разрешение) <= 60000 Следовательно, min X-масштаб и max значение могут быть опрошены только после установки X-разрешения. Если требуется X-масштаб, выходяший за рамки (1,5000), то "ОШИБКА-ПАРА- МЕТРА" не будет вырабатываться до тех пор, пока не выяснится, что разре- шение (не?)будет изменено перед началом сканирования. Если выдаются команды "ОПРОС-ОТСЧЕТОВ-НА-СТРОКУ-СКАНИРОВАНИЯ", или "ОПРОС-БАЙТОВ-НА- СТРОКУ-СКАНИРОВАНИЯ", или "ОКНО-СКАНИРОВАНИЯ", то будет выдано ближайшее дозволенное значение масштаба, которое не превышает вышеупомянутых огра- ничений и "ОШИБКА-МАСШТАБА" не будет вырабатываться. Требуемый масштаб не модифицируется, так что если последующие действия изменят разрешение, тогда требуемый масштаб м.б. использован без перезасылки команды в сканер. Установить масштаб по y Аналогично x: 1200 <= (Y-масштаб) * (Y-разрешение) <= 60000 Примеры: ESC*a125E - устанавливает масштаб по x 125% от полного размера. Сканер возвращает ESC*s10310p#V или ESC*s10311p#V на запросы о масштабе, где # - ASCII-представление значения ответа. КОМАНДЫ ПОЛОЖЕНИЯ ОКНА Эти команды контролируют положение, размер и формат окна сканирования. Окно м.б. и больше сканируемой области, но тогда выдают данные только для порции окна, которая лежит в сканируемой области. Уст-ть положение окна по X(дециточки) ESC*a#X Уст-ть положение окна по Y(дециточки) ESC*a#Y Уст-ть положение окна по X(отсчеты) ESC*f#X Уст-ть положение окна по Y(отсчеты) ESC*f#Y Запрос положения окна по X(дециточки) ESC*s10329? Запрос положения окна по Y(дециточки) ESC*s10330? Запрос положения окна по X(отсчеты) ESC*s10489? Запрос положения окна по Y(отсчеты) ESC*s10490? Команды установки положения окна устанавливают расстояние в дециточках или отсчетах для первичного или вторичного направления сканирования от "точки отсчета сканир. области" до "точки отсчета окна". Min значение - 0 и для отсчетов и для дециточек. Max значения следующие: Дециточки | Отсчеты _________________________________|_____________ Первичное напр-е (x) 6118 | 2549 Вторичное напр-е (y) 10078 | 4199 _________________________________|_____________ Эти пределы равны физическим границам сканера. Max граница 8.5 в перичном направлении и 14 во вторичном направлении. Если значение превышает границы, то берется ближайшее граничное значение и возвращается "ошибка параметра". КОМАНДЫ ШИРИНЫ ОКНА Установить ширину окна по X (дециточки) ESC*a#P Установить ширину окна по Y (дециточки) ESC*a#Q Установить ширину окна по X (отсчеты) ESC*f#P Установить ширину окна по Y (отсчеты) ESC*f#Q Запрос ширины окна по X (дециточки) ESC*s#10321? Запрос ширины окна по Y (дециточки) ESC*a#10322? Запрос ширины окна по X (отсчеты) ESC*f#10481? Запрос ширины окна по Y (отсчеты) ESC*f#10482? Устанавливается размер окна по первичн. и вторичн. направлениям в дециточках и отсчетах. Границы окна следующие: Min Max дециточки отсчеты | дециточки отсчеты _______________________________________|_______________________ Первичное напр-е 3 1 | 6120 2550 Вторичное напр-е 3 1 | 10080 4220 _______________________________________|________________________ Min граница позволяет читать по крайней мере 1 отсчет, а max граница - это 8.5 по X и 14 по Y. УСТАНОВКА КОМАНД ТИПА ДАННЫХ Эти комады контролируют тип возвращаемых сканером данных. Установить тип выходных данных ESC*A#T Это тип данных, связанных с текущим окном. Значения параметра следующие: 0 - порогизированные данные (умолч. 0) 1 - белые 2 - черные 3 - растрированные 4 - серая шкала Установить карту тона ESC*u#K Установить растровую матрицу ESC*a#J Позволяет выбрать растровую матрицу, связанную с текущим окном. Растр. матрицы зафиксированы в ROM (постоянной памяти). Каждая растр. матрица имеет связанный с ней ID - номер, от 0 до 3. Поддерживаются следующие номера: -1 - определена пользователем (только для Scanjet+) 0 : 8*8 F 1 : 4*4 F Умолч: 0 2 : 4*4 B 3 : 4*4 VL Установить ширину данных ESC*a#G Выбирает формат, в которм данные будут посланы в машину. 8 : один 8бит. отсчет на байт 4 : два 4-х бит. отсчета на байт 1 : 8 однобитовых отсчета на байт Каждый раз при выборе параметра типа данных, параметр ширины данных сбрасывается значением по умолчанию ширны данных для этого типа данных. Заметим, что умолчание для Scanjet+ это эмуляция Scanjet. Тип 4-х битовых порогизированных данных - это умолчание, так же как Scanjet. Установить тип "нижней нагрузки" ESC*a#D (только для Scanjet+) Поле определяет какой вид "нижней нагрузки" собирается исполнять. Поддерживаются след. значения: Знач. | Данные к "нижн.загр." | Байтов в "нижн.загр." | Формат д-х ______|_______________________|________________________|_____________ 0 | растр. матрица | 64 | 8*8 рядами 1 | тоновая карта сер.шк.| 256 | 0,1,2...255 ______|_______________________|________________________|_____________ Установить обратное изображение ESC*a#I Двоичные данные "нижней нагрузки" ESC*a#W (только для Scanjet+) Это основная команда, чтобы послать двоичные данные в сканер, с параметром, определяющим как много следует байтов данных. Ожидаемое кол-во байтов определяется командой "Выбор типа "нижней загрузки". Если кол-во посланных байтов отличается от кол-ва ожидаемых данных, тогда выдается "ОШИБКА ПАРАМЕТРА". Если получен любой групповой символ, отличный от "а", тогда вырабатывается "ОШИБКА НЕРАСПОЗНАВАЕМОЙ КОМАНДЫ". Во всяком другом случае, когда бы ни была получена ESC - последовательность с "W", последовательность продолжается до тех пор, пока не получен завершающий символ и следующие в "#" символов обрабатываются как двоичные данные, соответственно принимаемые, если это правильная команда и выбрасываемые, если это неправильная команда. Двоичные данные "верхней загрузки" ESC*s#U (только для Scanjet+) Требует, чтобы ныне выбранная растровая матрица (#=0) или ныне выбранная тоновая карта нижней загрузки (#=1) будет загружена в машину-хозяин. Если требуемые данные еще не загружены (низ), или если определенное значение больше 1, тогда возвращается 0-ответ. Данные загружаются (вверх) в следующем формате, где '#'- номер требуемого параметра и данные- это данные уже загруженные (вверх): ответ растр. матрицы: ESC*s0t64W{данные} ответ тоновой карты : ESC*s1t256W{данные} нулевой ответ : ESC*s#tN Зеркальное изображение: ESC*a#M (только Scanjet+) Включает и выключает "зеркальное изображение". Когда "зерк. изоб." включено, порядок данных перевернут в первичном направлении сканирования. "0" в значении поля выключает хар-ку, "1"- включает. По умолчанию выключена. КОМАНДЫ ЗАПРОСА ТИПА ДАННЫХ Запрос типа выходных данных ESC*s10325? ESC*s10325R требует у Scanjet-a выдать значение типа выходных данных. Scanjet возвращает ESC*10325p#V, где #-ASCII-пред-е значения ответа. Запрос тоновой карты ESC*s10956? Запрос растровой матрицы ESC*s10315? ESC*315R требует Scanjet вернуть значение растровой матрицы. ESC*s10315p#V- ответ, где #-ASCII-пре-е значения ответа. Запрос ширины данных ESC*s10312? (Scanjet+) Запрос типа "нижней загрузки" ESC*10309? (Scanjet+) Запрос двоичных данных ESC*s10328? (Scanjet+) Запрос зеркального изображения ESC*s10318? (Scanjet+) Запрос обратного изображения ESC*s10314? (Scanjet+) Обратное изображение инвертирует смысл данных из текущего окна. Значение "0" заставляет Scanjet вернуть более высокие значения данных для более высоких оптических плотностей. Значение "1"- вызывает инвертирование данных. Умолч. 0. Пример: ESC*a1I требует инвертировать данные в последующем сканировании. ESC*s10314R запрашивает у Scanjet было ли изобр-е инвертировано. КОМАНДЫ УРОВНЯ ИНТЕНСИВНОСТИ Установить уровень интенсивности ESC*a#L Установка этого параметра позволяет "осветлить" или "затемнить" сканируемое изображение. Значение поля в целых величинах колеблется: от -1 до +1 для Scanjet от -127 до +127 для Scanjet+ Осуществление Scanjet (HP9190): "0"- уровень по умолчанию, это нормальный уровень. "1"- увеличивает осветление "-1"- увеличивает затемнение Когда уровень интенсивности установлен, будут возвращаться след. значения в зависимости от текущей интенсивности: Темный = -1 Результирующее изобр. темнее Нормальное = 0 ------//----//----//- нормальной светлости Светлый = 1 ------//----//----//- светлее Эта команда работает только в Порогизированных и растрированных видах. она не действует ни для серой шкалы, ни для белых, ни для черных данных. Осуществление Scanjet+ (HP9195) По умолчанию уровень интенсивности - "0" (обычная). Полож. значение выражается в более светлом изобр-ии и отриц. знач. - в более темном. На Растрированные и серой шкалы данные воздействуют, когда исп-ся тоновая карта 0. На Порогизированные данные воздей- ствуют, когда "авто-фон" выключен, и исп-ся тоновая карта 0. (См. секцию порогизир. данных). Пример: ESC*a-1L устанавливает уровень инт-ти к темному для Scanjet (HP9190). Установить уровень контрастности ESC*a#K (только для Scanjet+) Управляет разницей между светлым и темным на сканируемом изобр-ии. Значение полей может иметь уровень от -127 до +127 для полных 255 контрастных уровней. По умолч.: контрастный уровень "0". Положительное значение выражается в большей разнице и отрицательное значение - в меньшей разнице. Эта команда действует на растр. и серой шкалы данные, когда исп-ся тоновая карта 0. ESC*a120K устанавливает уровень контрастности 120. Установить автоматический контроль фона ESC*a#B Установка авт. контроля фона включает или выключает хар-ку авт. контроля фона. По умолч.: выкл. Эта команда работает только в режиме Порогизированных данных. Она не действует в других видах. Пример: ESC*a1B устанавливает авт. контроль фона включением. Запрос уровня интенсивности ESC*s10317? Scahjet всегда возвращает ESC*s10317p-1V и ESC*s10317p1V для нижнего и верхнего запросов уровней инт-ти. ESC*s10317R требует вернуть значение уровня инт-ти. Запрос уровня контрастности ESC*s10316 (только для Scanjet+) Запрос автоматического контроля фона ESC*s10307? Scanjet возвращает ESC*s10307p#V на запрос об авт. контроле фона, где '#' - ASCII - представление значения ответа. КОМАНДЫ УПРАВЛЕНИЯ СКАНЕРОМ Сканировать окно ESC*f0S Эта ESC - последовательность заставляет устр-во сканировать окно и возвращает данные сканирования. Если окно выходит за границы сканируемой области, то будут возвращ-ся в компьютер только те данные, которые лежат на пересечении окна и сканир. области. Если пересечение окна и сканир. области пусто, будет выработана ошибка "НЕВЕРНОЕ ОКНО". Формат возвращаемых данных описан в гл. 4. ДОБАВОЧНЫЕ КОМАНДЫ ЗАПРОСА Эти команды позволяют программе найти необх. инф-ию о сканировании до начала сканирования. Программа должна исп-ть команды и не вычислять значение от известных пар-ров, чтобы гарантироваться от ошибок. Форматы команд "Запрос настоящего значения", "Запрос min значения", "Запрос max значения" могут исп-ся, чтобы получить инф-ю о том, какова в данный момент конфигурация сканера. ФОРМАТ КОМАНД ЗАПРОСОВ Команда "Запрос настоящего значения" исп-ся, чтобы считать пар-ры сканера, которые были установлены различными ESC - последовательностями языка упр-я сканером. "Запрос min значения" и "Запрос max значения" исп-ся, чтобы определить разрешенные границы пар-ра. Все команды запроса пар-ров SCL выдаются в форме: "ESC*s#?" , где '#' - ASCII - представление значения, '?' - показывает тип запрса, который сделан. Типы запросов следующие: L - min разрешенное значение H - max ---//---//---//----- R - текущая установка пар-ра Запрос настоящего значения ESC*s#R Эта команда используется, чтобы считать настоящее значение параметра, которое могло быть установлено различными SCL-командами. Номер запроса размещается в поле значения, чтобы указать, какой параметр требуется. Этот номер запроса для данного параметра есть функция от символов в команде, используемой, чтобы установить параметр. Номер запроса = (P-'!'+1)*1024 + (G-''+1)*32 + (T-'@'+1), где ESC-посл-ть, которая устанавливает пар-р, находится в форме ESC P G # T. Если значение поля команды запроса не распознается, будет возвращен 0-ответ, но ошибка не будет выработана. Если компьютер посылает сканеру какую-нибудь команду после команды запроса перед чтением ответа на запрос, ответ будет потерян. Запрос min значения ESC*s#L Эта команда идентична команде "Запрос наст.-значения" кроме того, что она возвращает min разрешенное значение для отдельного параметра. Если параметр - это фактор масштабирования, то min разрешенное значение вычисляется на основании текущих положений соответствующих параметров SCL. Запрос max значения ESC*s#H Эта команда идентична команде "Запрос наст. значения" за исключением того, что возвращается max разрешенное значение для указанного параметра. Если параметр - масштаб, то max разреш. значение вычисляется на основании текущей установки соот. SCL-параметров. Запрос параметра устройства ESC*s#E (только для Scanjet+) Эта команда используется, чтобы определить характеристики сканера или текущего окна. Значение поля определяет запрашиваемую хар-ку. Запрос отсчетов на строку сканирования ESC*s1024E Эта команда может использоваться, чтобы определить число отсчетов на строку сканирования, которое будет возвращено, если затребовано сканиро- вание. Число отсчетов на строку сканирования - это функция от разрешения сканирования, масштаба по X и порции ширины по X, которая лежит в пределах сканируемой области. Если масшьаб по X выходит за установленные рамки, используется min или max масштаб по X и выдается "ОШИБКА-МАСШТАБА". Сканер возвращает ESC*s1024d#V, где '#' - ASCII-представление значения ответа. Запрос отсчетов на дюйм ESC*s1028E Scanjet всегда возвращает 300. Запрос байтов на строку сканирования ESC*s1025E Эта команда должна использоваться, чтобы определить число байтов используемых, чтобы представить строку сканирования, если затребовано сканирование. Строка сканирования должна заканчиваться на границе байта, так что возможно, что последний байт будет содержать несколько допол- няющих битов. Число байтов на строку сканирования - это функция от разре- шения сканирования, масштаба в первичном направлении сканирования, порции ширины по X, которая лежит внутри сканируемой области, и числа битов на отсчет. Эта команда выдает "ОШИБКА-МАСШТАБА", если значение масштаба будет отличаться от требуемого. Отношение между разрешением сканирования и масштабом может вызвать такую ситуацию. См. приложение B для допол. информации. Scanjet возвращает ESC*s1025d#V, где '#' - ASCII-представление значения ответа. Запрос связи с подавателем документов (ADF) ESC*s24E "1" возвращается, если "Автомат. подаватель документа" связан со ска- нером, и "0" - если нет. Если сканер имеет возможность "Автомат. подават. докум." будет использоваться только ADF, если ADF готов, когда получена команда сканирования. Запрос возможности подавателя документа ESC*s24E Scanjet отвечает "1", если установлена функция ADF, и "0" если не установлена. "Установлена" означает, что ADF-устройство в исходной позиции и включено в сеть. Эта команда не проверяет бумагу в ADF. Запрос готовности подавателя докуцмента ESC*s1027E Эта ESC-последовательность может использоваться, чтобы определить готов ли ADF к сканированию. Если возвращается "0", то ADF не готов. "1" возвращается только при следующих условиях: 1. Устройство ADF связано со сканером. 2. Бумага присутствует в во входном поддоне ADF. 3. Крышка ADF закрыта. 4. Стек ошибок не содержит ошибку "БУМАГУ ЗАКЛИНИЛО". 5. ADF в настоящий момент чуствует заклинивание бумаги. Запрос числа линий сканирования ESC*s1026E Эта команда может использоваться, чтобы определить число линий сканирования, которые будут возвращены, когда будет затребован сканер. Число линий сканирования это функция от разрешения сканирования, масштаба во вторичном направлении сканирования и порции Y-ширины, лежащей внутри области сканирования. Эта команда выдает "ОШИбКА- МАСШТАбА", если используется значение масштаба, отличное от требуемого. Отношение между разрешением сканирования и масштабом может вызывать эту ситуацию. См. приложение В для дополнит. информации. Эта команда выдаст "НЕВЕРНОЕ ОКНО", если окно определено вне области сканирования. Точное число байтов, которые будут переданы сканером, можно определить, затребовав число байтов на линию сканарования и число линий сканирования, перемножив эти два числа. Scanjet возвращает ESC*s1026d#V, где '#'- пред-ние значения ответа.