カメラ バーコード スキャナーの概要Getting started with a camera barcode scanner

手順 1:アプリケーション マニフェストの機能の宣言を追加します。Step 1: Add capability declarations to your app manifest

  1. Microsoft Visual Studio のソリューション エクスプローラーで、package.appxmanifest 項目をダブルクリックしてアプリケーション マニフェストのデザイナーを開きます。In Microsoft Visual Studio, in Solution Explorer, open the designer for the application manifest by double-clicking the package.appxmanifest item.
  2. [機能] タブをクリックします。Select the Capabilities tab
  3. [Web カメラ][PointOfService] のチェック ボックスをオンにします。Check the boxes for Webcam and PointOfService

注意

Web カメラ機能は、アプリケーションからプレビューを表示するだけでなく、ソフトウェア デコーダーでカメラからデコードするフレームを受信するためにも必要です。The Webcam capability is required to for the software decoder to receive frames from the camera to decode as well as to provide a preview from your application

手順 2:Using ディレクティブを追加します。Step 2: Add using directives

using Windows.Devices.Enumeration;
using Windows.Devices.PointOfService;

手順 3:デバイス セレクターを定義します。Step 3: Define your device selector

オプション a:すべてのバーコード スキャナーを見つけるOption A: Find all barcode scanners

string selector = BarcodeScanner.GetDeviceSelector();       

オプション b:デバイス セレクターの接続の種類のスコープOption B: Scoping device selector to connection type

string selector = BarcodeScanner.GetDeviceSelector(PosConnectionTypes.Local);
DeviceInformationCollection deviceCollection = await DeviceInformation.FindAllAsync(selector);

手順 4:バーコード スキャナを列挙します。Step 4: Enumerate barcode scanners

アプリケーションの有効期間においてデバイスのリストが変化することを想定しない場合は、FindAllAsync を使用して、1 回だけスナップショットを列挙することができますが、アプリケーションの有効期間においてバーコード スキャナーのリストが変化する可能性がある場合は、代わりに DeviceWatcher を使用します。If you do not expect the list of devices to change over the lifespan of your application you can enumerate a snapshot just once with FindAllAsync, but if you believe that the list of barcode scanners could change over the lifespan of your application you should use a DeviceWatcher instead.

重要

GetDefaultAsync を使用して PointOfService デバイスを列挙すると、結果の動作が一貫しない可能性があります。GetDefaultAsync は、クラスで見つかった最初のデバイスを返すだけであり、このデバイスはセッションによって変化する可能性があるためです。Using GetDefaultAsync to enumerate PointOfService devices can result in inconsistent behavior as it simply returns the first device found in the class and this can change from session to session.

オプション a:バーコード スキャナのスナップショットを列挙します。Option A: Enumerate a snapshot of barcode scanners

DeviceInformationCollection deviceCollection = await DeviceInformation.FindAllAsync(selector);

ヒント

FindAllAsync の使用方法の詳細については、「デバイスのスナップショットの列挙」を参照してください。See Enumerate a snapshot of devices for more information on using FindAllAsync.

オプション b:列挙し、使用可能なバーコード スキャナーの変化を監視Option B: Enumerate and watch for changes in available barcode scanners

DeviceWatcher deviceWatcher = DeviceInformation.CreateWatcher(selector);

// TODO: Add Event Listeners and Handlers

ヒント

詳細については、「デバイスの列挙と監視」と「DeviceWatcher」を参照してください。See Enumerate and watch device changes and DeviceWatcher for more information.

手順 5:カメラのバーコード スキャナーを識別します。Step 5: Identify camera barcode scanners

カメラ バーコード スキャナーは、Windows によって、コンピューターに接続されているカメラとソフトウェア デコーダーがペアリングされたときに動的に作成されます。A camera barcode scanner is created dynamically as Windows pairs the camera(s) attached to your computer with a software decoder. カメラとデコーダーのペアはそれぞれ完全な機能を持つバーコード スキャナーです。Each camera - decoder pair is a fully functional barcode scanner.

