Название: очередь печати и как с ней быть..:-) Отправлено: zoro86 от Сентябрь 15, 2010, 10:02 Тут такое дело... в Терминальной программе(для АСО)
У меня есть принтер CUSTOM-VKP80, он у меня установлен как Windows принтер через usb порт.. вот так я отправляю на печать Код: bool MainWindow::go_to_print(const QString &str,bool preview) все работает нормально и печатает... хотел сделать следующее ... перед отправкой на печать проверяю есть ли бумага... Код: int MainWindow::get_status_from_printer() тут он всегда возвращает 0... чтобы не случилось поэтому я отправляю всегда на печать чек от каждого платежа, соответсвенно если кончается бумага то очередь накапливается большая... ВОТ ПЕРВЫЙ ВОПРОС КАК УБИВАТЬ ДАННУЮ ОЧЕРЕДЬ...?? в свойствах принтера нашел печать на прамую в принтер...(тоесть не в очередь), опять таки при отсутствии бумаги прога при отправки на печать полностью зависает на несколько минут... КАК БЫТЬ И ЧТО Я ДЕЛАЮ НЕ ТАК..?? Название: Re: очередь печати и как с ней быть..:-) Отправлено: Denjs от Сентябрь 15, 2010, 11:46 Имхо - первое что вы делаете не так - это работаете с принтером через виндоус драйвера. А остальное - следствие этой ошибки.
С принтерами чеков, надо пользоваться не виндоус-драйверами, а специализированными подсистемами печати на них ориентированными. Драйверами или т.п. Атолл например выпускает таковые, или смотрите ко мне в подпись))) Другой вариант - работать с принтером напрямую (например через ком-порт, который для USB - виртуальный). Язык управления принтером - ESC/POS, описан много где. Компоненты для QT для работы с ком-портом тоже есть. Стандартные вынь-дравера печати вам много чего не дадут в отношении промышленного оборудования. Смотрите ко мне в подпись, если что обращайтесь, по работе с принтером напрямую - мог вам помочь. __________________ если же хотите ковыряться с очередью печати - то думаю тут вам только доблестное изучение WinAPI поможет. Название: Re: очередь печати и как с ней быть..:-) Отправлено: zoro86 от Сентябрь 15, 2010, 12:09 дело в том что мне пока для Windows надо...
И комплектация терминалов тоже разная... некоторые приходят с COM-кабелями а некоторые с USB поэтому стоит задача чтобы работать можно было с любыми... У меня у же есть около 4-ч протоколов для работы с принтерами... они работают нормально... и статусы получают и так далее.. но вот с драйвером виндовс не могу разобраться... вот по поводу WinApi можете сылочку дать... или идейку еще какую нить.. Название: Re: очередь печати и как с ней быть..:-) Отправлено: Denjs от Сентябрь 15, 2010, 13:40 И комплектация терминалов тоже разная... некоторые приходят с COM-кабелями а некоторые с USB поэтому стоит задача чтобы работать можно было с любыми... USB-шные принтеры все ранво реализуют профиль последовательного устройства который подхватывается драйвером виртуального ком-порта для виндоус (если принтер нормальный конечно... что могут придумать china-производители я боюсь представить). В рамках данного виртуального компорта обмен не должен отличаться от обмена с устройством которое подключено на физический последовательный порт.Если вы решитесь использовать прямую работу с принтером - вам придется отказаться от виндоус-драйвера. потому что эти 2 технологии не совместимы - виндоус драйвер захватывает ком-порт намертво, и вы не сможете открыть его на запись из своей программы. В случае отказа от вынь дравера - вам также придется менять технологии подготовки изображения. Никаких QPrinter и т.п. : вы руками готовите последовательность команд(при прямой работе с портом), или готовите html-строку с текстом (в случае моего драйвера OTPD (http://developer.berlios.de/projects/otpd/)) или руками вызываете API-функции библиотеки-драйвера (в случае АТОЛ: Драйвер принтеров чеков (http://www.atol.ru/products/programs/special/driver/driver-chek/)) Признаться работать с моим драйвером в промышленном режиме я бы пока не рекомендовал. Если только с некоторой отладкой тестированием - если вы в Москве - я мог помочь лично. Если хотите поиграться с моими драйверами - лучше скачивайте все в комлекте с сайта QDroid - т.е. сорсы QDroid - там OTPD поновее будет. Также я могу помочь вам с ESC/POS-последовательностями. С WinAPI я вам помочь не смогу. Название: Re: очередь печати и как с ней быть..:-) Отправлено: zoro86 от Сентябрь 16, 2010, 06:17 Понятно спс большущее... буду копать...
Вот вам сылочка на терминальный проект под версией 2 от кибер-плата... у них там все принтаки перечислены может разберетесь... http://dev.cyberplat.com/redmine/repositories/show/pt (http://dev.cyberplat.com/redmine/repositories/show/pt) лично я писал с нуля... использовал библиотеку qserialdevice которую любезно предоставил и направил на истенный путь kuzulis... Название: Re: очередь печати и как с ней быть..:-) Отправлено: Denjs от Сентябрь 16, 2010, 11:24 гм... так я не понял. вы сейчас с помощью QPrinter напечать отправляете через виндовые драйвера, или руками через qserialdevice ?
первый пост не согласуется с последним... за ссылку спасибо. посмотрим на досуге. Название: Re: очередь печати и как с ней быть..:-) Отправлено: zoro86 от Сентябрь 17, 2010, 13:43 Тут такое дела что привозят терминалы как с принтерами подключенные через СОМ-порт так и с принтерами подключенными через USB.
С принтерами которые идут через СОМ я разобрался ... накатал для каждого отдельный класс и так далее... сделал определялку... в зависимости от найденного принтера подгружает соответствующий класс для работы с данным принтером... Осталось разобраться с теми принтерами которые приходят подключенными через USB... вот бы эти очереди очищать научится.. как надо будет... ;) Название: Re: очередь печати и как с ней быть..:-) Отправлено: Denjs от Сентябрь 17, 2010, 16:42 С принтерами которые идут через СОМ я разобрался ... накатал для каждого отдельный класс и так далее... сделал определялку... Попробуйте поставить драйвер-виртуального ком-порта для ваших принтеров. Оно должно быть на сайте производителя или у поставщика где-нибудь в разделе драйверов.Осталось разобраться с теми принтерами которые приходят подключенными через USB... Ещё подобное должно поставляться в составе атоловских драйверов принтеров чеков. Потом на него натаскивайте ваши классы. Название: Re: очередь печати и как с ней быть..:-) Отправлено: maxxant от Сентябрь 28, 2010, 18:35 Цитировать Код: int MainWindow::get_status_from_printer() тут он всегда возвращает 0... чтобы не случилось если посмотреть в исходники Qt, то можно увидеть, что printerState() имеет мало общего с настоящим состоянием принтера. Это состояние меняется внутри самой функции textBrowser->print(&printer) и, видимо, предназначено для собственных реализаций подобных функций. У нас состояние принтера и управление очередью печати реализуется через свои платформо-зависимые костыли. Название: Re: очередь печати и как с ней быть..:-) Отправлено: Magvaj от Сентябрь 29, 2010, 11:12 Попробуйте поставить драйвер-виртуального ком-порта для ваших принтеров. Оно должно быть на сайте производителя или у поставщика где-нибудь в разделе драйверов. Ещё подобное должно поставляться в составе атоловских драйверов принтеров чеков. Потом на него натаскивайте ваши классы. Для принтеров Custom VKP, StarTUP и Zebra драйверов виртуального порта нет. И сесли интерфейс COM отсутствует- только через QPrinter и стандартные дрова. Название: Re: очередь печати и как с ней быть..:-) Отправлено: Denjs от Сентябрь 29, 2010, 12:49 Для принтеров Custom VKP, StarTUP и Zebra драйверов виртуального порта нет. И сесли интерфейс COM отсутствует- только через QPrinter и стандартные дрова. ... гы... просто интересно - а если их в линуксу подключить - стандартный драйвер ком-профиля usb-порта узнает их? кабельки там разные узнает на ура)Название: Re: очередь печати и как с ней быть..:-) Отправлено: Magvaj от Сентябрь 30, 2010, 07:45 гы... просто интересно - а если их в линуксу подключить - стандартный драйвер ком-профиля usb-порта узнает их? кабельки там разные узнает на ура) для линухи пользуюсь стандартными COM или LPT. Если принтер USB, то работают только принтера с мостом COM<->USB. Для некоторых принтеров есть драйверы, но работают они, прамо таки сказать, не торт. |