Russian Qt Forum
Сентябрь 22, 2024, 09:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как вывести принтер из спящего режима?  (Прочитано 13210 раз)
Maverick
Гость
« : Апрель 08, 2010, 15:41 »

Здравствуйте!
При реализации функций печати текстового редактора у меня возникла следующая проблема. Перед выводом текста на принтер проверяю состояние принтера вот таким образом:

 
Код:
int check_printer()
{
int fd, res;
unsigned char status = 0;

QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));

fd = open("/dev/lp0", O_RDONLY);
if (fd < 0)
{
QApplication::restoreOverrideCursor();
return PRINTER_OFFLINE;
}

res = ::ioctl(fd, LPGETSTATUS, &status);
sleep(1);
::close(fd);

QApplication::restoreOverrideCursor();

// out of paper
if (status & LP_POUTPA)
return PAPER_EMPTY;

if (!(status & LP_PERRORP))
return PRINTER_ERR;

if (!(status & LP_PSELECD))
return PRINTER_OFFLINE;

if (status & LP_PBUSY)
return PRINTER_BUSY;

return PRINTER_OK;
}

При этом программа нормально отслеживает включен принтер или нет и наличие бумаги в лотке принтера. Но все это лишь до того момента, пока принтер не находится  в режиме энергосбережения. Когда принтер засыпает, программа не получает состояния принтера и выводит статус "принтер не отвечает". Если не проверять состояние принтера, документ выводится нормально. Но в таком случае нельзя отследить наличие бумаги и включение принтера. Можно ли решить эту проблему? Каким образом можно отследить "спящий" принтер и "разбудить" его перед печатью? И если И если можно то каким образом? Разработка ведется под Linux с ядром 2.6 в Qt версии 4.4.3. Заранее спасибо.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Апрель 08, 2010, 16:33 »

Смотреть документацию по конкретному принтеру.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #2 : Апрель 08, 2010, 22:59 »

Как вывести принтер из спящего режима?
Код:
 QSound::play("mysounds/bells.wav"); 
Не подойдет? Улыбающийся
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
altai
Гость
« Ответ #3 : Сентябрь 04, 2010, 18:02 »

хм, а не проще отправить на печать а cups (или аналог, используемый вами) сам добавит в очередь печати и разбудит...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.2 секунд. Запросов: 22.