Russian Qt Forum

Qt => Печать => Тема начата: Vergil Alighieri от Май 16, 2015, 11:04



Название: Qt + АСПД Штрих-М
Отправлено: Vergil Alighieri от Май 16, 2015, 11:04
Есть программа. Условно "модуль кассы". Можно проводить различные операции как и везде. Ставится она совместно с обычными кассовыми программами и большая часть информации должна браться с операций в тех самых кассовых программ, которые в свою очередь отправляют её на АСПД Штрих-М (подключается по USB).
Вопрос в том как получить эту информацию (номер товарного чека, сумма покупки и дата операции)?

Есть драйвер к этому аппарату, написанный, кажется, на дэлфях. Как с ним работать - без понятия :(.
Есть программа Portmon (вроде как от мелкомягких), она всё отлично принимает (считывает всю инфу передающуюся по com-портам и сохраняет в логи), но не работает на 64х-битных системах. Может есть возможность повторить её функционал в Qt?

В какую сторону смотреть неопытному программисту?  ???


Название: Re: Qt + АСПД Штрих-М
Отправлено: Bepec от Май 16, 2015, 11:17
портмон - это надстройка над ком портом, использующая winapi.
В Qt для работы с ком портами используется QtSerial, в 5+ версиях он поставляется сразу вместе с Qt.

PS драйвер с дельфи можно переписать, но тут уже зависит от вашего желания.

PPS начинать с "составить список необходимого" попунктно.
1) принимать данные с устройства.
2) обрабатывать данные.
3) выводить пользователю или в модуль кассы :)


Название: Re: Qt + АСПД Штрих-М
Отправлено: Vergil Alighieri от Май 16, 2015, 14:43
А возможно подключиться в Qt к занятому порту и просто его мониторить?


Название: Re: Qt + АСПД Штрих-М
Отправлено: kuzulis от Май 16, 2015, 14:54
Нет. Для этого есть всякие снифферы/мониторы (HDD SerialPort Monitor и прочие), которые устанавливают свой фильтр-драйвер на устройство и перехватывают весь траффик.


Название: Re: Qt + АСПД Штрих-М
Отправлено: chagovets от Май 16, 2015, 19:37
Реализовывал драйвер для АСПД на 4.8.
Могу поделиться.
P.S. правда пришлось использовать qextserialport. QSerialPort имел проблемы под виндовым rdp - нужно было использовать удалённый рабочий стол.


Название: Re: Qt + АСПД Штрих-М
Отправлено: kuzulis от Май 17, 2015, 09:13
Цитировать
QSerialPort имел проблемы под виндовым rdp

Что за проблемы (и причем тут RDP?)? Какая версия использовалась?


Название: Re: Qt + АСПД Штрих-М
Отправлено: chagovets от Май 17, 2015, 20:54
я в этой теме пытался озвучить, но , к сожалению, ни кто не ответил ;)
Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ]. (http://www.prog.org.ru/index.php?topic=9537.msg192033#msg192033)


Название: Re: Qt + АСПД Штрих-М
Отправлено: kuzulis от Май 17, 2015, 21:58
Хм. Видимо я профукал этот момент. Странная вещь однако почему так происходит, т.к. qextserialport использует ту-же фичу что и qserialport (QWintEventNotifier) для отслеживания евентов ввода/вывода.


Название: Re: Qt + АСПД Штрих-М
Отправлено: chagovets от Май 18, 2015, 09:08
сейчас уже всех подробностей не припомню, но и у qextserialport вроде бы те же проблемы
просто пришлось выкрутиться отдельным потоком и проверять bytesAvailable()
но с QSerialPort точно ни как не вышло (к большому сожалению, использовал его со времён QSerialDevice)


Название: Re: Qt + АСПД Штрих-М
Отправлено: kuzulis от Май 18, 2015, 10:34
ясно, ну, тогда это QWintEventNotifier проблемы (скорее всего).

Но начиная с Qt 5.5 QSerialPort будет использовать другой нотификатор, который должен решить многие проблемы, которые были ранее (например, остановку событий при ресайзе/перемещении окна, что, вероятно имеет те-же корни что и у RDP). Но это только для Qt5, для Qt4 к сожалению все остается как и раньше.


Название: Re: Qt + АСПД Штрих-М
Отправлено: chagovets от Май 18, 2015, 11:12
Цитировать
начиная с Qt 5.5 QSerialPort будет использовать другой нотификатор
ок, спасибо, уже давно пора переходить :)

Цитировать
Есть драйвер к этому аппарату, написанный, кажется, на дэлфях. Как с ним работать - без понятия
кстати, стандартный драйвер - это обычной com-сервер
к нему запросто можно обращаться посредством QAxObject