Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Manajemen peristiwa mewakili salah satu aspek utama aplikasi pemrograman untuk Microsoft Point of Service for .NET (POS untuk .NET). Semua input dalam sistem POS untuk .NET digerakkan oleh peristiwa, dan setiap segmen POS untuk Arsitektur .NET menggunakan peristiwa untuk berkomunikasi dengan aplikasi lain dan Objek Layanan.
Model Pemrosesan Berbasis Peristiwa
Input berbasis peristiwa dimulai ketika perangkat POS yang terpasang menerima input data. Jika perangkat tersebut diaktifkan ( DeviceEnabled properti diatur ke true), maka data yang diterima akan diantrekan sebagai peristiwa DataEvent dan dikirim ke aplikasi. Peristiwa dikirimkan secara first-in dan first-out oleh utas layanan internal. Tepat sebelum peristiwa ini dinaikkan, Objek Layanan dapat menggunakan metode PreFireEvent untuk memperbarui properti sebelum peristiwa tersebut dikirim.
Setelah data peristiwa diterima, perangkat akan secara otomatis menonaktifkan dirinya sendiri (mengatur properti DeviceEnabled ke false) jika properti AutoDisable diatur ke true. Saat dinonaktifkan, perangkat tidak dapat mengantre input baru, dan perangkat fisik akan dinonaktifkan, jika memungkinkan.
Ketika aplikasi siap menerima input dari perangkat, aplikasi mengatur properti DataEventEnabled ke true. Aplikasi kemudian mulai menerima peristiwa DataEvent yang diantrekan, bahkan jika peristiwa DataEvent tersebut diantrekan sebelum properti DataEventEnabled diatur ke true.
Peristiwa data tambahan dapat dinonaktifkan dengan mengatur properti DataEventEnabled atau FreezeEvents properti ke false. Hal ini menyebabkan data input nanti diantrekan saat aplikasi memproses input saat ini dan properti terkait. Ketika aplikasi siap untuk lebih banyak data, aplikasi dapat mengaktifkan kembali peristiwa dengan mengatur properti DataEventEnabled ke true.
Input berbasis peristiwa dan Berbagi Perangkat
Jika perangkat input adalah perangkat yang digunakan secara eksklusif, aplikasi harus mengklaim dan mengaktifkan perangkat sebelum menggunakannya untuk membaca input.
Jika perangkat dapat dibagikan, satu atau beberapa aplikasi harus membuka dan mengaktifkan perangkat sebelum menggunakannya untuk membaca input. Aplikasi harus memanggil metode Klaim untuk meminta akses eksklusif ke perangkat sebelum Objek Layanan mengirim data ke dalamnya dengan menggunakan DataEvent. Jika input berbasis peristiwa diterima tetapi perangkat tetap tidak diklaim, input di-buffer hingga aplikasi mengklaim perangkat dan properti DataEventEnabled diatur ke true. Perilaku ini mempromosikan berbagi perangkat secara teratur antara beberapa aplikasi, secara efektif meneruskan fokus input di antara mereka.
Input berbasis peristiwa dan Penanganan Kesalahan
Perangkat memasukkan status kesalahan jika terjadi kesalahan saat menerima input berbasis peristiwa. Kemudian mengantrekan peristiwa ErrorEvent (yang berisi lokus InputData atau InputErrorEvent). Peristiwa ini tidak dikirimkan sampai properti DataEventEnabled diatur ke true untuk menjamin pengurutan aplikasi yang teratur. Setiap ErrorEvent menunjukkan salah satu dari dua kemungkinan lokus kesalahan mana yang bertanggung jawab:
- InputData –Digunakan jika kesalahan terjadi saat satu atau beberapa peristiwa DataEvent diantrekan. ErrorEvent melompat ke kepala antrean peristiwa untuk penanganan segera sehingga aplikasi dapat segera merespons dengan menghapus input atau memberi tahu pengguna tentang kesalahan tersebut. Kemudian selesaikan pemrosesan input yang di-buffer.
- Input – Digunakan jika terjadi kesalahan dan tidak ada data yang tersedia. Jika data input sudah diantrekan ketika kesalahan terjadi, errorEvent dengan lokus InputData diantrekan dan dikirim terlebih dahulu, maka DataEvents yang tersisa dalam antrean dinaikkan dan ditangani. Terakhir, ErrorEvent dengan nilai Input dikirim untuk menunjukkan bahwa antrean kosong dan tidak ada data yang tersedia. Penting untuk memperhatikan bahwa jika ErrorEvent dengan nilai InputData dikirimkan dan penanganan aktivitas aplikasi merespons dengan nilai Jelas, InputDataErrorEvent ini tidak dikirimkan. Biasanya, kesalahan ini dimasukkan di akhir antrean peristiwa.
Perangkat mungkin keluar dari status Kesalahan ketika salah satu hal berikut ini terjadi:
- Aplikasi kembali dari InputErrorEvent. Aplikasi kembali dari InputDataErrorEvent dengan nilai Clear untuk properti ErrorResponse.
- Aplikasi memanggil metode ClearInput .
Untuk beberapa perangkat, aplikasi harus memanggil metode untuk memulai input berbasis peristiwa. Setelah input diterima oleh Objek Layanan, maka biasanya tidak ada input tambahan yang akan diterima sampai metode dipanggil lagi. Contoh untuk perangkat yang menggunakan variasi input berbasis peristiwa ini, juga dikenal sebagai input asinkron, termasuk perangkat magnetic ink character recognition (MICR) dan Signature Capture. Properti DataCount dapat dibaca untuk mendapatkan jumlah peristiwa DataEvent dalam antrean.
Semua input dalam antrean dapat dihapus dengan memanggil metode ClearInput . ClearInput dapat dipanggil setelah Klaim untuk perangkat yang digunakan secara eksklusif atau Buka untuk perangkat yang dapat dibagikan.
Model input berbasis peristiwa umum tidak mencegah definisi kelas perangkat yang berisi metode atau properti yang mengembalikan data input secara langsung. Contoh variasi input berbasis peristiwa ini, juga dikenal sebagai input sinkron, adalah perangkat Keylock .
Jenis Kejadian
POS untuk .NET menerapkan peristiwa Unified Point Of Service (UnifiedPOS) sebagai peristiwa .NET standar dengan delegasi multicast. Peristiwa menginformasikan penerapan berbagai aktivitas atau perubahan dengan perangkat, seperti saat perangkat ditambahkan atau dihapus. Tabel berikut mencantumkan jenis peristiwa.
| Kejadian | Deskripsi |
|---|---|
| DataEvent | Peristiwa yang diangkat oleh Objek Layanan untuk memberi tahu aplikasi bahwa data input tersedia. |
| ErrorEvent | Peristiwa yang dimunculkan oleh Objek Layanan untuk memberi tahu aplikasi bahwa kesalahan perangkat telah terjadi dan bahwa respons yang sesuai oleh aplikasi diperlukan untuk memproses kondisi kesalahan. |
| StatusUpdateEvent | Peristiwa yang dinaikkan oleh Objek Layanan untuk memperingatkan aplikasi perubahan status perangkat. |
| OutputCompleteEvent | Peristiwa yang dinaikkan oleh Objek Layanan untuk memberi tahu aplikasi bahwa permintaan output yang diantrekan telah berhasil diselesaikan. |
| DirectIOEvent | Peristiwa yang diangkat oleh Objek Layanan untuk mengomunikasikan informasi langsung ke aplikasi. |
Objek Layanan harus menumpuk peristiwa ini pada antrean yang dibuat dan dikelola secara internal. Peristiwa dikirimkan secara first-in, first-out dan dikirimkan oleh utas layanan internal.
Kondisi berikut menyebabkan pengiriman peristiwa tertunda hingga kondisi diperbaiki:
- Aplikasi telah mengatur properti FreezeEvents ke true. Properti FreezeEvents memungkinkan peristiwa untuk diantrekan tetapi mencegah pengiriman mereka sampai FreezeEvents diatur ke false.
- Peristiwa ini adalah DataEvent atau input ErrorEvent tetapi properti DataEventEnabled salah.
Aturan untuk manajemen antrean peristiwa adalah sebagai berikut:
- Perangkat hanya dapat mengantre peristiwa baru saat perangkat diaktifkan.
- Perangkat mengirimkan peristiwa antrean hingga aplikasi memanggil metode Tutup atau, untuk perangkat yang digunakan eksklusif, metode Rilis . Ketika metode ini dipanggil, setiap peristiwa yang tersisa dalam antrean akan dihapus.
- Metode ClearInput menghapus DataEvents dan input DeviceErrorEvents (ErrorLocus = Input atau InputData).
- Metode ClearOutput menghapus output DeviceErrorEvents (Output ErrorLocus = ).