Ja, es ist sicherlich möglich.
Sie können ein OPOS SO (Service-Objekt) entwickeln, das die von OPOS in C# erwartete COM-Schnittstelle implementiert. Dies kann dann die API beliebig implementieren.
Ich schlage vor, dass Sie Curtiss Monroes OPOS gemeinsame Steuerobjekte von http://monroecs.com/oposccos.htm herunterladen.
Dadurch erhalten Sie die Typbibliotheken, die Sie für Ihre Service-Objekte implementieren müssen, und wahrscheinlich sind einige Links zur OPOS-Dokumentation vorhanden. NB Ich denke, OPOS verwendet Late-Binding, so dass Sie eine Dual-Schnittstelle implementieren müssen.
Ein Vorbehalt: IMHO OPOS ist technisch eine schreckliche API, von einem Ausschuss periphere Anbieter entwickelt, um die Fähigkeiten ihrer Peripheriegeräte zu offenbaren, anstatt eine nützliche Abstraktion für POS-Anwendungsentwickler bereitzustellen. Ein besonders eindrucksvolles Beispiel hierfür ist das sogenannte ToneIndicator-Gerät, das die Möglichkeiten eines Tongenerators in einer Fujitsu-Tastatur offenlegt, um eine wiederholte Sequenz von zwei Tönen unterschiedlicher Tonhöhe und Lautstärke zu erzeugen.
UPDATE
I OPOS- Dienst implementiert haben Objekte vor, aber es ist eine lange Zeit gewesen. Hier finden Sie weitere Informationen, die Ihnen den Einstieg in ein POSKeyboard SO ermöglichen.
Das Control-Objekt (CO) lädt Ihr Service-Objekt (SO) mit späte Bindung. In der Tat gibt es keine COM IID oder Typbibliothek, die Sie implementieren. Stattdessen müssen Sie alle erforderlichen Methoden und Ereignisse implementieren, die in der entsprechenden Version der OPOS-Spezifikationen definiert sind (z. B. eines der Dokumente auf dieser Seite: http://monroecs.com/oposreleases.htm). Die folgenden Informationen basieren auf dem 1.6 Control Programmer's Guide (CPG), der auf dieser Seite verlinkt ist.
Kapitel 2 der CPG beschreibt, was Sie implementieren müssen. Beachten Sie, dass OPOS eine seltsame Methode zum Abrufen/Festlegen von Eigenschaften verwendet. Während das Control Object (CO) Eigenschaften mit sinnvollen Namen (zB DeviceEnabled, DeviceName, DeviceDescription) freigibt, rufen diese alle die gleichen Methoden GetPropertyString (für String-Eigenschaften) oder GetPropertyNumber (für Integer-Eigenschaften) auf und übergeben eine Ganzzahl "property index" als ein Argument, das definiert, welche Eigenschaft abgerufen werden soll. Die "Eigenschaftsindizes" sind alle in den Header-Dateien definiert, die mit dem OPOS-Standard geliefert werden.
Aus einem kurzen Blick auf die CCO-PosKeyboard-Quelle werden die Methodennamen, die Sie implementieren müssen, in s_SOMethodNames in der Quelldatei POSKeyboardImpl.cpp aufgelistet.
Die Registrierungseinträge, die Sie einrichten müssen, sind im OPOS Application Programming Guide (APG) Anhang "OPOS Registry Usage" definiert.In diesem Fall müssen Sie einen Registrierungsschlüssel HKLM \ OleForRetail \ ServiceOPOS \ POSKeyboard \ DefaultPOSKeyboard erstellen (wobei DefaultPOSKeyboard der Gerätename ist, den Sie mit der Open-Methode übergeben). Dieser Registrierungsschlüssel muss einen Standardwert haben, der die ProgId Ihrer SO-Klasse ist. Sie können dort auch andere Werte speichern (z. B. Konfigurationsinformationen, die von Ihrer SO verwendet werden).
Viel Glück damit - es wird ein schmerzhafter Prozess mit vielen WTF's sein.
haben Sie das jemals zur Arbeit gebracht. Ich habe gerade das selbe gemacht meine C# Schnittstelle kann durch einige allgemeine Steuerobjekte, aber nicht andere instanziiert werden. Vielen Dank. –