C# USB'den PIC'e string veri yollama[Çözüldü]

Başlatan baran123, 13 Kasım 2014, 21:33:33

baran123

Hayırlı akşamlar,

umng.dll ile c# da bir arayüz hazırlıyorum 18f4550 ile baglantı kurup pıcı kontrol edıyorum port vs ama string bir veriyi lcd de gösterme konusunda takıldım daha doğrusu anlamadım işin mantığı hakkında biraz bilgi verebilir misiniz ? Buldugum bır ornek assagıda var ama calıstırmayı basaramadım bır yardımcı olursanız cok memnu olurum ıyı calısmalar.

(Proteusda virtual usb ile simülasyon yapıyorum)

private void btnSend_Click(object sender, EventArgs e)
        {
            if (my_hid.IsOpen)
            {
                if (textBox1.Text == "")
                {
                    MessageBox.Show("Göndermek istediginiz Yaziyi giriniz");
                }
                else
                {
                    int adet;
                    string s = Convert.ToString(" " + " " + textBox1.Text).TrimEnd() + " ";
                    
                    giden_buffer = UnicodeEncoding.UTF8.GetBytes(s);   
                    adet = s.Length - 2;           
                    giden_buffer[0] = (byte)adet;
                    giden_buffer[1] = (byte)'W';

                    if (my_hid.IsWindowsXpOrLater)
                    {
                        my_hid.WritePipe(giden_buffer, TransactionType.Interrupt);
                        my_hid.WritePipe(giden_buffer, TransactionType.Control);
                    }

                    else
                    {
                        my_hid.WritePipe(giden_buffer, TransactionType.Control);
                    }
                }
            }
            else
            {
                label1.Text = "Cihaz ile bağlantı yok!";
            }
        } 


if(isaret=='W')
               {
                  printf(lcd_putc,"\f");
                  for( x=2;x<=kactane;x++)
                  {
                     printf(lcd_putc,"%c",gelen_paket[x]);// LCD'ye yaziliyor...
                  }
               }

t2

#1
işin mantığı tam şurada.

IsWindowsXpOrLater ne demek? xp veya daha yeni sürüm windows kullanıyorsan demek
o zaman ne olacak?
aşağıdaki işlemler nedir?
                        my_hid.WritePipe(giden_buffer, TransactionType.Interrupt);
                        my_hid.WritePipe(giden_buffer, TransactionType.Control);
isminden belli giden_buffer adında bir buffer varmış o gönderilecek. buffer ne? bayt dizisi. zaten baytsız bir data olmaz orada.


TransactionType.Control ve TransactionType.Interrupt. bunlar usb iletişiminde kullanılan tipler. bir de bulk ve isochronpus vardır onlar HID de kullanılmaz.
WindowsXpOrLater değilse ne olacak?  sadece kontrol tip gönderilecek. sebebi ne acaba. aslında burada önemli bir tespit olsa gerek. XP öncesi widnows HID aygıtında sadece Control transferini destekliyor olsa gerek. aklımızda bulunsun 98de çalışmaz gibi. bir yerde orijinal 98 CDleri olacaktı. hologramlı.

                    if (my_hid.IsWindowsXpOrLater)
                    {
                        my_hid.WritePipe(giden_buffer, TransactionType.Interrupt);
                        my_hid.WritePipe(giden_buffer, TransactionType.Control);
                    }

                    else
                    {
                        my_hid.WritePipe(giden_buffer, TransactionType.Control);
                    }


mesaj birleştirme:: 13 Kasım 2014, 21:55:01

Buldugun bır ornek assagıda var ama calıstırmayı basaramadım

şimdi sizin örneği çalıştırmak için  c# projewsi uydurmamız devreyi ve proteus çizimini komple uydurmamız gerek. 

yaptık çalıştı desek işinizi görür mü.

baran123

Hocam bilgiler için çok teşekkürler.Oradaki xporlater bayağı ilgicmis:) ben gereklı bır fonksıyon zannedıp gectım orayı:)

Alıntı Yap"şimdi sizin örneği çalıştırmak için  c# projewsi uydurmamız devreyi ve proteus çizimini komple uydurmamız gerek. yaptık çalıştı desek işinizi görür mü."
ccs c kodunu yanlıslıkla baska bır swıtch ıcıne yazmısım alta alta fazla case olunca karıstırmısım sımdı calıstı çok sağolun:)