PointOfService デバイス オブジェクト

周辺機器の読み取り専用プロパティにアクセスし、ユニバーサル Windows プラットフォーム (UWP) アプリケーションで排他的に使用するために周辺機器を要求する PointOfService デバイス オブジェクトを作成する方法について説明します。

デバイス オブジェクトの作成

新しい列挙または保存された DeviceID のいずれかから、使用する PointOfService デバイスを特定したら、プログラムにより選択した、またはユーザーが新しい POS デバイス オブジェクトを作成するために選択した DeviceID を使用して FromIdAsync を呼び出します。

このサンプルでは、DeviceID を使用して FromIdAsync で新しい BarcodeScanner オブジェクトを作成することを試みています。 オブジェクトの作成に失敗した場合は、デバッグ メッセージが書き込まれます。


    BarcodeScanner barcodeScanner = await BarcodeScanner.FromIdAsync(DeviceId);

    if(barcodeScanner != null)
    {
        // after successful creation, claim the scanner for exclusive use and enable it to exchange data
    }
    else
    {
        Debug.WriteLine("Failure to create barcodeScanner object");
    }
    

デバイス オブジェクトを作成したら、デバイスのメソッド、プロパティ、およびイベントにアクセスできます。

デバイス オブジェクトのライフサイクル

Windows 8 より前は、アプリのライフサイクルは単純でした。 Win32 アプリおよび .NET アプリは、実行されているか、実行されていないかのどちらかであり、通常、PointOfService 周辺機器は、アプリのライフサイクル全体に対して要求されます。 ユーザーがアプリを最小化し、他のアプリに切り替えても、アプリは引き続き実行されています。 ポータブル デバイスが台頭し、電源管理がますます重要になるまでは、これで問題はありませんでした。

Windows 8 では、UWP アプリにより新しいアプリケーション モデルが導入されました。 大まかに言うと、新しい中断状態が追加されました。 UWP アプリは、ユーザーがアプリを最小化するか、別のアプリに切り替えた後、すぐに中断されます。 つまり、アプリのスレッドは停止し、オペレーティング システムがリソースを再利用する必要がある場合を除き、アプリはメモリ内に残ります。PointOfService 周辺機器を表すデバイス オブジェクトは自動的に終了し、他のアプリケーションが周辺機器にアクセスできるようになります。 ユーザーが元のアプリに切り替えると、アプリはすばやく実行中の状態に復元されます。また、PointOfService 周辺機器が再開時にまだ利用可能であれば、PointOfService 周辺機器の接続が復元されます。

<DeviceObject>.Closed イベント ハンドラーを使用して、何らかの理由でオブジェクトが閉じられたことを検出し、後で接続を再確立するために、デバイス ID をメモしておきます。 または、アプリの一時停止通知でこれを処理し、アプリの再開通知でデバイスの接続を再確立するためにデバイス ID を保存することができます。 イベント ハンドラーでダブルアップして、<DeviceObject>.Closed と App Suspend の両方で、デバイス オブジェクトの操作を重複して実行しないようにしてください。

ヒント

Windows 10 ユニバーサル Windows プラットフォーム (UWP) アプリケーションのライフサイクルの詳細については、次のトピックを参照してください。