2017-07-03 18 views
0

VC++ 2010を使ってCAT-Credit Authorization Terminal用のOPOSのインターフェイスを開発しています。私の質問はClearOutputメソッドです。その関数を呼び出すと、OPOS_E_ILLEGALを意味するコード106が返されます。ここOPOS-OLE for Retail POSのClearOutputメソッドのタイミングはどのくらいですか?

は、私のコードのシーケンスです:

  • OPOSCAT.Open()
  • OPOSCAT.ClaimDevice()
  • OPOSCAT.DeviceEnabled = Trueの
  • OPOSCAT.Asyncmode =真
  • SALESを実行し、イベントを発生させ、完了するまで待ってからOutputCompleteEventを呼び出します。
  • OPOSCAT.ClearOutput()
  • OPOSCAT.DeviceEnabled = Falseの
  • OPOSCAT.Asyncmode = Falseの
  • OPOSCAT.ReleaseDevice()
  • OPOSCAT.Close()より参照のためにここに

クリック: See Chapter 5

感謝

答えて

0

最初に、そのPDFは1.6であり、これは15年以上経過しています。現在のバージョンのOPOSについては、http://monroecs.com/unifiedpos.htm、1.14を参照してください。 PCIコンプライアンス上の理由からアップグレードする必要がある場合は、

一般的なコントロールは一般的なもので、clearOutput()メソッドでエラーを返す理由はほとんどありません。私が考えることのできる唯一のことは、それが法的な状態にない(請求されていない)場合であろうと思います。おそらく、以前の呼び出しでエラー状態が発生したため、デバイスが状態をリリースされたと主張していない状態に変わったのでしょうか?

これはそうでない場合は、おそらくデバイス固有のエラーです。サービスオブジェクトを提供したデバイスベンダーに連絡してください。 OPOSのデバッグバージョンをダウンロードしてロギングを有効にすると、この主張をサポートする証拠が増えます。

0

詳細については、使用しているCATサービスオブジェクトの仕様を確認してください。

おそらくClearOutputがOutputCompleteEventの後、つまりSALESの非同期処理が終了した後に呼び出されたためです。

一般に、ClearOutputメソッドは、非同期処理中に処理をキャンセルするために呼び出されます。 コードでは、「完了するまで待つ」の一部です。

この完了を待つ間にClearOutputメソッドを呼び出すと、ClearOutputメソッドは成功し、SALES操作(AuthorizeSalesなど)はキャンセルされます。

ただし、使用しているCATサービスオブジェクトの仕様によっては、サービスオブジェクトがClearOutputメソッドをサポートしていない可能性があります。 この場合、呼び出しの時間に関係なくエラーが発生します。

関連する問題