драйвера для промышленных принтеров этикеток и чеков ((проект открытых драйверов))

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

так... вы что именно собираете? в счетчике скачиваний по адресу напротив QDroid_src.rev258.2011.06.07.zip по прежнему стоит ноль.
под вендой собираю с помощью QtSDK 4.7.2, mingw говорит что его gcc - 4.4.0. чего-то виндо-специфичного навроде не пользую (окромя как в компонентах OTPD)
сейчас попробую собрать под линуксом...

и на всякий случай - что бы гарантированно вычистить все каталоги сборки от всех мусорных файлов - в корне лежит скрипт clear_all.sh | clear_all.bat - они пробегаются по всех /build каталогам и все вычищают, включая лишние make и moc файлы... может быть я сглупил и включил где-то под версионный контроль moc-файл... или .o...
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

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

например надо местами заменять "#include <simpleBot.h>" на "#include <simplebot.h>" ))) ну и другое по мелочи.
как сделаю сборку под линуксом - обновлю.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

Теперь собирается под линуксом. Единственное - исключил из дефолтного проекта расширение t_table для работы с БД (оно требует QD4ORM который я пока не могу заопенсорсить полностью)
QDroid.sources / 2011.06.09_rev262 / QDroid_src.rev262.2011.06.09.zip
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
prof
Сообщения: 119
ОС: gentoo

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение prof »

Первая засада, в версии qt4, что идёт в squeeze (4.6.3) у QWebSettings нет LocalContentCanAccessFileUrls вообще.

Пришлось закомментировать в t_webViewForm.cpp строку 170

Код: Выделить всё

cWPage->settings()->setAttribute(QWebSettings::LocalContentCanAccessFileUrls,true);
т.к. согласно документации, по-умолчанию там всё-равно true.
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

Да, возможно. По идее - нужен Qt4.7 потому что я на нем делал и не следил за обратной совместимостью.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
prof
Сообщения: 119
ОС: gentoo

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение prof »

Вот ещё вопросы. Что относится к чему.
Почему это не в QDroid_Bot_Hive?
libqdlib_otpdnode.so.1.0.0
libqdlib_returnSyncObject.so.1.0.0
libqdlib_otpdlinks.so.1.0.0

Что должно становиться /usr/bin/qdroid, libqdroid.app.bin или qdroid.shell_v1.5.bin?
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

Почему это не в QDroid_Bot_Hive?
libqdlib_otpdnode.so.1.0.0
libqdlib_returnSyncObject.so.1.0.0
libqdlib_otpdlinks.so.1.0.0

ну... в некотором смысле это разные проекты...
QDroid_Bot_Hive - это собственный "улей" ботов, общего назначения.
а otpdnode, returnSyncObject, otpdlinks - это "приблудные создания" из соседнего проекта, и с узко специализированным назначением. ну как бы так.


otpdnode - узел печати OTPD, не дает себя настраивать или расширять.
returnSyncObject - вам не нужен. Это мысль на будущее сделать внутрипрограммный механизм подписок на внутрипрограммные сервисы - когда через сигнал слоты объект запрашивает у внешнего мира сервисы, но кто именно их будет обрабатывать - не знает. returnSyncObject - это ключевой класс для подобной технологии, который позволяет возвращать в источник обработанные данные. если хотите - то общая идея и обсуждение области применение - тут
otpdlinks - предоставляет в QDroid набор классов для связи с оборудованием. Классы тоже из проекта OTPD.

Что должно становиться в /usr/bin/qdroid, libqdroid.app.bin или qdroid.shell_v1.5.bin?


/usr/bin/qdroid - это ссылка на qdroid.shell_v1.5.bin.
qdroid.shell_v1.5.bin - это среда исполнения QDroid скриптов из командной строки.
Кстати если зотите запустить на отладку скрипт - используйте ключ "--debug"

Код: Выделить всё

qdroid.shell_v1.5.bin --debug myQDroidScript.qs

Код: Выделить всё

/usr/bin/qdroid --debug myQDroidScript.qs

а вот все оргументы переданные после имени скрипта - уже будут отправлены скрипту как параметры запуска и их можно будет проанализировать.
Прмеров в поставке кажется нет... не помню - если надо, могу найти/сдеалать.

а libqdroid.app.bin - это просто пример использования libqdroid.so
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
prof
Сообщения: 119
ОС: gentoo

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение prof »

