Bagikan melalui


Klaim perangkat Titik Layanan dan mengaktifkan model

Gunakan klaim perangkat Point of Service dan aktifkan API untuk mengklaim perangkat dan mengaktifkannya untuk operasi I/O.

Mengklaim untuk penggunaan eksklusif

Setelah membuat objek perangkat PointOfService, Anda harus mengklaimnya menggunakan metode klaim yang sesuai untuk jenis perangkat sebelum Anda dapat menggunakan perangkat untuk input atau output. Klaim memberikan akses eksklusif aplikasi ke banyak fungsi perangkat untuk memastikan bahwa satu aplikasi tidak mengganggu penggunaan perangkat oleh aplikasi lain. Hanya satu aplikasi pada satu waktu yang dapat mengklaim perangkat PointOfService untuk penggunaan eksklusif.

Catatan

Tindakan klaim menetapkan kunci eksklusif ke perangkat, tetapi tidak memasukkannya ke dalam status operasional. Lihat Mengaktifkan perangkat untuk operasi I/O untuk informasi selengkapnya.

API yang digunakan untuk mengklaim/merilis

Perangkat Klaim Lepaskan
BarcodeScanner BarcodeScanner.ClaimScannerAsync ClaimedBarcodeScanner.Close
CashDrawer CashDrawer.ClaimDrawerAsync ClaimedCashDrawer.Close
LineDisplay LineDisplay.ClaimAsync ClaimedineDisplay.Close
MagneticStripeReader MagneticStripeReader.ClaimReaderAsync ClaimedMagneticStripeReader.Close
PosPrinter PosPrinter.ClaimPrinterAsync ClaimedPosPrinter.Close

Mengaktifkan perangkat untuk operasi I/O

Tindakan klaim menetapkan hak eksklusif untuk perangkat, tetapi tidak memasukkannya ke dalam status operasional. Untuk menerima peristiwa atau melakukan operasi output apa pun, Anda harus mengaktifkan perangkat menggunakan EnableAsync. Sebaliknya, Anda dapat memanggil DisableAsync untuk berhenti mendengarkan peristiwa dari perangkat atau berhenti melakukan output. Anda juga dapat menggunakan IsEnabled untuk menentukan status perangkat Anda.

API yang digunakan aktifkan/nonaktifkan

Perangkat Aktifkan Nonaktifkan IsEnabled?
ClaimedBarcodeScanner EnableAsync DisableAsync IsEnabled
ClaimedCashDrawer EnableAsync DisableAsync IsEnabled
ClaimedLineDisplay Tidak Berlaku¹ Tidak Berlaku¹ Tidak Berlaku¹
ClaimedMagneticStripeReader EnableAsync DisableAsync IsEnabled
ClaimedPosPrinter EnableAsync DisableAsync IsEnabled

Tampilan Baris ¹ tidak mengharuskan Anda mengaktifkan perangkat secara eksplisit untuk operasi I/O. Pengaktifan dilakukan secara otomatis oleh API PointOfService LineDisplay yang melakukan I/O.

Sampel kode: klaim dan aktifkan

Sampel ini menunjukkan cara mengklaim perangkat pemindai kode batang setelah Anda berhasil membuat objek pemindai kode batang.


    BarcodeScanner barcodeScanner = await BarcodeScanner.FromIdAsync(DeviceId);

    if(barcodeScanner != null)
    {
        // after successful creation, claim the scanner for exclusive use 
        claimedBarcodeScanner = await barcodeScanner.ClaimScannerAsync();

        if(claimedBarcodeScanner != null)
        {
            // after successful claim, enable scanner for data events to fire
            await claimedBarcodeScanner.EnableAsync();
        }
        else
        {
            Debug.WriteLine("Failure to claim barcodeScanner");
        }
    }
    else
    {
        Debug.WriteLine("Failure to create barcodeScanner object");
    }
    

Peringatan

Klaim dapat hilang dalam keadaan berikut:

  1. Aplikasi lain telah meminta klaim perangkat yang sama dan aplikasi Anda tidak mengeluarkan RetainDevice sebagai respons terhadap peristiwa ReleaseDeviceRequested . (Lihat Negosiasi klaim di bawah ini untuk informasi lebih lanjut.)
  2. Aplikasi Anda telah ditangguhkan, yang mengakibatkan objek perangkat ditutup dan akibatnya klaim tidak lagi valid. (Lihat Siklus hidup objek perangkat untuk informasi lebih lanjut.)

Negosiasi klaim

Karena Windows adalah lingkungan multi-tugas, dimungkinkan bagi beberapa aplikasi di komputer yang sama untuk memerlukan akses ke periferal dengan cara yang kooperatif. API PointOfService menyediakan model negosiasi yang memungkinkan beberapa aplikasi berbagi periferal yang terhubung ke komputer.

Ketika aplikasi kedua di komputer yang sama meminta Klaim untuk periferal PointOfService yang sudah diklaim oleh aplikasi lain, pemberitahuan peristiwa ReleaseDeviceRequested diterbitkan. Aplikasi dengan klaim aktif harus merespons pemberitahuan peristiwa dengan memanggil RetainDevice jika aplikasi saat ini menggunakan perangkat untuk menghindari kehilangan klaim.

Jika aplikasi dengan klaim aktif tidak segera merespons dengan RetainDevice , diasumsikan bahwa aplikasi telah ditangguhkan atau tidak memerlukan perangkat dan klaim dicabut dan diberikan ke aplikasi baru.

Langkah pertama adalah membuat penanganan aktivitas yang merespons peristiwa ReleaseDeviceRequested dengan RetainDevice.

    /// <summary>
    /// Event handler for the ReleaseDeviceRequested event which occurs when 
    /// the claimed barcode scanner receives a Claim request from another application
    /// </summary>
    void claimedBarcodeScanner_ReleaseDeviceRequested(object sender, ClaimedBarcodeScanner myScanner)
    {
        // Retain exclusive access to the device
        myScanner.RetainDevice();
    }

Selanjutnya, daftarkan penanganan aktivitas yang terkait dengan perangkat yang Diklaim

    BarcodeScanner barcodeScanner = await BarcodeScanner.FromIdAsync(DeviceId);

    if(barcodeScanner != null)
    {
        // after successful creation, claim the scanner for exclusive use 
        claimedBarcodeScanner = await barcodeScanner.ClaimScannerAsync();

        if(claimedBarcodeScanner != null)
        {
            // register a release request handler to prevent loss of scanner during active use
            claimedBarcodeScanner.ReleaseDeviceRequested += claimedBarcodeScanner_ReleaseDeviceRequested;

            // after successful claim, enable scanner for data events to fire
            await claimedBarcodeScanner.EnableAsync();          
        }
        else
        {
            Debug.WriteLine("Failure to claim barcodeScanner");
        }
    }
    else
    {
        Debug.WriteLine("Failure to create barcodeScanner object");
    }

API yang digunakan untuk negosiasi klaim

Perangkat yang diklaim Pemberitahuan Rilis Pertahankan Perangkat
ClaimedBarcodeScanner ReleaseDeviceRequested RetainDevice
ClaimedCashDrawer ReleaseDeviceRequested RetainDevice
ClaimedLineDisplay ReleaseDeviceRequested RetainDevice
ClaimedMagneticStripeReader ReleaseDeviceRequested RetainDevice
ClaimedPosPrinter ReleaseDeviceRequested RetainDevice