結果として得られるデバイス コレクションの各バーコード スキャナーについて、BarcodeScanner.VideoDeviceID プロパティを確認することによって、カメラ バーコード スキャナーと物理バーコード スキャナーを区別することができます。For each barcode scanner in the resulting device collection, you can determine which are camera barcode scanners verses physical barcode scanners by checking the BarcodeScanner.VideoDeviceID property. VideoDeviceID が NULL 以外である場合は、デバイス コレクションのバーコード スキャナー オブジェクトがカメラ バーコード スキャナーであることを示します。A non-NULL VideoDeviceID will indicate that the barcode scanner object from your device collection is a camera barcode scanner. 複数のカメラ バーコード スキャナーがある場合は、物理バーコード スキャナーを含まない別のコレクションを作成することもできます。If you have more than one camera barcode scanner you may want to build a separate collection which excludes physical barcode scanners.

Windows に付属しているデコーダーを使用するカメラ バーコード スキャナーは、次のように表示されます。Camera barcode scanners using the decoder that ships with Windows will appear as:

Microsoft BarcodeScanner (使用しているカメラの名前)Microsoft BarcodeScanner (name of your camera here)

カメラがコンピューターのシャーシに組み込まれており、複数のカメラがある場合、名前は前面背面で区別されます。If your camera is built in to the chassis of your computer, the name may differentiate between front and rear if you have more than one camera. 今後、新しいソフトウェア デコーダーが利用可能になり、別の命名規則が適用される可能性があります。In the future, additional software decoders may be available and carry a different naming scheme.

手順 6:要求のカメラのバーコード スキャナーStep 6: Claim the camera barcode scanner

BarcodeScanner.ClaimScannerAsync を使用して、カメラ バーコード スキャナーの排他的使用を取得します。Use BarcodeScanner.ClaimScannerAsync to obtain exclusive use of the camera barcode scanner.

手順 7:システム提供のプレビューStep 7: System provided preview

ユーザーがカメラを正しくバーコードに向けるには、カメラ プレビューが必要です。A camera preview is needed for the user to successfully aim the camera at barcodes. Windows には、カメラ バーコード スキャナーの基本的なコントロールを提供するためのダイアログを起動するシンプルなカメラ プレビューが用意されています。Windows provides a simple camera preview that will launch a dialog that enables basic control of the camera barcode scanner. ダイアログを開くときは ClaimedBarcodeScanner.ShowVideoPreview を呼び出し、作業が終わってダイアログを閉じるときは ClaimedBarcodeScanner.HideVideoPreview を呼び出すだけです。Simply call ClaimedBarcodeScanner.ShowVideoPreview to open the dialog and ClaimedBarcodeScanner.HideVideoPreview to close it when finished.

ヒント

アプリケーションでカメラ バーコード スキャナーのプレビューをホストする方法については、「プレビューのホスト」を参照してください。See Hosting Preview to host the preview for camera barcode scanner in your application.

手順 8:スキャンを開始します。Step 8: Initiate scan

StartSoftwareTriggerAsync を呼び出すことでスキャン プロセスを開始できます。You can initiate the scan process by calling StartSoftwareTriggerAsync.
IsDisabledOnDataReceived の値に応じて、スキャナーはバーコードを 1 つだけスキャンして停止することも、StopSoftwareTriggerAsync を呼び出すまで継続的にスキャンすることもできます。Depending on the value of IsDisabledOnDataReceived the scanner may scan only one barcode then stop or scan continuously until you call StopSoftwareTriggerAsync.

IsDisabledOnDataReceived を目的の値に設定することで、バーコードがデコードされたときのスキャナー動作を制御します。Set the desired value of IsDisabledOnDataReceived to control the scanner behavior when a barcode is decoded.

Value 説明Description
TrueTrue バーコードを 1 つだけスキャンして停止するScan only one barcode then stop
FalseFalse 停止せずに継続的にバーコードをスキャンするContinuously scan barcodes without stopping