В общем, всё плохо.
Скрипт otpd_print_server.v0.qs был подправлен (досовски окончания строк не давали работать конструкции #!/usr/bin/qdroid):

Код: Выделить всё

        var otpd_ini_file_name="/etc/otpd/otpd_node.ini"; //
        var otpd_log_file_name="/var/log/otpd_node.log"; //
В самом otpd_node.ini всё относящееся к virtual было закомментировано, direction.printermodule= и direction.linkmodule= было настроено на pp5200 и serial соответственно. Но работать это всё отказывается, запуская virtual в любом случае. Соответственно из init.d оно не работает, т.к. ей нужен DISPLAY.

Собственно главный вопрос: без иксов оно не будет работать вообще? Или есть возможность это исправить?
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

prof писал(а):
10.07.2011 15:47
В общем, всё плохо.
Скрипт otpd_print_server.v0.qs был подправлен (досовски окончания строк не давали работать конструкции #!/usr/bin/qdroid):
упс... буду выкладывать в файлы с линуксовыми концами строк...
Но работать это всё отказывается, запуская virtual в любом случае.
а что у вас в otpd.ini прописано? прикрепите?что в лог скидывается?
Соответственно из init.d оно не работает, т.к. ей нужен DISPLAY.
Собственно главный вопрос: без иксов оно не будет работать вообще? Или есть возможность это исправить?

работать что-то будет, но смотря что.
Сам по себе QDroid - должен. Он на это затачивался (и у объекта BBot есть метод "bool t_BaseBot::isGuiUsed()").

Другое дело, что ряд расширений/библиотек без графики не будут работать.
В нашем случае - т.к. virtualPrinter собран вместе с другими модулями внутри libqdlib_otpdnode.so - то и весь модуль otpdnode без графики работать не будет.

правильный выход собственно один - делать дальнейшее дробление на подпроекты что бы каждый модуль был в собственной библиотеке.
быстрый выход - сделать вариант otpdnode без virtual-принтера...

т.е. варианты есть. попробую до конца недели что нибудь одно из этого сделать...
Спасибо за отзывы.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
prof
Сообщения: 119
ОС: gentoo

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение prof »

Denjs писал(а):
11.07.2011 17:33
а что у вас в otpd.ini прописано? прикрепите?что в лог скидывается?
Файл приложен, его имя otpd_node.ini, во всяком случае так он описан в otpd_print_server.v0.qs.
В логах ничего нет, т.к. файл /var/log/otpd_node.log не создаётся. Но выхлоп stderr при работе скрипта инициализации я приложил.

Denjs писал(а):
11.07.2011 17:33
т.е. варианты есть. попробую до конца недели что нибудь одно из этого сделать...
Хорошо бы, а то придётся переписывать всё самому...

PS: А как можно средствами qdroid получить имя хоста, проверить наличие файлов в каталоге?
Вложения
tmp.log.gz
(3.4 КБ) 83 скачивания
otpd_node.ini.gz
(499 байт) 94 скачивания
Спасибо сказали:
Аватара пользователя
reskof
Сообщения: 6

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение reskof »

Я не программист - владелец мелкого магазина. Столкнулся с проблемой, которую Вы тут обсуждали. Помогите, пожалуйста.
Есть принтер чеков Gprinter GP-58130IVC с обрезкой ленты. Оригинального линуксового драйвера для него найти не смог. Методом перебора нашел, что работает файл pos58.ppd, но он не поддерживает обрезку ленты. Тоесть печать идет, все отлично, но не режет, точнее даже нет такой опции в настройках.
Решил поиграться в программиста ))) В паре с этим 58-ым идет файл для 80-го, в котором есть опция обрезки - это установочные файлы, которые создают уже нужные драйвера и прочие конфиги. PPD при установке записываются в папку /usr/share/cups/model/pos/. Когда переписываю часть настроек обрезки из 80 в 58 - то эта опция появляется в настройках самого принтера, но самой обрезки так и не происходит. Я так подозреваю что или не тот "текст" настройки или где-то прописаны все возможные команды для принтера и для моего 58-го они не предусмотрены с самого момента установки.
Как это исправить? Где искать? Подходит даже вариант если отправить эту команду через консоль или скрипт во время печати файла PDF? Именно так и происходит у меня печать чека.
На всякий случай вложу файлы, которые использую для установки драйвера принтера.
Спасибо.

P.S. Возможно двигаюсь в правильном направлении: нарыл что можно отправлять на принтер команды из файла с помощью консоли:
lpr -l cutcommand
В файле cutcommand должен лежать код самой команды. Но я пока не понял в каком виде он должен быть.
Например, один из вариантов команды неполной обрезки, исходя из этой инструкции http://www.starmicronics.com/support/mannualfolder/escpos_cm_en.pdf
GS V 49
ASCII GS V 49
Hex. 1D 56 49
Decimal 29 86 49

Что я должен записать в том файле?
Вложения
Linux_Driver.rar
(805.04 КБ) 38 скачиваний
Последний раз редактировалось reskof 30.10.2021 14:44, всего редактировалось 2 раза.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20799
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Bizdelnick »

reskof писал(а):
30.10.2021 07:47
Например, один из вариантов команды неполной обрезки, исходя из этой инструкции http://www.starmicronics.com/support/mannualfolder/escpos_cm_en.pdf
GS V 49
ASCII GS V 49
Hex. 1D 56 49
Decimal 29 86 49
А откуда взяли 49? Там напсано GS V, два байта. echo -n $'\x1dV' > cutcommand
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
reskof
Сообщения: 6

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение reskof »

