usb ile haberleşme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
zero_g
Üye
Mesajlar: 56
Kayıt: 11 Şub 2004 11:52

usb ile haberleşme

Mesaj gönderen zero_g »

slm arkadaşlar ne zamandır uğraşıyorum bir türlü çıkar yol bulamadım
benin yapmak istediğimi kısaca özetleyeyim Bir bilgisayara 2 adet usb klavye takıp bu klavyelerden sadece seçtiğim birtenesinden yazılanları tespit etmek istiyorum ama 2 klavyede aynı anda faal olacak şekilde düşünmek gerek aslında kısacasu usb portundan veri almak istiyorum. com ceviriciler işime yaramaz şimdiden söylemek isterim fikirlerinizi bekliyorum şimdiden tşk ederim.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Zor bir konu. Standart klavyele değil de özel üretim arabirimler olsaydılar her tuş için ekstra bir öncü kod gönderilip hangi klavyeden geldiği anlaşılırdı.

- Şimdi klavyeden gelen virtual key'lerde SHIFT olayı var ya. Acaba diyorum, bir klavyenin NUMLOCK'u açık diğer kapalı olsa, gelen key'de bu bigi var mıdır. Varsa sorun kalmaz, ayırt edici özellik olarak kullanılabilir bence... :idea:

- Ya da klavyelerden birine bilerek zarar versen Yani sürekli CTRL basılı kalsa ve diğerinde de CTRL tuşunu kopartıp atsan da kimse basamasa... Çok mu hayalci oldum :o

- Beyin fırtınası olsun diye yazıyorum bunları. Saçma gelebilir ama hep bu tip ilk akla gelen basit fikirler sayesinde gün ışığına çıktım buza zamana dek... :wink:

// EK //

MSND'ye baktım şimdi.. İşine yarayacağını değerlendirdiğim (daha kuralı :roll: ) bir iki şey var...

Ref : http://msdn2.microsoft.com/en-us/library/ms892484.aspx


- Bir de Micro$oft'dan device driver yazan birisi işlemi şöyle tarif etmiş...
@Steve Schrock - Windows CE Device Drivers yazdı:I briefly alluded to this before, but I'll explain it more detail. Here are
the steps for getting a character from your USB HID keypress:

1. kbdhid driver gets the HID usage for key that was pressed
2. kbdhid converts the usage to a PS/2 AT scan code using its usage->scan
code tables
3. kbdhid calls MapVirtualKey which calls into the Layout Manager to convert
the scan code to a vitual key based on the current keyboard layout that is
selected in the Layout Manager
4. kbdhid calls keybd_event() with the vitual key
5. Some time later, GWES takes that event off its input queue
6. GWES calls into the Layout Manager to convert the virtual key to a
Unicode character based on the current keyboard that is selected in the
Layout Manager
7. GWES sends the WM_KEYxxx message and WM_CHAR message to the application
with focus


As you can see, the localized tables in the Layout Manager are accessed both
to get the virtual key and the final character. Probably the only reason
that you would need to modify kbdhid is if you wanted to add usage->scan
code conversions for non-standard keys or if your keyboard needed some kind
of special remapping like AltGr (I have already described how to add AltGr
support in a previous thread. Let me know if you need it but cannot find
it.).


Like I said before, there is nothing special about what the kbdhid driver is
doing in terms of converting keypresses to characters. An application could
do all the same things (calling MapVitualKey and keybd_event, that is).


--
Steve Schrock
Windows CE Device Drivers

- Son olarak da bunun mümkün olmadığını iddia eden bir thread
@Andrew Pearson yazdı:The USB host controller will launch a new HID device driver instance for
each of the keyboards. Each of these drivers will use keybd_event() to
inject key presses into the input system. However, there is no way to
track where the key press originally came from.

This question has been discussed before. One way to address it would be to
have the HID drivers send custom messages to applications with additional
information identifying the keyboard. You can probably make this work if
you control the application and the platform. I don't believe there is
currently a more portable way to solve it.


Hope this helps,


Andrew Pearson

- Başarılar..
Resim
Resim ....Resim
Kullanıcı avatarı
uğur alkan
Üye
Mesajlar: 227
Kayıt: 29 Ağu 2004 04:49
Konum: Istanbul

Mesaj gönderen uğur alkan »

VENDOR_ID = ****;
PRODUCT_ID = ****;

öncelikle usb bir cihazla haberleşebilmek için cihazın bu iki koduna ihtiyaç duyacaksın.

gerisi bir DLL dosyanın işi.... bu iki kodu bilmiyorsan biraz zor haberleşirsin.

benim bir uygulamam oldu ve şu an kullanıyorum ancak bu usb den haberleşen özel bir aygıttı ve Hid.dll li kullanıyordu.

viewtopic.php?t=17406&start=0&postdays= ... t=vendorid

burada usb porta istediin cihaza yazabiliyorsun ve istediğin cihazdan bilgi okuyabiliyorsun. Tabiki Vendor Id ve Product Id yi bilmek koşuluyla ...
HID.dll nin kullanımı ise ....


http://www2.hawaii.edu/~hermany/api.htm bu şekilde kullanılıyor
Umarım yardımı olur.
Bazen sert rüzgarlar eser başını öne eğmekten asla korkma
Cevapla