Russian Qt Forum
Ноябрь 24, 2024, 18:13 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt + АСПД Штрих-М  (Прочитано 9088 раз)
Vergil Alighieri
Гость
« : Май 16, 2015, 11:04 »

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

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

В какую сторону смотреть неопытному программисту?  Непонимающий
Записан
Bepec
Гость
« Ответ #1 : Май 16, 2015, 11:17 »

портмон - это надстройка над ком портом, использующая winapi.
В Qt для работы с ком портами используется QtSerial, в 5+ версиях он поставляется сразу вместе с Qt.

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

PPS начинать с "составить список необходимого" попунктно.
1) принимать данные с устройства.
2) обрабатывать данные.
3) выводить пользователю или в модуль кассы Улыбающийся
Записан
Vergil Alighieri
Гость
« Ответ #2 : Май 16, 2015, 14:43 »

А возможно подключиться в Qt к занятому порту и просто его мониторить?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #3 : Май 16, 2015, 14:54 »

Нет. Для этого есть всякие снифферы/мониторы (HDD SerialPort Monitor и прочие), которые устанавливают свой фильтр-драйвер на устройство и перехватывают весь траффик.
Записан

ArchLinux x86_64 / Win10 64 bit
chagovets
Новичок

Offline Offline

Сообщений: 24


Просмотр профиля
« Ответ #4 : Май 16, 2015, 19:37 »

Реализовывал драйвер для АСПД на 4.8.
Могу поделиться.
P.S. правда пришлось использовать qextserialport. QSerialPort имел проблемы под виндовым rdp - нужно было использовать удалённый рабочий стол.
« Последнее редактирование: Май 16, 2015, 19:41 от chagovets » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #5 : Май 17, 2015, 09:13 »

Цитировать
QSerialPort имел проблемы под виндовым rdp

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

ArchLinux x86_64 / Win10 64 bit
chagovets
Новичок

Offline Offline

Сообщений: 24


Просмотр профиля
« Ответ #6 : Май 17, 2015, 20:54 »

я в этой теме пытался озвучить, но , к сожалению, ни кто не ответил Подмигивающий
Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #7 : Май 17, 2015, 21:58 »

Хм. Видимо я профукал этот момент. Странная вещь однако почему так происходит, т.к. qextserialport использует ту-же фичу что и qserialport (QWintEventNotifier) для отслеживания евентов ввода/вывода.
Записан

ArchLinux x86_64 / Win10 64 bit
chagovets
Новичок

Offline Offline

Сообщений: 24


Просмотр профиля
« Ответ #8 : Май 18, 2015, 09:08 »

сейчас уже всех подробностей не припомню, но и у qextserialport вроде бы те же проблемы
просто пришлось выкрутиться отдельным потоком и проверять bytesAvailable()
но с QSerialPort точно ни как не вышло (к большому сожалению, использовал его со времён QSerialDevice)
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #9 : Май 18, 2015, 10:34 »

ясно, ну, тогда это QWintEventNotifier проблемы (скорее всего).

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

ArchLinux x86_64 / Win10 64 bit
chagovets
Новичок

Offline Offline

Сообщений: 24


Просмотр профиля
« Ответ #10 : Май 18, 2015, 11:12 »

Цитировать
начиная с Qt 5.5 QSerialPort будет использовать другой нотификатор
ок, спасибо, уже давно пора переходить Улыбающийся

Цитировать
Есть драйвер к этому аппарату, написанный, кажется, на дэлфях. Как с ним работать - без понятия
кстати, стандартный драйвер - это обычной com-сервер
к нему запросто можно обращаться посредством QAxObject
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.223 секунд. Запросов: 22.