0

POS とプリンターの間でデータを傍受しようとしています。

私たちが遭遇した問題は、プリンター x を com0com エンドポイントに接続したときにプリンター x がオフラインであると POS が報告することです。

com0com エンドポイントの両側にあるハイパーターミナルのインスタンスは、相互に通信します。

ハードウェアが実際にシリアル ポートに接続されているかどうかを検出する方法があることを知りませんでした。通常、リッスンしているデバイスがあるかどうかに関係なく、com ポートに書き込みます。プリンターと通信するための基本的な方法であるため、pos は opos を使用することを知っています。プリンタがオフラインであると pos アプリケーションに通知するために opos が起動するイベントは何ですか? ハードウェアは、デバイスが接続されているかどうかをどのように識別しますか? com0com を使用しているときにこのイベントを回避する方法はありますか?

4

1 に答える 1

2

OPOS は、Open()、ClaimDevice()、および Enable の 3 つのステップ プロセスに従います。Open() を呼び出すと、OPOS Common Control Object (OPOS CCO) がベンダー提供のデバイス固有のサービス オブジェクト (SO) を構築し、SO で Open() メソッドを呼び出します。これによりソフトウェアが初期化されますが、おそらく現時点ではデバイスとの通信は試行されません。

ClaimDevice() は SO とネゴシエートして、デバイスが共有可能であり、アプリで使用できることを確認します。この時点で、デバイスがオフラインであると報告される可能性があります。ClaimDevice() は、OPOS_E_OFFLINE を示す ResultCode で例外を発生させます。

Enable を true に設定するか、印刷アクティビティを実行すると、デバイスがオフラインの場合に呼び出しが失敗する可能性があります。たとえば、印刷の途中で誰かがプリンターのプラグを抜く可能性があります。

SO は、デバイスとのネゴシエーションと通信を実行する責任があります。ベンダーが提供する OPOS インストール パッケージは、通常、SO をインストールして構成します。ただし、SO が正しいポートとデバイスと通信するように適切に構成されていることを確認するのは、ユーザーの責任です。正しく構成されていないと、ClaimDevice() が呼び出されたときにデバイス オフライン エラーが発生します。

于 2013-04-22T20:49:30.570 に答える