HID Descriptor tanimlama programi

Başlatan z, 06 Haziran 2012, 21:50:40

z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ErsinErce

HID Descriptor tanımlarını oluştururken yol gösterebilecek uygulamalı açıklamasını yapan güzel bir kaynak

http://www.frank-zhao.com/cache/hid_tutorial_1.php

t2

Genel amaçlı tüketici denetim aygıtı diye bir şey var. input output 64 bayt. işte bunu kullanıcaz.   Descriptor  size özel veya bilinen bir tanımlama yapmanızı sağlar. aslında hiç de bir işe yaramaz. aygıtınızı joystik olarak göstertmek isterseniz, veya bilinen başka aygıt volum kontrol düzeneği olarak göstertmek isterseniz işe yarar,

Böyle göstermeniz, ayrıca program kullanmayacaksanız gerekli olur. windows aygıtı bulsun denetim masasında görünsün ayrıca programı olmasın derseniz işe yarar. kıl bir şekilde windows menülerinden ayarlarsınız.

z

Alıntı yapılan: ErsinErce - 06 Haziran 2012, 23:00:33
HID Descriptor tanımlarını oluştururken yol gösterebilecek uygulamalı açıklamasını yapan güzel bir kaynak

http://www.frank-zhao.com/cache/hid_tutorial_1.php

Anlamaya calisiyorum fakat olmuyor.

@T2

Sana hak veriyorum. Fakat report desriptoru kirpamazmiyiz. Kafa karistiran gereksiz satirlar kaldirilip atilabiliyorsa atalim.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhittin_kaplan

Hocam Muhtemel İncelemişsindir.
http://www.lvr.com/usb.htm

usb description a gelince kırpılacak yer bulamadım ben.

ErsinErce

#5
Vendor Usage ile ilgili örnek (sf.31) ve kullanımları açıklayan bir app note hocam bir de buna gözatın isterseniz

http://www.silabs.com/Support%20Documents/TechnicalDocs/AN249.pdf

ayrıca pudn de usb osiloskop projesinin hid descriptor'unu yakaladım bu şekilde yazmışlar bunu da bir inceleyin hocam isterseniz

6, 0, 255,    // Usage Page = Vendor Defined
9, 1,            // Usage = IO device
0xa1, 1,       // Collection = Application
0x19, 1,        // Usage minimum
0x29, 8,        // Usage maximum
0x15, 0x80,        // Logical minimum (-128)
0x25, 0x7F,        // Logical maximum (127)

0x75, 8,        // Report size = 8 (bits)
0x95, 8,        // Report count = 8 bytes
0x81, 2,        // Input (Data, Var, Abs)
0x19, 1,        // Usage minimum
0x29, 8,        // Usage maximum
0x75, 8,        // Report size = 8 (bits)
0x95, 8,        // Report count = 8 bytes
0x91, 2,        // Output (Data, Var, Abs)
0xc0            // End Collection


Tam adres;
http://read.pudn.com/downloads132/sourcecode/others/564199/DIY%20USB%20PC%20OSC/usb_desc_hid%208-byte.h__.htm

Edit: descriptor'un alındığı orijinal adres http://semifluid.com/2006/03/27/pic18f2550-usb-hid-oscilloscope/

Ayrıca VB kodları da mevcut

t2

Alıntı yapılan: z - 07 Haziran 2012, 01:20:49
@T2
Sana hak veriyorum. Fakat report desriptoru kirpamazmiyiz. Kafa karistiran gereksiz satirlar kaldirilip atilabiliyorsa atalim.
report desriptorun içeriğini ben pek anlamıyorum  ne desem boş. logical minimum ne olaki?
Bir yerde Usage minimum = 1  demiş. bunu 8 yapsak işlemler güzelleşir, daha hızlı mı tamamlanır?
feature yerine report kullanmak ne demek birinin diğerine üstünlüğü olur mu? hiç bir fikrim yok.

t2

