c#'a data geldiği zaman işlem yapan komut varmı?

Başlatan rogue_cn, 16 Eylül 2012, 02:08:02

muhittin_kaplan

Özellikten Kasıt Hangi olayda hangi kod bloguğunun etkileneceğidir. Ha işiniz yoksa algoritma (buda ne demekse) oluşturmaya bakın.

fatih6761

@muhittin_kaplan merak etme ben sınıfı inceledim public veya private metodların hiçbirinde veri alma sırasında tetiklenen olay yok.
Esas soruya gelince dataReceived sadece bool türü bi değişken. Veri geldiğinde True olacak. Alınan veri ise oku_tampon dizisinde bulunuyor. Zaten veri gelince şöyle bir düzenlemeyle:
// Bu en başa
using USBManagement;

//Bu global alana
UsbHidDevice dev = new UsbHidDevice();
const short VendorID = 0x1111;
const short ProductID = 0x1234;
byte[] yaz_tampon = new byte[64];
byte[] oku_tampon = new byte[64];

void BaglanmayiDene()
{
    if (dev.OpenPipe(VendorID, ProductID))
    {
        MessageBox.Show("Aygıt bağlı. Veri bekleniyor...");
        System.Threading.Thread tryRead = new System.Threading.Thread(new System.Threading.ThreadStart(VeriBekle));
        tryRead.Start();
    }
    else
    {
        MessageBox.Show("Aygıt bağlı değil...");
    }
}

void VeriBekle()
{
    bool dataReceived = false;
    while (!dataReceived)
    {
        if (dev.IsOpen)
        {
            dataReceived = dev.ReadPipe(ref oku_tampon, 64, TransactionType.Interrupt); 
            // XP öncesi kullanmadığınızı tahmin ediyorum...
        }
    }

    VeriAlindi();
}

void VeriAlindi()
{
    MessageBox.Show("Veri alindi...");
}

protected override void WndProc(ref Message m)
{
    dev.ProcessDeviceMessage(m);
    base.WndProc(ref m);
}

Kesme gibi çalışır. Yani veri gelinceye kadar bekler. Veri gelince VeriAlindi metodunu işletir. Eğer veri bekleme devam edecekse Thread nesnesini global tanımlayın ve istediğiniz yerde tekrar Start komutu verin...

rree

Buldum sitedeki devre tam istediğim gibi  isis dosyasında bir kaç yer değiştirince çalıştı.
https://320volt.com/pic18f4550-ccs-c-usb-termometre/

rogue_cn

Fatih verdiğin kodlar ve rota tam olarak devremi çalıştırdı :) çok çok çok teşekkür ettim Allah razı olsun kardeş. While(!received) {} bitişine while(received) ekledim tıkır tıkır çalışıyor ;)

fatih6761

Rica ederim. Faydlaı olabildiysem ne mutlu. Allah sizden de razı olsun...