USB HID uygulamada bağlantı koptuğunda event yakalama

Başlatan fthsev, 20 Mart 2014, 11:48:27

fthsev

Evet umng.dll kütüphanesinde bende de aynı problem oluyor. Bir butona basmadan bağlantıyı kuramıyor veya kesemiyorum. HID cihaz takıldığında yada aniden çıkarıldığında program yakalayamıyor bağlantı devam ediyor gibi davranıyor.

fthsev

Sayın @yktronik sizin yüklediğiniz umng.dll kütüphanesini de denedim. Gene aynı o eventlar çalışmıyor. @LukeSkywalker' nin de dediği gibi mümkünse çalışan basit bir proje yükleyebilirmisiniz?

fthsev

Sayın @LukeSkywalker hocam UsbLibrary.dll kütüphanesinde nasıl data gönderiyoruz?

rree

Bende bir zamanlar aradım. Umng denedim eventleri çalışmıyor. Bir tane daha vardı Vendor id si ancak 0   değerinde çalışıyordu  başka değer atınca çalışmıyordu..Doğru düzgün çalışan bir dll bulursak sevineceğim.

fthsev

#rree mesaj attığınız sırada sizin eski konularınızı inceliyordum:) evet sizde bir sonuç elde edememişsiniz..

yusuffyk

hocam şu an denedim program hata veriyor simülasyonda. Simülasyonu durdurduğumda program çalışmayı durduruyor.
Birden fazla .dll ile çalışmıştım. Sanırım usblibrary.dll ile sonuç alıyordum. Kusura bakmayın karıştırmışım, benim hatam.
http://yusuffyk.com  ||  http://www.youtube.com/yusuffyk

rree

Önceki örneklerde usblibrary.dll    kotlar ile monte şeklinde görülüyor gibiydi  ama esas nesne eklentisinden çalışıyordu. nesne özelliklerinden Vendorid=0  ProductID=0 dı. Bunları bir değer attığınızda çalışmıyordu kontrol edin.

fthsev

Vedorid, productid değerlerine 0 değerini de verdim genede bağlayamadım. #LukeSkywalker hocam siz usblibrary.dll kütüphanesini tavsiye etmiştiniz. Varsa elinizde eventlerin çalıştığı basit bir proje paylasabilirmisiniz?

LukeSkywalker

Verdigim link usblibrary.dll'in son versiyonunu barindiriyor. Bütün işletim sistemlerinde calisiyor. (32-64). Vid pid değerleri farketmiyor, sorunsuz.

SpeedyX

Cümle olarak yazığımı bir de kod olarak yazayım, belki anlaşılır.
USBPort.USBDeviceAttached += new USBClass.USBDeviceEventHandler(USBPort_USBDeviceAttached);
USBPort.USBDeviceRemoved += new USBClass.USBDeviceEventHandler(USBPort_USBDeviceRemoved);

fthsev

@LukeSkywalker Hocam sizin verdiğiniz linkteki kütüphaneyi kullandım sayfadaki anlatımlarıda okudum ama gene HID cihazla bağlantıyı sağlayamadım. umng.dll kütüphanesinde bağlantı sağlayabiliyor veri alışverişi yapabiliyor ama eventları yakalayamıyordum. Rica etsem sadece bağlantının ve eventların olduğu çalışır bir proje yükleyebilirmisiniz?

fthsev

Arkadaşlar aşağıda gönderdiğim koda bakabilir misiniz? UsbLibrary.dll kütüphanesini kullandım. HID cihaz bağlandığında program tepki vermiyor. Acaba nerede bir yanlışlık var?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using UsbLibrary;

namespace Deneme
{
    public partial class Form1 : Form
    {

        bool durum = false;

        public Form1()
        {
            InitializeComponent();
           
        }
        private void Form1_Load(object sender, EventArgs e)
        {

            this.usbHidPort1.ProductId = Int32.Parse("1111", System.Globalization.NumberStyles.HexNumber);
            this.usbHidPort1.VendorId = Int32.Parse("1111", System.Globalization.NumberStyles.HexNumber);
            usbHidPort1.CheckDevicePresent();
            if (durum)
            {

                richTextBox1.Text += "USB Bağlantısı Kuruldu" + "\n";
            }
            else
            {

                richTextBox1.Text += "USB Bağlantısı Bekleniyor"+"\n";
            }
            
                
        }

        protected override void OnHandleCreated(EventArgs e)
        {
            base.OnHandleCreated(e);
            usbHidPort1.RegisterHandle(Handle);
        }
        protected override void WndProc(ref Message m)
        {
            usbHidPort1.ParseMessages(ref m);
            base.WndProc(ref m);
        }

        private void usbHidPort1_OnDeviceArrived(object sender, EventArgs e)
        {

            richTextBox1.Text += "USB Bağlantısı Kuruldu" + "\n";
            durum = true;
        }

        private void usbHidPort1_OnSpecifiedDeviceArrived(object sender, EventArgs e)
        {

            richTextBox1.Text += "USB Bağlantısı Kuruldu" + "\n";
            durum = true;
        }  
    
    }
}

fthsev

Gönderdiğim kodla ilgili bir fikri olan yok mu?

fthsev

Arkadaşlar konuyu ilk açtığımda c# USB HID uygulamasında kullandığım umng.dll kütüphanesinde event yakalama problemi olduğunu cihazın takılıp çıkarılma durumlarında algılamadığından bahsetmiştim. Sağolsun cevap veren arkadaşlar bu kütüphanede eventların çalışmadığını bunun yerine usblibrary.dll kütüphanesini kullanmamı tavsiye ettiler. Ama umng.dll kütüphanesini ben daha kullanışlı buluyorum. Bunu için iki kütüphaneyi beraber kullanma kararı verdim bilmiyorum daha önce deneyen var mı ama denedim. Evet ikisi beraber çalıştı. Cihaz takıldığında, çıkarıldığında ve data geldiğinde oluşan eventları usblibrary.dll ile cihaz ile bağlantı kurma, kesme(open pipe,close pipe) ve data alışverişini umng.dll kütüphanesi ile yaptım. Bir sorun gözlemlemedim. Acaba ileride şu an farketmediğim problemler çıkabilir mi? veya bu şekil bir kullanım mantıklı mı? Birde usblibrary.dll kütüphanesini çalışan bri uygulama üzerinde değişiklik yaparak kullanabiliyorum. Yeniden yaptığımda herşey birebir aynı olsa bile çalışmıyor. Bunu hakkında bir bilgisi olan var mı?

LukeSkywalker

umng.dll'de veri geldiğinde de event oluşmuyor. Bu yüzden kullanışlı değil.