Report count, HID_INT_IN_EP_SIZE  ve HID_INT_OUT_EP_SIZE ile eşit olması  gerekiyor. bu bilgi işinize yarayabilir.

muhittin_kaplan

jan axelson (ben erkek sanıp mail atmıştım. bayan cevap vermişti. :) ) kitabını şiddetle tavsiye ederim..

pisayisi

jan axelson gibi adamların kitabı yüzünden millet hid mid nedir öğrenemedi gitti. Şunu bu işi bilerek izah edecek biri daha çıkmadı. Ben bodosloma pratik uygulamalarla başlamanızı basitten zora doğru ilerlemenizi öneririm.
Murat

t2

#10
Hidin bilinecek uzmanlaşılacak hali yok. Sana gerektiği kadar kağıtlara bakıp veya hazır koddan kopyalayıp descriptor kullanılacak. Hid uzmanı filan yok.  ezbere bilinecek şeyler değil. hid 1.0 hid 1.10 hid 1.11 gibi çeşitli versiyonlar var. oku oku bitmez. ne iişe yarayacak. bunu kim niye anlatacak. 1 kere lazım olacak şey. descriptor mu lazım yap kullan. artık sabah akşam kalkıp hid özelliklerini ezberlemek anlatmak gerekmez. bir kere lazım olur. bin kere kullanılır.

bazı önemli bilgiler şunlar:

hid interface'i  interrıupt transfer yapar başka türlü olmaz. Bulk olmaz. isochronous olmaz.

Hid aygıtta  transfer için 1 end point kullanılır. 2. bir endpoint açayım onunla da transfer yapayım dersen olmaz. 2. interface'ler ilave etmek gerekir.  hidmakerFS denen program bu nu yapmaktadır.

hidin  basiti 1input 1 output  endpointi olan halidir. 64 bayt gönderir 64 bayt alabilirsin.
karmaşık olanı ise en az 2 interface  sahibi olan halidir.

z

#11
Alıntı yapılan: t2 - 07 Haziran 2012, 22:29:27.....hid interface'i  interrıupt transfer yapar başka türlü olmaz. Bulk olmaz. isochronous olmaz.
Hid aygıtta  transfer için 1 end point kullanılır.  hidin  basiti 1input 1 output  endpointi olan halidir. 64 bayt gönderir 64 bayt alabilirsin....

Peki ben nerede hata yapiyorum.

PC tarafinda usb cihazdan talep ederek, Get report ve Get Feature ile  64 byte veri alabiliyorum. Bunun disinda usb cihazdan veri alma sekli varmi? Varsa adi ne?

EDIT: Galiba ben hep control transfer yaparak veri alis verisi yapiyorum. Halbuki HID cihazlarda interrupt transferi de var. Fakat bu transfere ait tek bir satir kodum dahi yok.
Gelisi guzel bir zamanda endpoint 1 den PC ye veri yollasam olurmu?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

t2

#12
Get report ve Get Feature nedir nasıl kullanırım bilmiyorum.    pic için konuşursak derleyicideki hazır  gönderme komutları ve örnekleri çalışıyor.

Protonda 
dene:
usbout 1, buffer0, 64 ,dene
diyoruz kendisi 1 nolu endpointten gidiyor. Pakedi yerine yerleştirene kadar dene etiketine dallanıyor. buffer yüklendikten sonra BU transfer tamamlandı anlamına gelmez. sıraya konmuştur. interval oluştuğunda HOSTtan çağrı geldiğinde yerine varacak demektir. Benim anladığım bu.

HID tanımı gereği sınırlama var. Hidde interval minimum 1ms olabilir. buffer 64 bayt olabilir. yani 1ms de 64 bayttan daha fazla veri gitmez.

"USB cihazdan veri alma şekli" daha genelş bir ifade olsa gerek. belki de Get report ve Get Feature  dediğiniz komutlar sadece hid için kullanılabilir.

OG

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com