Bagikan melalui


Menghitung perangkat Titik Layanan

Topik ini menunjukkan cara menentukan pemilih perangkat yang digunakan untuk mengkueri perangkat yang tersedia untuk sistem dan menggunakan pemilih ini untuk menghitung perangkat Titik Layanan menggunakan salah satu metode berikut:

Metode 1: Gunakan pemilih perangkat

Tampilkan UI pemilih perangkat dan minta pengguna memilih perangkat yang tersambung. Metode ini menangani pembaruan daftar ketika perangkat dilampirkan dan dihapus, dan lebih sederhana dan lebih aman daripada metode lain.

Metode 2: Dapatkan perangkat pertama yang tersedia

Gunakan GetDefaultAsync untuk mengakses perangkat pertama yang tersedia di kelas perangkat Point of Service tertentu.

Metode 3: Rekam jepret perangkat

Menghitung rekam jepret perangkat Titik Layanan yang ada pada sistem pada titik waktu tertentu. Ini berguna ketika Anda ingin membangun UI Anda sendiri atau perlu menghitung perangkat tanpa menampilkan UI kepada pengguna. FindAllAsync akan menahan hasil hingga seluruh enumerasi selesai.

Metode 4: Menghitung dan menonton

DeviceWatcher adalah model enumerasi yang lebih kuat dan fleksibel yang memungkinkan Anda menghitung perangkat yang saat ini ada, dan juga menerima pemberitahuan ketika perangkat ditambahkan atau dihapus dari sistem. Ini berguna ketika Anda ingin mempertahankan daftar perangkat saat ini di latar belakang untuk ditampilkan di UI Anda daripada menunggu rekam jepret terjadi.

Menentukan pemilih perangkat

Pemilih perangkat memungkinkan Anda membatasi perangkat yang Anda telusuri saat menghitung perangkat. Ini memungkinkan Anda hanya mendapatkan hasil yang relevan dan mengurangi waktu yang diperlukan untuk menghitung perangkat yang diinginkan.

Anda dapat menggunakan metode GetDeviceSelector untuk jenis perangkat yang Anda cari dan mendapatkan pemilih perangkat untuk jenis tersebut. Misalnya, menggunakan PosPrinter.GetDeviceSelector akan memberi Anda pemilih untuk menghitung semua PosPrinter yang terpasang pada sistem, termasuk printer USB, jaringan, dan Bluetooth POS.

using Windows.Devices.PointOfService;

string selector = POSPrinter.GetDeviceSelector();

Metode GetDeviceSelector untuk berbagai jenis perangkat adalah:

Menggunakan metode GetDeviceSelector yang mengambil nilai PosConnectionTypes sebagai parameter, Anda dapat membatasi pemilih Anda untuk menghitung perangkat POS lokal, jaringan, atau Bluetooth yang terpasang, mengurangi waktu yang diperlukan untuk menyelesaikan kueri. Sampel di bawah ini menunjukkan penggunaan metode ini untuk menentukan pemilih yang hanya mendukung printer POS yang terpasang secara lokal.

using Windows.Devices.PointOfService;

string selector = POSPrinter.GetDeviceSelector(PosConnectionTypes.Local);

Tip

Lihat Membuat pemilih perangkat untuk membangun string pemilih tingkat lanjut.

Metode 1: Gunakan pemilih perangkat

Kelas DevicePicker memungkinkan Anda menampilkan flyout pemilih yang berisi daftar perangkat yang dapat dipilih pengguna. Anda dapat menggunakan properti Filter untuk memilih jenis perangkat mana yang akan ditampilkan di pemilih. Properti ini berjenis DevicePickerFilter. Anda dapat menambahkan jenis perangkat ke filter menggunakan properti SupportedDeviceClasses atau SupportedDeviceSelectors .

Ketika Anda siap untuk menampilkan pemilih perangkat, Anda dapat memanggil metode PickSingleDeviceAsync , yang akan menampilkan UI pemilih dan mengembalikan perangkat yang dipilih. Anda harus menentukan Rect yang akan menentukan tempat flyout muncul. Metode ini akan mengembalikan objek DeviceInformation , jadi untuk menggunakannya dengan API Titik Layanan, Anda harus menggunakan metode FromIdAsync untuk kelas perangkat tertentu yang Anda inginkan. Anda meneruskan properti DeviceInformation.Id sebagai parameter deviceId metode, dan mendapatkan instans kelas perangkat sebagai nilai pengembalian.

Cuplikan kode berikut membuat DevicePicker, menambahkan filter pemindai kode batang ke dalamnya, membuat pengguna memilih perangkat, lalu membuat objek BarcodeScanner berdasarkan ID perangkat:

private async Task<BarcodeScanner> GetBarcodeScanner()
{
    DevicePicker devicePicker = new DevicePicker();
    devicePicker.Filter.SupportedDeviceSelectors.Add(BarcodeScanner.GetDeviceSelector());
    Rect rect = new Rect();
    DeviceInformation deviceInformation = await devicePicker.PickSingleDeviceAsync(rect);
    BarcodeScanner barcodeScanner = await BarcodeScanner.FromIdAsync(deviceInformation.Id);
    return barcodeScanner;
}

Metode 2: Dapatkan perangkat pertama yang tersedia

Cara paling sederhana untuk mendapatkan perangkat Point of Service adalah dengan menggunakan GetDefaultAsync untuk mendapatkan perangkat pertama yang tersedia dalam kelas perangkat Point of Service.

Sampel di bawah ini menggambarkan penggunaan GetDefaultAsync untuk BarcodeScanner. Pola pengodean mirip untuk semua kelas perangkat Titik Layanan.