Bizdelnick писал:
30.10.2021 12:25
А откуда взяли 49? Там напсано GS V, два байта. echo -n $'\x1dV' > cutcommand
Там указан синтаксис GS V m или GS V m n, где m или n может быть разными числами (0, 1, 48, 49, 0-255) в зависимости от возможностей принтера, наверное...
Методом подбора я узнал что мне подходит GS V 1.
Создал файл "cutcommand", где записал HEX-кодами 1D 56 01
Когда я исполняю команду lpr -l cutcommand - принтер режет чек. Все работает.
Единственное что заметил интересное - мне надо было напечатать чек а потом обрезать. Я вначале написал эти 2 команды с разделителем |, но всегда исполнялась вначале обрезка (как более быстрая операция, наверное), а потом уж печать. Независимо от того в каком порядке я ставил эти команды. Я так понимаю что они исполнялись одновременно. Потом я нашел что символы && задают определенный порядок исполнения. Но была слишком длинная пауза между печатью и обрезкой (около 3 секунд). Уж после дочитался что там идет ожидание подтверждения успешности процесса и уж только потом переход ко второму. Видимо это очень длительная операция. Поставил символ & - все пошло гораздо быстрее, потому как там подтверждения успешности ненадо. Закончился один пошел сразу другой.
Последний раз редактировалось reskof 30.10.2021 14:38, всего редактировалось 1 раз.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20799
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Bizdelnick »

reskof писал(а):
30.10.2021 14:35
Там указан синтаксис GS V m или GS V m n, где m или n может быть разными числами (0, 1, 48, 49, 0-255)
Не вижу. Это на какой странице?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
reskof
Сообщения: 6

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение reskof »

Bizdelnick писал:
30.10.2021 14:37
Не вижу. Это на какой странице?
стр. 141-142
Спасибо сказали:
Аватара пользователя
reskof
Сообщения: 6

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение reskof »

reskof писал(а):
30.10.2021 14:35
Создал файл "cutcommand", где записал HEX-кодами 1D 56 01
Когда я исполняю команду lpr -l cutcommand - принтер режет чек. Все работает.
Сразу попутно вопрос - а я могу эти байты отправить непосредственно из консоли на принтер? Ну что-то типа такого варианта:
lpr -l "1D 56 01"
Или такое невозможно из консоли?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20799
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Bizdelnick »

reskof писал(а):
30.10.2021 14:55
Сразу попутно вопрос - а я могу эти байты отправить непосредственно из консоли на принтер?
echo -n $'\x1dV\x01' | lpr -l (работает в bash, ksh и zsh, но в других оболочках может не работать).
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
reskof
Сообщения: 6

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение reskof »

reskof писал(а):
30.10.2021 14:35
Bizdelnick писал:
30.10.2021 12:25
А откуда взяли 49? Там напсано GS V, два байта. echo -n $'\x1dV' > cutcommand
Там указан синтаксис GS V m или GS V m n, где m или n может быть разными числами (0, 1, 48, 49, 0-255) в зависимости от возможностей принтера, наверное...
Методом подбора я узнал что мне подходит GS V 1.
Создал файл "cutcommand", где записал HEX-кодами 1D 56 01
Когда я исполняю команду lpr -l cutcommand - принтер режет чек. Все работает.
Единственное что заметил интересное - мне надо было напечатать чек а потом обрезать. Я вначале написал эти 2 команды с разделителем |, но всегда исполнялась вначале обрезка (как более быстрая операция, наверное), а потом уж печать. Независимо от того в каком порядке я ставил эти команды. Я так понимаю что они исполнялись одновременно. Потом я нашел что символы && задают определенный порядок исполнения. Но была слишком длинная пауза между печатью и обрезкой (около 8 секунд). Уж после дочитался что там идет ожидание подтверждения успешности процесса и уж только потом переход ко второму. Видимо это очень длительная операция.
Спасибо сказали:
Аватара пользователя
reskof
Сообщения: 6

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение reskof »

Bizdelnick писал:
30.10.2021 15:09
echo -n $'\x1dV\x01' | lpr -l (работает в bash, ksh и zsh, но в других оболочках может не работать).
Пробовал этот вариант прописать в консоли - сработал первый раз... потом что-то думал принтер дольше... а после вовсе перестал резать и даже печатать. Может оно там где-то "накапливается"? Пришлось вообще отключить обрезку. такое впечатление что что-то идет не так. Я не знаю как проверить ход процесса. Ну почему принтер думает около 8 секунд после печати чека а потом режет?
Есть идеи как посмотреть что происходит?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20799
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Bizdelnick »

reskof писал(а):
30.10.2021 19:02
Пробовал этот вариант прописать в консоли - сработал первый раз... потом что-то думал принтер дольше... а после вовсе перестал резать и даже печатать. Может оно там где-то "накапливается"?
Могу гарантировать только, что этот вариант ничем не хуже и не лучше других способов скармливания команд в lpr. Но самому принтеру вполне может что-то не нравиться, он может ожидать какой-то ещё команды перед очередным заданием, например.
• This command is effective only when processed at the top of the line when standard mode is being used.
Попробуйте без опции -n, чтобы перевод строки добавлялся.
Переход в стандартный режим — ESCS ($'\eS'), если что, но я не знаю, с чего бы он вдруг мог в другой переключиться.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Ответить