2009-07-02 4 views
8

Für einige Interop mit einer alten POS-Anwendung habe ich mich gefragt, ob es möglich war, ein gefälschtes OPOS-Gerät in C# zu implementieren.Implementieren OPOS-Gerät in C#

Grundsätzlich würde ich eine gefälschte Tastatur implementieren, die Web-Anfragen entgegennahm und Tastenanschläge an die Legacy-Anwendung weitergab.

Weiß jemand, ob das möglich ist oder wo man Dokumentation bekommt? Ich dachte, dass OPOS gerade COM-Objekte aufgerufen hat, die durch Registrierungsschlüssel konfiguriert sind. All dies sollte in C# implementiert werden können.

+0

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. –

Antwort

11

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.

    +1

    Großartig! Ich dachte meine Frage könnte nicht beantwortet werden, da OPOS ziemlich alt ist ... Ich habe diese Monroecs Seite für eine Weile betrachtet, es hat viele Informationen (und ist ein bisschen verwirrend), aber nicht was ich speziell brauche . Ich habe nicht genau herausgefunden: a) Welche COM-Schnittstelle, von dem implementieren dll (ich nehme an POSKeyboard irgendeiner Art) b) Wie kann ich meine dll registrieren für OPOS (ich weiß \ ServiceObjects HKLM \ OLEforRetail zu verwenden ist der Platz, brauchen Sie nur ein Dokument darauf) d) Ich möchte endlich die POS-App laden (es verwendet nur die LDN von DefaultPOSKeyboard), und sehen Sie meine C# -Code Pop-up einige MessageBoxen – jonathanpeppers

    +0

    PS - es wäre schön zu implementieren die Testfunktion, die viele Geräte aus der OPOS config App implementieren. – jonathanpeppers

    +0

    "die OPOS config app" - welche App? – Joe