У меня есть билетный принтер tg 2460 CUSTOM, который имеет эмуляцию ESC / POS, USB подключен в Debian Linux.
Я пытаюсь получить статус принтера в моей программе на qt c ++ с помощью команды, но без ответа.
Я использую класс QFile, чтобы справиться с ним, открывая устройство напрямую, например, dev / usblp0, кажется, не дает результатов, поэтому я открываю подключенное устройство, например, dev / usb / lp0, и я могу контролировать принтер в порядке, но когда я пишу » Команда \ x10 \ x04 \ x01 «(передача статуса в режиме реального времени) или любая другая команда, которая подразумевает ответ, который я не могу вернуть данные, с помощью read () или readAll () навсегда блокирует процесс, так как я могу получить данные ? прости меня, если я что-то упускаю
Вы, вероятно, хотите использовать QSocketNotifier, при условии, что вы работаете в Linux.
В Linux QSocketNotifier
работает с любым Опрос (2)-в состоянии дескриптор файла (поэтому он как-то неправильно назван, так как вы можете использовать его в дескрипторах файлов без сокетов).
(В Windows все несовместимо)
Кстати, вы можете использовать CUPS в вашей системе POS. Вы можете запустить lp
(или же lpr
) команда для печати вещей (через некоторые трубы (7)), возможно, через QProcess. И вы будете использовать технологию HTTP -client side- (так Qt Network) запросить CUPS.
Читайте также о Поддержка Qt Print.
Рассмотрим также отладку не только с gdb
но и с Трассирование (1).
Других решений пока нет …