using Windows.Devices.PointOfService;

BarcodeScanner barcodeScanner = await BarcodeScanner.GetDefaultAsync();

Perhatian

GetDefaultAsync harus digunakan dengan hati-hati karena dapat mengembalikan perangkat yang berbeda dari satu sesi ke sesi berikutnya. Banyak peristiwa dapat memengaruhi enumerasi ini yang menghasilkan perangkat pertama yang tersedia yang berbeda, termasuk:

  • Mengubah kamera yang terpasang pada komputer Anda
  • Perubahan pada perangkat Titik Layanan yang terpasang pada komputer Anda
  • Perubahan perangkat Titik Layanan yang terpasang pada jaringan yang tersedia di jaringan Anda
  • Mengubah perangkat Titik Layanan Bluetooth dalam rentang komputer Anda
  • Perubahan pada konfigurasi Titik Layanan
  • Penginstalan driver atau objek layanan OPOS
  • Penginstalan ekstensi Titik Layanan
  • Memperbarui ke sistem operasi Windows

Metode 3: Rekam jepret perangkat

Dalam beberapa skenario, Anda mungkin ingin membangun UI Anda sendiri atau perlu menghitung perangkat tanpa menampilkan UI kepada pengguna. Dalam situasi ini, Anda dapat menghitung rekam jepret perangkat yang saat ini terhubung atau dipasangkan dengan sistem menggunakan DeviceInformation.FindAllAsync. Metode ini akan menahan hasil apa pun sampai seluruh enumerasi selesai.

Tip

Disarankan untuk menggunakan metode GetDeviceSelector dengan parameter PosConnectionTypes saat menggunakan FindAllAsync untuk membatasi kueri Anda ke jenis koneksi yang diinginkan. Koneksi Jaringan dan Bluetooth dapat menunda hasil karena enumerasinya harus diselesaikan sebelum hasil FindAllAsync dikembalikan.

Perhatian

FindAllAsync mengembalikan array perangkat. Urutan array ini dapat berubah dari sesi ke sesi, oleh karena itu tidak disarankan untuk mengandalkan urutan tertentu dengan menggunakan indeks hardcoded ke dalam array. Gunakan properti DeviceInformation untuk memfilter hasil Anda atau menyediakan UI untuk dipilih pengguna.

Sampel ini menggunakan pemilih yang ditentukan di atas untuk mengambil rekam jepret perangkat menggunakan FindAllAsync kemudian menghitung melalui setiap item yang dikembalikan oleh koleksi dan menulis nama perangkat dan ID ke output debug.

using Windows.Devices.Enumeration;

DeviceInformationCollection deviceCollection = await DeviceInformation.FindAllAsync(selector);

foreach (DeviceInformation devInfo in deviceCollection)
{
    Debug.WriteLine("{0} {1}", devInfo.Name, devInfo.Id);
}

Tip

Saat bekerja dengan API Windows.Devices.Enumeration , Anda akan sering perlu menggunakan objek DeviceInformation untuk mendapatkan informasi tentang perangkat tertentu. Misalnya, properti DeviceInformation.ID dapat digunakan untuk memulihkan dan menggunakan kembali perangkat yang sama jika tersedia di sesi mendatang dan properti DeviceInformation.Name dapat digunakan untuk tujuan tampilan di aplikasi Anda. Lihat halaman referensi DeviceInformation untuk informasi tentang properti tambahan yang tersedia.

Metode 4: Menghitung dan menonton

Metode yang lebih kuat dan fleksibel untuk menghitung perangkat adalah membuat DeviceWatcher. Pengamat perangkat menghitung perangkat secara dinamis, sehingga aplikasi menerima pemberitahuan jika perangkat ditambahkan, dihapus, atau diubah setelah enumerasi awal selesai. DeviceWatcher akan memungkinkan Anda mendeteksi kapan perangkat yang terhubung ke jaringan online, perangkat Bluetooth berada dalam jangkauan, serta jika perangkat yang terhubung secara lokal dicabut sehingga Anda dapat mengambil tindakan yang sesuai dalam aplikasi Anda.

Sampel ini menggunakan pemilih yang ditentukan di atas untuk membuat DeviceWatcher serta menentukan penanganan aktivitas untuk pemberitahuan Ditambahkan, Dihapus, dan Diperbarui . Anda harus mengisi detail tindakan yang ingin Anda ambil pada setiap pemberitahuan.

using Windows.Devices.Enumeration;

DeviceWatcher deviceWatcher = DeviceInformation.CreateWatcher(selector);
deviceWatcher.Added += DeviceWatcher_Added;
deviceWatcher.Removed += DeviceWatcher_Removed;
deviceWatcher.Updated += DeviceWatcher_Updated;

void DeviceWatcher_Added(DeviceWatcher sender, DeviceInformation args)
{
    // TODO: Add the DeviceInformation object to your collection
}

void DeviceWatcher_Removed(DeviceWatcher sender, DeviceInformationUpdate args)
{
    // TODO: Remove the item in your collection associated with DeviceInformationUpdate
}

void DeviceWatcher_Updated(DeviceWatcher sender, DeviceInformationUpdate args)
{
    // TODO: Update your collection with information from DeviceInformationUpdate
}

Tip

Lihat Menghitung dan menonton perangkat untuk detail selengkapnya tentang penggunaan DeviceWatcher.

Lihat juga

Dukungan dan umpan balik

Temukan jawaban atas pertanyaan Anda

Ada pertanyaan? Tanyakan kepada kami di forum Tanya Jawab Dokumen kami dengan tag UWP atau di Stack Overflow dengan tag pointofservice.

Bantu kami menemukan pertanyaan Anda: