2014-12-03 8 views
2

Есть ли способ определить, работает ли принтер в режиме libcups или Qt?cups: Как определить, физически ли подключен текущий/стандартный принтер и включен ли он?

Я работаю над программой, которая требует принтера, и использует оба libcups и QPrinter

Я хотел бы дать пользователю сообщение об ошибке хорошего, если текущий принтер/по умолчанию не подключен.

Прямо сейчас, если принтер по умолчанию выключен (или не подключен),

cups_dest_s printers = NULL; 
int printerCount = cupsGetDests(&printers); 

этот сбой:

*** glibc detected *** /home/me/myApp/myApp: double free or corruption (out): 0x088501e0 *** 

Как я могу определить, если текущий принтер/по умолчанию физически подключен и включился?

ответ

1

Не существует точного способа определения состояния принтера, поскольку некоторые принтеры не имеют возможности сообщать свое состояние операционной системе.

Тем не менее, вы можете получить текущее состояние принтера по:

PrinterState QPrinter::printerState() const 

который возвращает Idle, Active, Aborted и Error. Вы можете проверить, является ли состояние принтера Active или Idle. Но нет гарантии, что ваш принтер сообщит, что он правильно.

+0

Я заметил, что для многих принтеров статус «Свободный» ... Но для настраиваемого принтера я должен использовать предпочтительно, когда физический принтер выключен, в свойствах печати я вижу «Idle - Connected to printer». (это последнее состояние, которое я видел, я думаю). Я попробовал распечатать тестовую страницу из свойств принтера и получил «Обработка - на данный момент принтер недоступен». .... После включения этого состояния состояние не изменилось, пока я не отправил тестовую страницу еще раз. Кажется, он помнит свое последнее состояние, поэтому мне нужно было бы выполнить какое-то действие, чтобы проверить его реальное состояние ..... – Thalia

+0

Принимая это, но мне нужно будет найти способ отправить какой-то «пинг» на принтер, прежде чем я проверьте состояние, потому что состояние обычно сообщается как о последнем действии ... и, вероятно, принтер был выключен с тех пор. – Thalia