C# bir projede ağız içi Kamera ile entegrasyon yapmam gerekiyor. Kameradan görüntü almak ve işlemek konusunda sıkıntı yok. Fakat gel gelelim kameranın üstündeki görüntü almayı saplayan snap tuşu hiç bir evente düşmüyor. Cihaz usb p&p çalışıyor. Usb sniffer ile gelen verileri izlediğimde aşağıdaki resimdeki gibi 4byte lık bi data geliyor. Usb portundan bulk data okumayı araştırdım ama kaynaklar çok kıt. c# serialport olaylarını inceledim. Portları listelettiğimde bir port dönüyor(COM3) onunda benimle bir alakası yok. c#ta bütün eventları yakalamak için WndProc kullandım, detaylıca uğraştım. Ben tuşa bastığımda bir hareket yok, hiç bir şekilde düşmüyor. Ne yapıcam bu tuşu nasıl yakalayacam mantıklı bir yöntem tavsiye edebilirseniz memnun olurum. Usb'den gelen veriyi okusam yine halletcem ama oda sıkıntılı başka kamera olduğunda onuda manuel kontol etmem gerekcek, ektra kod güncellemesi falan. Halletcem dediysem veri okumayla ilgilide pek yol katedemedim. libusbdotnet kullandım. libusb driver kullanmadan device'ı görmüyor falan. Sıkıntılı müşteriye kurulumu entegrasyonu çetrefilli olacak.
Not: Tuş çalışmıyor mu diye düşünmeyin. Amcap programında bastığımda görüntü yakalıyor. Amcap'in source code'unu buldum. C++'mış oda. Artık olmadı çalıştıramasamda onun source code'unu inceleyeceğim.
Şimdi İlk Dediğin Şey, Kamera Plug&Play.. Kendi Sürücüsünü, Yazılımını Kurmadın. Buda Demek Oluyor Ki; O Kameranın Üzerindeki Snap Tuşu Aslında Sisteme Bir Mesaj Gönderip, Kameradan O Anlık Görüntünün Alınmasını Sağlıyor.
Yani Demek İstediğim Şey, (Tam Olarak Olmasada, Örnek Verme Adına) MultiMedia Tuşlu Klavyeler Vardır.. Örneğin Logitech MK700.
Bu Klavyenin Üzerinde Bir Sürü Tuş Var. Ve Sen SetPoint'i Kurmadan (Ses +,-, Kapama Play, Prev, Next Gibi MultiMedia Tuşlarını Kullanabiliyorsun) Ama FN Kombinasyonlarını SeTPoint'i Kurmadan Kullanamıyorsun. Yani MultiMedia Tuşlarıda Zaten Windows'un İçinde Bir Şekilde Tanımlılar.. Sisteme Bir Mesaj Gönderip, Ses İle İlgili İşlemler Yaptırabiliyorlar.
Acaba Senin WebCam Snap Tuşunu Böyle Yakalaman Mümkün Olabilir Mi? (Böyle Derken, Git KeyStroke'ları Oku Demiyorum Tabii Ki :) )
İstediğin şey sandığından çok daha complex çözüm ister. Eğer bir cihazla ne şekilde olursa olsun haberleşmek istiyorsan mutlaka çekirdekde haberleştiğin bir sürücü olmalı. Senin uygulaman sürücü ile haberleşecek, sürücü cihazdan gelen verileri okuyacak ve uygulamana bildirecek. Bunun için hazır kütüphaneler oluyor. USB konusunda çok da sıkıntı yaşayacağını zannetmiyorum.
Cevaplarınız için teşekkür ederim. Örnek visual studio 2013 gerektiriyormuş bir yılla kaçırdım bende 2012 vardı. 2013'e güncelleyip örneği test edeceğim.
Ecivas mantıklı düşünmüşsün fakat driver'a bağımlı kalmadan bu işi halletmek istiyorum. Müşteriden aldığım ağız içi kamera'nın driverı yok mesela. Varsa da bulamadılar. O olmadan da bu işi halledebilirim diye düşünüyorum. Sawer'ın önerdiği örnek aradığım şey sanırım, bir test edeyim istediğimi karşılıyor mu buraya da yazarım.
Çözümü buldum arkadaşlar. AForge.NET diye bir kütüphane var, onun bir örneğinde rastladım.
sawer'ın verdiği örneği inceleyemedim, visual studio 2013 gerekiyordu. İndirmeye çalıştım fakat yeni çıktığı için, serverlar kasılmış durumda 20kb ile indiriyor. Baya bi sürer o artık. :)
Nasıl yapıldığını anlamak için müsait bir zamanımda AForge.NET kütüphanesinin kaynak kodunu inceleyeceğim. Kısa bir çözümü varsa sizlerle yine payaşırım. Arayan arkadaşların bulabilmesi için.