2009-07-02 67 views
8

レガシーPOSアプリケーションとの相互運用性については、C#で偽のOPOSデバイスを実装することが可能かどうか疑問に思っていました。C#でOPOSデバイスを実装する

基本的に私は、ウェブリクエストを受け取り、キープレスをレガシーアプリケーションに渡した偽のキーボードを実装します。

これが可能かどうか、またはドキュメントの入手先を知っている人はいますか?私は、OPOSがCOMオブジェクトをレジストリキーで設定されていると考えました。これらはすべてC#で実装可能でなければなりません。

+0

これまでにこれを動作させましたか?私はちょうど同じC#インターフェイスをいくつかの共通コントロールオブジェクトでインスタンス化することができますが、他のインスタンスではできませんでした。ありがとう。 –

答えて

11

はい、確かに可能です。

COSでOPOSが想定するCOMインターフェイスを実装するOPOS SO(サービスオブジェクト)を開発することができます。これにより、任意の方法でAPIを実装できます。

Curtiss MonroeのOPOS共通制御オブジェクトをhttp://monroecs.com/oposccos.htmからダウンロードすることをお勧めします。

これは、あなたのサービスオブジェクトに実装する必要があるタイプライブラリを提供し、おそらくOPOSドキュメントへのリンクをいくつか持っています。注意:OPOSは遅延バインディングを使用しているので、デュアルインタフェースを実装する必要があります。

警告:IMHO OPOSは技術的に恐ろしいAPIで、周辺のベンダーがPOSアプリケーション開発者にとって有益な抽象概念を提供するのではなく、周辺機器の機能を公開するように設計されています。

これの特に顕著な例は、いわゆるToneIndicatorデバイスで、富士通のキーボードの音源の機能を公開して、ピッチと音量の異なる2つのトーンの繰り返し音を鳴らすものです。

UPDATE

私は前にOPOSサービスオブジェクトを実装しているが、それは長い時間がかかりました。ここであなたがPOSKeyboard SOを使い始めるためのさらに詳しい情報があります。

  • 制御オブジェクト(CO)は、遅延バインディングを使用してサービスオブジェクト(SO)をロードします。実際には、実装するCOM IIDやタイプライブラリはありません。代わりに、OPOS仕様の適切なバージョン(このページのドキュメントの1つ、http://monroecs.com/oposreleases.htmなど)で定義されている必要なすべてのメソッドとイベントを実装する必要があります。以下の情報は、このページにリンクされている1.6 Control Programer's Guide(CPG)に基づいています。

  • CPGの第2章では、実装する必要があるものについて説明しています。 OPOSはプロパティを取得/設定するために奇妙な方法を使用することに注意してください。コントロールオブジェクト(CO)はプロパティ(たとえば、DeviceEnabled、DeviceName、DeviceDescription)を感知可能な名前で公開しますが、これらはすべてGetPropertyString(文字列プロパティ用)またはGetPropertyNumber(整数プロパティ用)どのプロパティを取得するかを定義する引数。 「プロパティインデックス」はすべてOPOS標準で提供されるヘッダファイルで定義されています。

  • CCO PosKeyboardソースの概要から、実装する必要があるメソッド名は、ソースファイルPOSKeyboardImpl.cppのs_SOMethodNamesにリストされています。

  • 設定が必要なレジストリエントリは、OPOSアプリケーションプログラマーズガイド(APG)の付録「OPOSレジストリの使用法」で定義されています。あなたの場合、レジストリキーHKLM \ OleForRetail \ ServiceOPOS \ POSKeyboard \ DefaultPOSKeyboardを作成する必要があります(DefaultPOSKeyboardは、Openメソッドを渡すデバイス名です)。このレジストリキーには、SOクラスのProgIdであるデフォルト値が必要です。他の値も保存することができます(たとえば、あなたのSOが使用する設定情報)。

これで幸運を祈る - それは、たくさんのWTFを伴う痛みを伴うプロセスになります。

+1

素晴らしい!私は、OPOSがかなり古いので、私の質問に答えられないかもしれないと思った... 私はこのmonroecsサイトをしばらく見てきましたが、それはたくさんの情報を持っています(そして少し混乱します)。 。 私は正確に考え出したていない: a)は、(私はHKLM \ OleForRetail \ ServiceObjectsが知っているどのCOMインターフェイスを使用するOPOSのための私のDLLを登録する方法どのDLL(私はいくつかの種類のPOSKeyboardを想定) B)から実装しますその場所に、ちょうどそれにドキュメントが必要) d)私は最終的にPOSアプリケーションをロードする(それは単にDefaultPOSKeyboardのLDNを使用する)、そして私のC#コードがいくつかのMessageBoxをポップアップ表示するのを参照してください – jonathanpeppers

+0

PS - 多くのデバイスがOPOS設定アプリから実装するテスト機能です。 – jonathanpeppers

+0

「OPOS設定アプリ」 - どの設定アプリですか? – Joe

関連する問題