私は販売時点管理 (POS) アプリケーションに取り組んでいます。チェックアウト時に端末がさまざまなデバイスをサポートする必要があります。スキャナー、磁気スワイプ カード リーダー、キャッシュ ドロワー。POS.NET を使用してこれらすべてをサポートしており、通常の動作状況ではすべて正常に動作します。
テスト中に問題が明らかになり、キャッシュ ドロワーが正しく初期化された後、キャッシュ ドロワーへの電力が失われた場合、RS232 Posiflex CR4101、POS.NET は何か問題があることを通知しません。例外もエラーも何もありません。
デバイスを初期化するためにかなり標準的なコードを使用しています。
this.PosExplorer = new PosExplorer();
var deviceInfo = this.PosExplorer.GetDevice(DeviceType.CashDrawer, deviceName);
this.device = (CashDrawer)this.PosExplorer.CreateInstance(deviceInfo);
this.device.Open();
this.device.Claim(1000);
this.device.DeviceEnabled = true;
次に、使用するキャッシュ ドロワーを開きたい場合 (適切な例外処理と失敗コードの再初期化ロジックで説明):
this.device.OpenDrawer();
問題は、OpenDrawer を呼び出しても何の問題も返されないことです。POS.NET キャッシュ ドロワー サービス オブジェクトにはプロパティ DrawerOpened があり、ドロワーが物理的に閉じたままでも、実際には true を返します。さらに良いことに、この時点でキャッシュ ドロワーの電源を入れ直すと、DrawerOpened は false を返し、キャッシュ ドロワーが閉じられたことを示します。
誰かアドバイスはありますか?
また、提案される前に、全国のすべての店舗で交換品を展開するコストのため、キャッシュ ドロワー モデルをより正確に電源状態を報告するモデルに (まったく) 変更することはできません。
第二に、これらのデバイスには電源インジケータがないため、チェックアウト担当者が何か問題があることを最初に知るのは、引き出しが開かなかったときです。
第 3 に、作業環境を最適化して、チェックアウト担当者がパワー パックやケーブルの近くにぶつかったり、蹴ったり、その他の方法で近づいたりする可能性を最小限に抑えて、システムの「部分的な電源オフ」の可能性を減らすことを提案しました。
これは、最小公分母 (ユーザー) にコーディングして、すべての情報が間違っているという予期しない、報告されていない状況から回復しようとする演習です。
ボラットの言葉を引用すると、「大成功です!」。