JEDI HidCtl de HidCtlDeviceData eventi hakkinda

Başlatan z, 06 Haziran 2012, 02:13:11

z

Jedi komponentinde usb ile ilgili HidCtl de HidCtlDeviceData eventini kullanabiliyormusunuz?

Bu evente ait procedur basligini olusturup icine basit bir kod ekleyip ardindan da bu satira breakpoint koydugumda bu procedurun hic calismadigini gordum.

Acaba bu procedurun aktif olmasi icin bir tanim mi yapmak gerekiyor?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

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

t2

Ben bir ara kullanmış olabilirim. Emin değilim. Galiba ayrı bir komponent hali oluyordu. Jedinin içinden ayıklanmış. HidKomopnente diye ismi vardı.

HidCtlDeviceData , cihazdan veri geldiğinde tetiklenen bir olaya benziyor. Cihaz ile bağlantı sağladıysanız periyodik olarak tetiklenmesi lazım. Diyelim endpoint interval 10ms, packet size 64  ise  bu olay 10ms de bir tetiklenir. tetiklendiği zaman içinden 64 bayt okunur.

Kendi demosu vardır onunla denediğinizde çalışmıyor mu?

YARARMAN


z

Alıntı yapılan: t2 - 06 Haziran 2012, 12:12:40
....Kendi demosu vardır onunla denediğinizde çalışmıyor mu?

Ne kendi demosundaki örneklerde ne de benim yazdıklarımda çalışmıyor. Zaten orjinal örneklerde bu özelliğe ait hiç kod yazılmamış. Bu özelliği object Inspector penceresinde hidCtl nin events tablosunda gördüm. Onu tıklayınca otomatik procedure u yazıyor. Yaptığım bu procedureun içine yerleştirdiğim koda koyduğum breakpointin takılmasını beklemekten ibaret.

Şimdiki ve geçmişte kullandığım tüm usb programlarında hep PC isterse usb cihaz veri yolluyordu. Şimdi ise usb cihaz verisini yollasın PC bundan haberdar olsun istiyorum.

Gerçi bu HID tanımlı cihazlarda mümkünmü bilmiyorum. Yaptığım, send report ile PC den cihaza 64 byte veri yollamak ve usb cihazın verdiği 65 bytelık cevabı yakalamak.

Buna ilave olarak bir de PCden usb cihaza ayrıca pipe1 üzerinden  64 bytelık veri gönderebiliyorum. Fakat bunlarda hep PC isterse veri alıp veriyor. Bu da event tipi yazılım yapmamı engelliyor.

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

z

Alıntı yapılan: ULAGA - 06 Haziran 2012, 12:13:07
Ben şahsen kullanmadım.
Ancak adamın birisi aşağıdaki gibi kullanmış.

http://www.codeforge.com/read/118328/LCDMain.pas__html


Bu orneği çalıştırabilen varmı? Bende sürekli hata veriyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

t2

#6
Belki sizin cihazda sorun olabilir.  Şu programla deneyebilir misiniz? Aygıt sürekli bilgi gönderiyor mu?

http://speedy.sh/ERxeA/hidbull.zip
Eğer fare, klavye ile deneme yaptıysanız bu program göstermez. genel amaçlı hid aygıtı olması gerek. pic18f2550 hid demosu vs olur.

z

Evet gönderdiğiniz program cihazımı görüyor.

Programın alt tarafındaki düğmeleri anlamadım.

Cihaz sürekli bilgi göndermiyor. Send report  talebine karşılık bilgi gönderiyor. Cihazım sürekli bilgi gönderiyor olsa bunu programınızda görmem gerekiyormu?



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

t2

#8
sürekli gönderiyorsa aşağıdaki pencerede gelen bilgiler görünür. sürekli göndermesini şu açıdan sordum. programdan bir bilgi bekliyorsa o yüzden gelen olmamış ve sizin programdaki olay tetiklenmemiş olabilir.

yok önce programdan bir data bekliyorsa bu program ile gönderirsiniz ozaman cihaz yanıt verirse gelen cevap aşağıda görünür.  önce cihazı sürekli gönderecek şekilde ayarlarsanız programda görünmesi lazım.

düğmelerin farklı işlevleri vardı şu an aklımda değil. bazısı galiba hex olarak gönderiyordu. kimisi altın kaplamalı gönderiyor olabilir. hangisi çalıştıysa bunun olayına bakıp aynı olaydan göndermek lazım program delphide yazılmıştır.

Karahan

Tam olarak ne istediğinizi anlayamadım. Picden PC ye veri almak mı istiyorsunuz yoksa bu işi illede data event ile mi yapmak istiyorsunuz. Eğer amacınız pic den pc ye veri almaksa örnek kodlar zaten çalışıyor fakat bu iş için data event'ını kullanmamışlar.

z

Şu anda zaten veri alıp gönderme ile sıkıntım yok. Fakat jedinin devicedata eventini harekete geçiremiyorum.

Uygulamamda PC, send report komutu ile cihazıma pipe0 üzerinden 64 byte yollayabiliyor. Cihazım bu verileri sorunsuz alıyor. Cihaz bu gelen verilere karşılık PCye pipe1 üzerinden 64bytelık bir cevap yolluyor. PC deki yazılımım bu verilerin gelip gelmediğini bilmiyor. Ancak get report fonksiyonunu çağırırsam veri gelip gelmediğini anlayabiliyorum. (Bu kısmı data ready gibi bir event ile yapabilmek isterim.)

Ayrıca PC yazılımı pipe1 üzerinden 64 bytelık bir başka paketi cihazıma yollayabiliyor. Cihaz bu veriyi alabiliyor. Ancak bu pakete cevap vermiyorum. (Vermek gerekiyormu bilmiyorum) Bu verileri  kart alıyor ve kullanıyor.

Bu kadarcı bir iletim bile büyük verileri aktarabilmem için yeterli ancak pc tarafında event oluşmaması canımı sıkıyor.

Geçen sene usb cihazın reportdescriptorunu bir cihazdan kopyala yapıştır yapmıştım. Şimdi bu descriptorun bana uygun olup olmadığını sorgulamaya başladım.



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

Karahan

Olabilir...data event'i denemedim ama HidCtlEnumerate de kararlı çalışmıyor bağlantı koptuğunda tekrar bağlanmakta ben de çok sıkıntı yaşamıştım  :( Allah kolaylık versin.

z

Enumeration ile hiç sıkıntı yok. Kabloyu sök tak, kartı resetle her defasında cihazı tekrardan buluyor.

Report descriptorle ilgili şüphelerim sanırım doğru.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

t2

Hocam bu işi doğru dürüst yapan component var. sana 100 usd olur :) galiba 2-3 senede bir aynı muhabbeti yaşıyoruz gibi geldi. Jedi denen şey seni yorar, gerer.  bedava komponent ama işe yaramaz.  sıkıntılı. 

z

Bu komponent ne is yapacak? Cihaz tarafindaki yazilim icin de yardimci olacakmi?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com