Batasi input ke perangkat tertentu di C#

Saya memiliki dua perangkat (KeyBoard dan BarCodeScanner) dan 2 kotak teks (kotak teks 1 dan kotak teks 2).

Sekarang saya ingin membatasi pengguna bahwa dia hanya dapat menggunakan keyboard di kotak teks 1 dan pemindai kode batang di kotak teks 2.

Bagaimana ini mungkin di C#?


person Zain Ali    schedule 25.04.2011    source sumber
comment
kemungkinan duplikat Bagaimana caranya beri tahu apakah masukan keyboard berasal dari pemindai kode batang? Setelah kami mengetahui apa yang sebenarnya diinginkan orang ini, menurut saya hasil edit yang saya lakukan pada jawaban saya cukup komprehensif.   -  person Cody Gray    schedule 25.04.2011


Jawaban (3)


Anda harus melihat ini: Baca data dari Pemindai Kode Batang di aplikasi windows .net (C#)!

Jadi pemindai Anda mungkin mengirimkan karakter khusus untuk membantu Anda mengidentifikasi masukan tersebut dari pemindai, atau mungkin pemindai memberi Anda perpustakaan tambahan yang dapat Anda gunakan untuk mendeteksi peristiwa semacam itu. Anggap saja pemindai bertindak serupa dengan keyboard tanpa karakter khusus apa pun untuk membantu Anda mengetahui bahwa itu berasal dari pemindai dan tanpa perpustakaan tambahan apa pun dari situs produsen yang dapat Anda gunakan. Lalu yang bisa Anda gunakan adalah: mengukur kecepatan mengetik di event KeyDown di kotak teks kedua.

Saya menduga pemindai langsung memasukkan kode sehingga kecepatan mengetik Anda akan diukur.

Kemudian jika kecepatan mengetik lebih besar dari ambang batas (Misalnya untuk manusia rekor kecepatan dunia adalah sekitar 1000 karakter per menit) maka Anda menghapus teks yang dimasukkan. Ini hacky, tapi saya tidak punya ide yang lebih baik.

person Liviu Trifoi    schedule 25.04.2011
comment
urutan karakter khusus akan berbeda untuk setiap pemindai sehingga aplikasi saya akan bergantung pada model kode batang. Bisakah saya menggeneralisasikannya? - person Zain Ali; 27.04.2011
comment
Tidak 100% dapat diandalkan. Satu-satunya ide yang saya miliki adalah mendeteksi ini dengan mengukur ketika seseorang memasukkan karakter dengan kecepatan lebih besar dari kecepatan mengetik manusia seperti yang saya jelaskan di bagian kedua jawaban saya. Tapi itu hacky. - person Liviu Trifoi; 27.04.2011

Saya bekerja dengan pemindai kode batang hanya sekali. Di pemindai saya dimungkinkan untuk memaksanya menghasilkan urutan kontrol khusus sebelum meneruskan input ke komputer. Perilaku ini dikuasai melalui perangkat lunak asli pemindai. Tetapi saya tidak dapat menentukan detail apa pun karena saya tidak berpartisipasi dalam penyesuaian - rekan saya menyesuaikannya sebelum saya.
Dalam kasus saya, pemindai mengirim Ctrl+J sebelum tanggal pemindaian dan saya dapat menentukan dari mana sumber masukan berasal dari keyboard atau dari pemindai kode batang.

person Anton Semenov    schedule 25.04.2011

Saya kira itu tergantung pada bagaimana pemindai terhubung. Jika hanya dihubungkan di antara komputer dan keyboard, Anda kurang beruntung, karena tidak ada cara yang dapat diandalkan untuk membedakan input keyboard dari input pemindai.

Jika disambungkan secara terpisah pasti ada cara untuk mendapatkan data pemindai, mungkin melalui kelas yang disediakan perangkat lunak pemindai, jadi Anda harus menggunakan apa yang disediakan di sana dan memasukkan apa pun yang Anda terima ke TextBox2.Text. Sedangkan untuk menonaktifkan input Keyboard untuk kotak ini, Anda cukup cegah masukan apa pun dengan menyetel TextBox2.ReadOnly = true.

person takrl    schedule 25.04.2011