9

従来のPOSアプリケーションとの相互運用については、偽のOPOSデバイスをC#で実装できるかどうか疑問に思いました。

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

これが可能かどうか、またはドキュメントをどこで入手できるかを誰かが知っていますか?レジストリキーで構成されたCOMオブジェクトと呼ばれるOPOSを考えました。これらはすべてC#で実装可能である必要があります。

4

1 に答える 1

13

はい、もちろん可能です。

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

Curtiss Monroe の OPOS Common Control Objects をhttp://monroecs.com/oposccos.htmからダウンロードすることをお勧めします。

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

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

これの特に顕著な例は、いわゆる ToneIndicator デバイスです。これは、Fujitsu キーボードのトーン ジェネレータの機能を公開して、異なるピッチとボリュームの 2 つのトーンのシーケンスを繰り返し鳴らします。

アップデート

以前に 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 を伴う苦痛なプロセスになるでしょう。

于 2009-07-02T20:05:46.400 に答える