Merhabalar
Elimde bir adet usb barkod okuyucu mevcut. C# ta cihaz barkodu okuyunca imlecin bulunduğu textbox a barkodu yazıyor fakat benim istediğim ise barkodu textbox a yazdırmak değil bir değişkene almak. Bu durum için serialport nesnesi oluşturup datareceived olayına string barkod=mysp.readline();
satırını yazıyorum. Fakat gelen veriyi yakalayamıyorum. Çözüm önerisi olan var mı?
Seriportla ne alakan varki, textbox a yazdır sonra değişkene at.
Muhittin hocam dediğiniz mantıklı fakat text e yazdırmak için sürekli imleci kontrol etmem gerekcek o anda kullancı form üzerinde başka bir yere tıklamış olabilir eğer imleç textbox ta değilse barkod oraya yazmıyor. Olması istediğim durum imleç nerde olursa olsun cihazdan veri geldiğinde değişkene almak daha sonra label yada textbox a yazmak.
Datareceived fonksiyonuna girdiğinden emin misiniz? Oraya bir messagebox koyarsanız veriyi alamasanız bile gelen her byte için mesaj kutusu çıkması gerekir. Eğer çıkmıyorsa şu resimde şekilde düzenleme yapın:
(http://s22.postimg.cc/8hsew9o9t/csharp_kesme_sorunu.png)
@muhittin_kaplan'a katılıyorum. Texbox'a o veri nerden geliyor ise aynı işlemi bir değişken için de yapabilirsiniz.
Konunun seriportla alakasi dolayisiyla serial...datarec olayiylada alakası yok. Yapilmasi gereken bir başka treath oluşturulup program normal calismasi kesilmeden keypress keydown gibi bir kontrol yapilacak.
Hocam cihaz pc de klavye olarak görünüyor veriyi gönderdikten sonra enter a basıyor dediğiniz gibi bunu dinleyerek işlem gerçekleşebilir peki bu durumda form açıkken cihaz okuma yapmadığı zaman kullanıcı enter a basarsa bu kez belirlediğim değişkene farklı hatalı değer girmiş olmaz mı?
Meftun hocam cihazın kullandığı portu tutturamadığımdan datareceived olayı çalışmıyor :)
Üstad verdiğim adresteki yazıyı incelemenizi tavsiye ediyorum.
http://nicholas.piasecki.name/blog/2009/02/distinguishing-barcode-scanners-from-the-keyboard-in-winforms/ (http://nicholas.piasecki.name/blog/2009/02/distinguishing-barcode-scanners-from-the-keyboard-in-winforms/)
Alıntı yapılan: micelow - 18 Eylül 2014, 10:17:31
Meftun hocam cihazın kullandığı portu tutturamadığımdan datareceived olayı çalışmıyor :)
Aygıt yöneticisi/bağlantı noktaları(COM ve LPT) kısmında görükmesi lazım
Meftun hocam Usb barcod okuyucular HID klavye olarak tanıyor.
micelow'da bu yoldan gitmek zorunda bendeki usb barkod okuyucunun
Vendor ve Product id'leri bu şekilde.
(http://s16.postimg.cc/b6pz0h4it/barkodhid.png)
Enter (crlf) gonderir default degerdir bu. Ama degistirilebilir. Aslinda yapmak istegini biraz acarsan fikir verebiliriz.
Hocam yapmak istediğim ilk anlattığım gibi barkod okuyucudan gelen veriyi bir değişkende tutmak istiyorum. Bu değişkeni kullanarak veritabanında işlemler yapılcak. Barkod okutularak bir ürün adı ile veritabanına kaydolacak ve daha sonra kullanıcı ürünü okuttuğunda barkod numarası ile sorgu çekilerek ekranda ürünün barkodu değilde adı yazacak.
makdeniz' in dediği gibi barkod okuyucu pc de HID klavye.
Okunacak Barkodların Yapısı Standartmı (ean13 ,ean8 gibi)
yoksa kullanıcı herhangi bir durumda herhangi bir anda sonlandırma (enter -crlf- gibi) karakteri gönderirse yanlış olur. eğer standartsa o satndart kod okunmuşmu kontrol edilir, yoksa yapılması istenen işlem yapılır.
ama neden textbox vb bir kontrolde yapmak istemiyorsunuz. imleç textbox a durur kod okutulur sorgu yapılır
Textbox'ı unutun. Demek ki arkadaşın uygulamasında textbox olmadan kullanılması gerekiyor.
Listen for a key when the application is not focused (http://stackoverflow.com/questions/5065817/listen-for-a-key-when-the-application-is-not-focused)
Ayrı bir thread içerisinde keyboard dinleyerek direk değişkene kaydedilebilir.
Muhittin hocam dediğin yola doğru geliyorum yavaş yavaş. Cihaz okuduğu sayıları tek tek gönderiyor ve en son entera basıyor. Bir textbox yerleştirip keypress olayı ile işlemleri yapıcam artık şimdilik çözüm bu.