max_28 Опубликовано 16 июля, 2007 Жалоба Опубликовано 16 июля, 2007 Принтер подключается к lpt порту, и используется только одна модель Epson LX 300+. Т.е универсальное решение не обязательно. Пишу в принтер ф-цией write() состояние принтера (включен/выключен, есть ли бумага) определяю путем прямого чтения из порта. а можно (и как) определить когда принтер закончил печать? т.е можно ли узнать когда опустеет буффер принтера? Цитата
AccessD Опубликовано 16 июля, 2007 Жалоба Опубликовано 16 июля, 2007 может, есть регистр, отвечающий за это? что-то должно быть, отвечающее за состояние готовности. Цитата
max_28 Опубликовано 16 июля, 2007 Автор Жалоба Опубликовано 16 июля, 2007 ioperm(0x378,2,1); usleep(100000); st=inb(0x378+1); ioperm(0x378,2,0); st покажет состояние принтера (включен/выключен/ошибка), есть ли в принтере бумага. А вот состояние печати (есть ли в буффере принтера данные для печати) от туда не узнать. Значение st не изменяется при наличии/отсутствии в буффере принтера данных. А от куда узнать есть ли чтото в принтере я так и не нашел . Цитата
AccessD Опубликовано 16 июля, 2007 Жалоба Опубликовано 16 июля, 2007 http://phys.csu.ru/maelab/_frames/_lpt_1.htm здесь посмотрите, может что найдёте. Цитата
AccessD Опубликовано 16 июля, 2007 Жалоба Опубликовано 16 июля, 2007 вот ещё http://www.sibsutis.ru/~mavr/PC/LPT/1.HTM Цитата: Режимы и регистры ЕСР - порта..... ...... Режим 110 (Test Mode) предназначен для тестирования взаимодействия FIFO и прерываний. Данные могут передаваться в/из регистра TFIFO с помощью DMA или программным способом. На внешний интерфейс обмен не воздействует. Адаптер отрабатывает операции вхолостую на максимальной скорости интерфейса (как будто сигналы квитирования приходят без задержек). Адаптер следит за состоянием буфера и по мере необходимости вырабатывает сигналы запроса прерывания. Таким образом программа может определить максимальную пропускную способность канала. Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.