Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> готовность принтера, как узнать? 
:(
    Опции темы
vii
Дата 28.11.2006, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 28.11.2006

Репутация: нет
Всего: нет



Печатаю на принтер таким способом

fstream lpt("/dev/lp0");
lpt << ...

если в принтере нет бумаги, то программа вешается,
как узнать готов ли принтер? smile 

Спасибо.
PM MAIL   Вверх
MAKCim
Дата 28.11.2006, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



select на дескрипторе открытого файла принтера
скорее всего поможет


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
vii
Дата 28.11.2006, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 28.11.2006

Репутация: нет
Всего: нет



спасибо, попробую
PM MAIL   Вверх
bilbobagginz
Дата 28.11.2006, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 4
Всего: 317



спулер обычно штука тупая и ненадёжная, поэтому придумали lpd, lpstat и потом CUPS.
если принтер работает через сервер cups, то работай через cups API. там и статус можно спросить, и сколько принтеров и т.д.

пока.


--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
vii
Дата 29.11.2006, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 28.11.2006

Репутация: нет
Всего: нет



merci
PM MAIL   Вверх
vii
Дата 30.11.2006, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 28.11.2006

Репутация: нет
Всего: нет



может кому пригодится

cups штука хорошая, но требует дополнительных усилий при распространении, а у меня простейший случай посимвольного вывода на матричный принтер.

select не помог, но натолкнул на мысль:

int f = open("/dev/lp0", O_WRONLY | O_NONBLOCK);
int c = write(f, "\r", 1);
if (c < 1) принтер не готов
PM MAIL   Вверх
MAKCim
Дата 30.11.2006, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата

select не помог

как использовал?
просто с select
ты будешь записывать в файл принтера только тогда, когда write над дескриптором не будет блокироваться
в твоем коде если принтер готов, произойдет нежелательная запись одного байта


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
vii
Дата 1.12.2006, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 28.11.2006

Репутация: нет
Всего: нет



этот байт всего лишь возврат каретки, что не страшно перед печатью документа

select использовал так:

    int f = open ("/dev/lp0", O_WRONLY);
    struct timeval timev;
    timev.tv_sec = 3;
    timev.tv_usec = 0;
    fd_set w;
    FD_ZERO (&w);
    FD_SET (f, &w);
    int n = select( f + 1, NULL, &w, NULL, &timev); 

select возвращает значение больше нуля сразу же
я в чём-то не прав?
PM MAIL   Вверх
bilbobagginz
Дата 1.12.2006, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 4
Всего: 317



Цитата

cups штука хорошая, но требует дополнительных усилий при распространении, а у меня простейший случай посимвольного вывода на матричный принтер.

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





--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
MAKCim
Дата 1.12.2006, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



vii
ну да, странно получается
проверил на своем принтере, реально не работает  smile 
будем разбираться


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
vii
Дата 1.12.2006, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 28.11.2006

Репутация: нет
Всего: нет



Цитата(bilbobagginz @  1.12.2006,  13:32 Найти цитируемый пост)
под какие платформы пишем ?


МСВС

Цитата(bilbobagginz @  1.12.2006,  13:32 Найти цитируемый пост)
матричные принтеры выйдут из использования


там ещё долго не выйдут

да и лазерных, печатающих на рулоны, вроде не изобрели smile 
PM MAIL   Вверх
Skyvet
Дата 9.12.2006, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 9.12.2006

Репутация: нет
Всего: нет



vii  знаю я такой принтер smile   есть  предложение опрашивать регистр состояния  там вся инфа о сотоянии 
принтера находится , если тема актуальна раздобуду.
Если работаешь  рядом  с ТЦ  "Буденовский"   спроси  там Женька  он  поможет smile
PM MAIL   Вверх
ViLena
Дата 16.3.2009, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 23.10.2008

Репутация: нет
Всего: нет



Цитата(vii @ 30.11.2006,  18:04)
может кому пригодится

int f = open("/dev/lp0", O_WRONLY | O_NONBLOCK);
int c = write(f, "\r", 1);
if (c < 1) принтер не готов

спасибо, действительно пригодилось smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0826 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.