Реализовать OPOS устройство в C#

для некоторого взаимодействия с устаревшим приложением POS мне было интересно, можно ли реализовать фальшивое устройство OPOS в C#.

в основном я бы реализовал фальшивую клавиатуру, которая принимала веб-запросы и передавала нажатия клавиш в устаревшее приложение.

кто-нибудь знает, возможно ли это или где получить документацию? Я понял, что OPOS просто называется COM-объектами, которые настроены ключами реестра. Все это должно быть реализовано в C#.

1 ответов


Да, это, безусловно, возможно.

вы можете разработать OPOS SO (Service Object), который реализует COM-интерфейс, ожидаемый OPOS в C#. Это может затем реализовать API любым способом, который вы хотите.

Я предлагаю вам загрузить общие объекты управления OPOS Кертиса Монро из http://monroecs.com/oposccos.htm.

Это даст вам библиотеки типов, которые вам нужно реализовать для вашего объекта (объектов) Службы, и, вероятно, имеет некоторые ссылки на OPOS документация. NB я думаю, что OPOS использует позднюю привязку, поэтому вам нужно будет реализовать двойной интерфейс.

предостережение: IMHO OPOS технически ужасный API, разработанный периферийными поставщиками комитета, чтобы раскрыть возможности своих периферийных устройств, а не предоставлять полезную абстракцию для разработчиков приложений POS.

особенно ярким примером этого является так называемое устройство ToneIndicator, которое предоставляет возможности генератора тонов в Fujitsu клавиатура для звучания повторяется последовательность из двух тонов разной высоты тона и громкости.

обновление

я реализовал объекты Службы OPOS раньше, но это было долгое время. Вот еще информация, чтобы вы начали работу на POSKeyboard так.

  • объект управления (CO) загрузит объект Службы (SO) с помощью поздней привязки. Таким образом, на самом деле нет COM IID или библиотеки типов, которые вы реализуете. Вместо этого вам нужно реализовать все необходимые методы и события, определенные в соответствующей версии спецификаций OPOS (например, один из документов на этой странице:http://monroecs.com/oposreleases.htm). Информация ниже основана на руководстве 1.6 Control Programer (CPG), связанном на этой странице.

  • Глава 2 CPG описывает, что вам нужно реализовать. Обратите внимание, что OPOS использует странный метод для получения/настройки свойств. В то время как объект управления (CO) предоставляет свойства с разумными именами (например, DeviceEnabled, DeviceName, DeviceDescription), все они вызывают одни и те же методы GetPropertyString (для строковых свойств) или GetPropertyNumber (для целочисленных свойств), передавая целочисленный "индекс свойств" в качестве аргумента, который определяет, какое свойство должно быть извлечено. "Индексы свойств" определяются в заголовочных файлах, поставляемых со стандартом OPOS.

  • от быстрого взгляда на источник CCO PosKeyboard, имена методов, которые вам нужно реализовать перечислены в s_SOMethodNames в исходном файле POSKeyboardImpl.СРР.

  • записи реестра, которые необходимо настроить, определены в приложении OPOS Application Programmer's Guide (APG) "использование реестра OPOS". В вашем случае вам нужно будет создать раздел реестра HKLM\OleForRetail\ServiceOPOS\POSKeyboard\DefaultPOSKeyboard (где DefaultPOSKeyboard-это имя устройства, которое вы передаете метод Open). Этот раздел реестра должен иметь значение по умолчанию, которое является ProgId ваши так класс. Вы также можете хранить там другие значения (например, информацию о конфигурации, используемую вашим SO).

удачи с этим - это будет болезненный процесс с большим количеством WTF.