Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Visual C# => Konuyu başlatan: Gökhan BEKEN - 15 Ağustos 2011, 17:40:27

Başlık: c# USBHID komutları yardım
Gönderen: Gökhan BEKEN - 15 Ağustos 2011, 17:40:27
Değerli arkadaşlar gelin şu komutları analiz edelim,
İnternette o kadar bakmama ramen Türkçe bir anlatım yok, Adil Fatih KİREMİTCİ nin çok güzel bir kitabı var ama visual basic için anlatmış.
İnternetteki paylaşılan programlar karışık geldi.
Sıfır bilgisi olanlar için hangi komut ne işe yarar, bağlantı kurarken hangi komutlar kullanılır, veri alma ve veri gönderme için hangi komutlar kullanılır bunlar için çok küçük program parçaları olsa yeter.
USB HID kullanmayı düşünüyorum dll yi nereye yazacağız, hangi protokolü kullanmamız gerektiğini nereye yazacağız.
visual c# 2008 kullanılıyorum
Yardımcı olursanız sevinirim.
Başlık: Ynt: c# USBHID komutları yardım
Gönderen: t2 - 15 Ağustos 2011, 17:48:03
Hazır yapılmışı burda.
http://www.codeproject.com/KB/cs/USB_HID.aspx

Bu da karışık gelirse daha basiti olmaz.

hangi komut ne işe yarar, bağlantı kurarken hangi komutlar kullanılır bunlar gayet karışık şeylerdir. herkes uğraşmaz ve anlamaz. bunun yerine hazır yapılmış dosyalar  kullanılır.
Başlık: Ynt: c# USBHID komutları yardım
Gönderen: Gökhan BEKEN - 15 Ağustos 2011, 18:19:18
Teşekkürler, inceliyorum
Başlık: Ynt: c# USBHID komutları yardım
Gönderen: Gökhan BEKEN - 16 Ağustos 2011, 00:24:15
Yazdığım program: http://hotfile.com/dl/126913342/b350000/mgb_usb_led_kontrol.rar.html
USB dışında herşey hazır, 0 ila 255 arasındaki sayıları alıp gönderecek yapmak istediğim bu.
Şu an butonlar için 255 a kadar verilen bir sayıyı bitlere ayırıp gösteriyor, yani sayıyı el ile giriyorum bunu cihazdan okuyacak,
diğer kısım ise checkbox ile tıklanan bitleri decimal sayıya çeviriyor bu çevrilen sayı ise cihaza gönderilecek.

Sizin dediğiniz projeyi indirdim öncelikle visualstudio 2008 ile derleyemedim, hata veriyor. Projenin komutlarını inceledim ama pek anlamadım, Bana sadece bağlantı için olan gerekli kısmın komutları ve bu komutların hangi kısma yazılması gerektiği lazım şimdilik.
Bağlantı kuruldu veya kurulamadı diye geri bildirim yapacak. Bu kısmı hallettikten sonra data alışverişine geçeceğim. Hazır proje bendede çok var ama hepsi ayrı telden, bana c# lazım genelde visual basic kullanmışlar,c# olanların ise çoğunun sürümü farklı olduğu için derlemiyor,
Hazır program yerine kodlarda yardımcı olur musunuz?

yaptığım programdan görüntü:
(http://s4.postimg.cc/9pwnjvbr3/mgb_usb.jpg) (http://www.postimg.cc/)
image uploader (http://www.postimg.cc/)
Başlık: Ynt: c# USBHID komutları yardım
Gönderen: t2 - 16 Ağustos 2011, 00:51:11
Profesyonel amaç yoksa, hobi işi ise, bu yukarıdaki gibi örneklerle idare edebilirsin.
Bağlantı kuruldu veya kurulamadı diye geri bildirim yapacakEğer ticari bir iş ise,  HID cihaz kullananlar için aynen söylediğin gibi çalışan hap gibi activex nesnesi yapıyorum. Güzel çalışıyor. Bunu yazarken bazı ticari hazır kod parçacıkları kullandığım için derin ksımını ben de bilmiyorum. Ama netice güzel ve sağlam.

Benim nesnede C# örneği vs 2008 veya 2010 fark etmez. delphi vb 6 ile de çalışır. Activex süper. Tavsiye ederim. Kullanılacak activex nesnesi multithread çalışmalı programına hiç sıkıntı vermemeli.

Böyle ücretsiz bir nesne varsa bulabilirsen onu da kullanabilirsin.  Bedava mcHID.dll mi ne vardı. o da işini görebilir. activex değildir. birçok özelliği yoktur. kendin yapmalısın.

Gönderdiğin datanın veya cihazdan gelen datanın yerine cuk diye oturması için hid report  kullanılır. Bununla bit düzeyinde komut gönderebilirsin. yani 512 tane ledin olsun hangisinin yanıp hangisinin söneceğini 1ms içinde gönderebilirsin. Komutu alan  HID cihaz bunu yorumlar ledleri yakar veya söndürür.
Başlık: Ynt: c# USBHID komutları yardım
Gönderen: bybik - 16 Ağustos 2011, 02:02:36
http://hotfile.com/dl/85692660/446242d/usb-uygulamalari-bilgiler-ccs-c18.rar.html (http://hotfile.com/dl/85692660/446242d/usb-uygulamalari-bilgiler-ccs-c18.rar.html)

Eğer Türkçe kaynak istersen linkteki dosyayı biraz inceleyebilirsin.Usb hakkında hid dahil olmak üzere bir çok deteya girilmiş.Ayrıca örnek kodlarda dosyanın içerisinde mevcut.
Başlık: Ynt: c# USBHID komutları yardım
Gönderen: Gökhan BEKEN - 16 Ağustos 2011, 03:34:38
@t2 hocam bu proje için çalışacağım bütün çalışmalara ramen sonuç alamazsam sizden bahsettiğiniz yazılım desteğini alırız artık.
@bybik hocam o linkteki dosya bende zaten vardı.   Kullandıkları dil  Visual C++, bana Visual C# lazım. Ayrıca içindeki uygulamaların çoğu çalışmıyor.

Gelin şimdiye kadarki yapılan projeleri bir kenara bırakalım, sıfırdan yapalım şu projeyi. Türkiyede bu konuda döküman az. Döküman yazmasakta neyin ne olduğu anlaşılabilen, Türkçe açıklama satırları olan basit bir program yazalım.

Sıfırdan alalım. Öncelikle hid.dll yi projeye dahil etmek için, normal dll dosyalarını eklediğimiz gibi mi ekliyoruz. Yoksa windowsun kendi dll si olduğundan buna gerek yok mu? İncelediğim hid projelerinde hid.dll yi eklememişler ya da ben göremedim. İlk aşama olarak bunu yapalım ne dersiniz?
Başlık: Ynt: c# USBHID komutları yardım
Gönderen: t2 - 16 Ağustos 2011, 03:49:38
benim verdiğim c# örneği çalışıyordu. exesini denedim. vstudio 2008 de çalışması için ufak tefek değişiklik lazımdır.
Ayrıca cihaz varsa vendor id  product id? bunları girmezsen cihazı bulamaz. usb mouse ile deneme yapılmaz. Led yakıp söndürecek kart gibi, özel usb hid aygıt lazım.


hid.dll benim kendi kullandığım kodların derinliklerinde yazıyor. kullanmışlar eklemişler. zaten mecburi gibi bir şey. hidle ilgili bilgiler  hid.dll ve hidparse.dll gibi windows DLL lerinden geçecek.

şu açık kodları öncelikle vs2008 ile derlenebilir hale getirmelisiniz. Sonra çalışan proje üzerine led buton ekleyip cihaza komut göndertme işini yapabilirsiniz.  Cihazdan bilgi geldiğinde tetiklenen bir olay vardır.  Fakat kendi projenize USB katmak daha zor olsa gerek.

elinzide usb aygıt olmalı ki kodu deneyebilesiniz.  aygıt sizin gönderdiğinzi led yak söndür komutlarını nerden bilsin?   PC uygulamasına uygun bir usb aygıt yani hazır çalışan bir proje denemelisiniz.


Başlık: Ynt: c# USBHID komutları yardım
Gönderen: Gökhan BEKEN - 16 Ağustos 2011, 04:24:44
PIC4550 ile bir devre yaptım üstünde 8 tane led var, birde eeprom var. Gerekirse kaydederim diye eklemiştim. Ama devreyi denemek için yazılım yüklemem lazım. Dediğiniz gibi sıfırdan başlarsam uğraştırır beni, ama hazırları da ben editleyemedim nedense karışık geldi. Tek istediğim 0 ila 255 arasındaki sayıyı pice göndermek. Sonrada tam tersi picten pc ye göndermek. Boş zamanınızda sadece bunu yapan bir dosya paylaşır mısınız? PIC kısmı için proteus kullanıyorum gerçek devreye atsam entegre sök tak uğraştırır diye önce proteusta virtual usb ile deneyip sorun çıkmazsa gerçek devreye atacağım.
Başlık: Ynt: c# USBHID komutları yardım
Gönderen: t2 - 16 Ağustos 2011, 09:28:24
Örnekleri anlamak zor geldiyse  daha kolay örnek  için mesela şöyle bir yol izlenir.

Başlık: Ynt: c# USBHID komutları yardım
Gönderen: Gökhan BEKEN - 16 Ağustos 2011, 16:08:27
Hocam para ile proje yaptıracak bütçem yok. Yeni mezunum, Kasım 2011 de askere gideceğimden bir maaşlı işte çalışmıyorum böyle konuları öğrenmeye çalışıyorum.
Başlık: Ynt: c# USBHID komutları yardım
Gönderen: Gökhan BEKEN - 19 Ağustos 2011, 23:17:00
usb_wait_for_enumeration();         //Cihaz, hazır olana kadar bekle
komutu yanıt vermiyor neden olabilir acaba?
Çalışıp çalışmadığını anlamak için bu komutun bir üstünde e1 pinini high yaptım
ve bu komutun  usb_wait_for_enumeration(); peşine e1 pinini low yaptım ama
e1 high kalıyor yani bu komutta takılı kaldığı için bir sonraki satıra geçmiyor.

Dene yaptığım program:

#include <18F4550.h>
#fuses HSPLL,USBDIV,PLL5,PUT,CPUDIV1,VREGEN,NOWDT,NOPROTECT,NOLVP,NODEBUG,NOMCLR
#use delay(clock=48000000)

#define USB_HID_DEVICE     TRUE             
#define USB_EP1_TX_ENABLE  USB_ENABLE_INTERRUPT //Uçnokta1'de Kesme transferi aktif
#define USB_EP1_RX_ENABLE  USB_ENABLE_INTERRUPT   
#define USB_EP1_TX_SIZE    64                 //Uçnokta1 için maksimum alınacak ve gonderilecek
#define USB_EP1_RX_SIZE    64                 //veri boyutu (64 byte)

#include <pic18_usb.h>     
#include <USB_Konfigurasyon.h>                //USB konfigurasyon bilgileri bu dosyadadır.
#include <usb.c>   


#define UcNokta1       1
#define Komut          gelen_paket[0]

//Yazılım (Firmware) Sürüm no
#define surum_no1      0x00            //surum_no2.surum_no1 ornek: 1.0
#define surum_no2      0x01 


void main(void)

       
   byte sayac=0;
   byte gelen_paket[64];               //gelen paket
   byte gond_paket[64];                //gönderilecek paket

//Sistemi başlat               
   usb_init(); //USB hazirlaniyor                   
   usb_task();                     
   output_high(PIN_e1); delay_ms(100); //geri bildirim almak için koyduk
   usb_wait_for_enumeration();         //Cihaz, hazır olana kadar bekle
   output_low(PIN_e1);  delay_ms(100); //eğer led sönerse bir üstteki komut çalıştı demektir.   
   
   if(usb_enumerated()) //USB bağlantısı kurulduysa led ile göster
   {     
      output_b(0b01010101); delay_ms(200);           
   }
   else
   {
      output_b(0b10000001); delay_ms(200);           
   }
     
 
}









USB_Konfigurasyon.h dosyası:
                                                     

#IFNDEF __USB_DESCRIPTORS__
#DEFINE __USB_DESCRIPTORS__

#include <usb.h>

     const char USB_CLASS_SPECIFIC_DESC[] = {
      6, 0, 255,    // Usage Page = Vendor Defined
      9, 1,            // Usage = IO device
      0xa1, 1,       // Collection = Application
      0x19, 0,        // Usage minimum
      0x29, 800,        // Usage maximum

      0x15, 0x00,        // Logical minimum (-128)
      0x25, 0xFF,        // Logical maximum (127)

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


   //if a class has an extra descriptor not part of the config descriptor,
   // this lookup table defines where to look for it in the const
   // USB_CLASS_SPECIFIC_DESC[] array.
   //first element is the config number (if your device has more than one config)
   //second element is which interface number
   //set element to 0xFFFF if this config/interface combo doesn't exist
   const int16 USB_CLASS_SPECIFIC_DESC_LOOKUP[USB_NUM_CONFIGURATIONS][1] =
   {
   //config 1
      //interface 0
         0
   };

   //if a class has an extra descriptor not part of the config descriptor,
   // this lookup table defines the size of that descriptor.
   //first element is the config number (if your device has more than one config)
   //second element is which interface number
   //set element to 0xFFFF if this config/interface combo doesn't exist
   const int16 USB_CLASS_SPECIFIC_DESC_LOOKUP_SIZE[USB_NUM_CONFIGURATIONS][1] =
   {
   //config 1
      //interface 0
         32
   };


//////////////////////////////////////////////////////////////////
///
///   start config descriptor
///   right now we only support one configuration descriptor.
///   the config, interface, class, and endpoint goes into this array.
///
//////////////////////////////////////////////////////////////////

   #DEFINE USB_TOTAL_CONFIG_LEN      41  //config+interface+class+endpoint+endpoint (2 endpoints)

   const char USB_CONFIG_DESC[] = {
   //IN ORDER TO COMPLY WITH WINDOWS HOSTS, THE ORDER OF THIS ARRAY MUST BE:
      //    config(s)
      //    interface(s)
      //    class(es)
      //    endpoint(s)

   //config_descriptor for config index 1
         USB_DESC_CONFIG_LEN, //length of descriptor size          ==1
         USB_DESC_CONFIG_TYPE, //constant CONFIGURATION (CONFIGURATION 0x02)     ==2
         USB_TOTAL_CONFIG_LEN,0, //size of all data returned for this config      ==3,4
         1, //number of interfaces this device supports       ==5
         0x01, //identifier for this configuration.  (IF we had more than one configurations)      ==6
         0x00, //index of string descriptor for this configuration      ==7
         0x80, //bit 6=1 if self powered, bit 5=1 if supports remote wakeup (we don't), bits 0-4 unused and bit7=1         ==8
         50, //maximum bus power required (maximum milliamperes/2)  (100mA)

   //interface descriptor 1
         USB_DESC_INTERFACE_LEN, //length of descriptor      =10
         USB_DESC_INTERFACE_TYPE, //constant INTERFACE (INTERFACE 0x04)       =11
         0x00, //number defining this interface (IF we had more than one interface)    ==12
         0x00, //alternate setting     ==13
         2, //number of endpoins, except 0 (pic167xx has 3, but we dont have to use all).       ==14
         0x03, //class code, 03 = HID     ==15
         0x00, //subclass code //boot     ==16
         0x00, //protocol code      ==17
         0x00, //index of string descriptor for interface      ==18

   //class descriptor 1  (HID)
         USB_DESC_CLASS_LEN, //length of descriptor    ==19
         USB_DESC_CLASS_TYPE, //dscriptor type (0x21 == HID)      ==20
         0x11,0x01, //hid class release number (1.0) (try 1.10)      ==21,22
         0x00, //localized country code (0 = none)       ==23
         0x01, //number of hid class descrptors that follow (1)      ==24
         0x22, //report descriptor type (0x22 == HID)                ==25
         USB_CLASS_SPECIFIC_DESC_LOOKUP_SIZE[0][0], 0x00, //length of report descriptor            ==26,27

   //endpoint descriptor
         USB_DESC_ENDPOINT_LEN, //length of descriptor                   ==28
         USB_DESC_ENDPOINT_TYPE, //constant ENDPOINT (ENDPOINT 0x05)          ==29
         0x81, //endpoint number and direction (0x81 = EP1 IN)       ==30
         0x03, //transfer type supported (0x03 is interrupt)         ==31
         USB_EP1_TX_SIZE,0x00, //maximum packet size supported                  ==32,33
         10,  //polling interval, in ms.  (cant be smaller than 10)      ==34

   //endpoint descriptor
         USB_DESC_ENDPOINT_LEN, //length of descriptor                   ==35
         USB_DESC_ENDPOINT_TYPE, //constant ENDPOINT (ENDPOINT 0x05)          ==36
         0x01, //endpoint number and direction (0x01 = EP1 OUT)      ==37
         0x03, //transfer type supported (0x03 is interrupt)         ==38
         USB_EP1_RX_SIZE,0x00, //maximum packet size supported                  ==39,40
         10 //polling interval, in ms.  (cant be smaller than 10)    ==41
   };

   //****** BEGIN CONFIG DESCRIPTOR LOOKUP TABLES ********
   //since we can't make pointers to constants in certain pic16s, this is an offset table to find
   //  a specific descriptor in the above table.

   //NOTE: DO TO A LIMITATION OF THE CCS CODE, ALL HID INTERFACES MUST START AT 0 AND BE SEQUENTIAL
   //      FOR EXAMPLE, IF YOU HAVE 2 HID INTERFACES THEY MUST BE INTERFACE 0 AND INTERFACE 1
   #define USB_NUM_HID_INTERFACES   1

   //the maximum number of interfaces seen on any config
   //for example, if config 1 has 1 interface and config 2 has 2 interfaces you must define this as 2
   #define USB_MAX_NUM_INTERFACES   1

   //define how many interfaces there are per config.  [0] is the first config, etc.
   const char USB_NUM_INTERFACES[USB_NUM_CONFIGURATIONS]={1};

   //define where to find class descriptors
   //first dimension is the config number
   //second dimension specifies which interface
   //last dimension specifies which class in this interface to get, but most will only have 1 class per interface
   //if a class descriptor is not valid, set the value to 0xFFFF
   const int16 USB_CLASS_DESCRIPTORS[USB_NUM_CONFIGURATIONS][1][1]=
   {
   //config 1
      //interface 0
         //class 1
         18
   };

   #if (sizeof(USB_CONFIG_DESC) != USB_TOTAL_CONFIG_LEN)
      #error USB_TOTAL_CONFIG_LEN not defined correctly
   #endif


//////////////////////////////////////////////////////////////////
///
///   start device descriptors
///
//////////////////////////////////////////////////////////////////

   const char USB_DEVICE_DESC[USB_DESC_DEVICE_LEN] ={
      //starts of with device configuration. only one possible
         USB_DESC_DEVICE_LEN, //the length of this report   ==1
         0x01, //the constant DEVICE (DEVICE 0x01)  ==2
         0x00,0x02, //usb version in bcd
         0x00, //class code ==5
         0x00, //subclass code ==6
         0x00, //protocol code ==7
         USB_MAX_EP0_PACKET_LENGTH, //max packet size for endpoint 0. (SLOW SPEED SPECIFIES 8) ==8
         0xD8,0x04, //vendor id (0x04D8 is Microchip, or is it 0x0461 ??)
         0x00,0x0E, //product id   ==11,12  //don't use ffff says usb-by-example guy.  oops
         0x00,0x01, //device release number  ==13,14
         0x01, //index of string description of manufacturer. therefore we point to string_1 array (see below)  ==15
         0x02, //index of string descriptor of the product  ==16
         0x00, //index of string descriptor of serial number  ==17
         USB_NUM_CONFIGURATIONS  //number of possible configurations  ==18
   };


//////////////////////////////////////////////////////////////////
///
///   start string descriptors
///   String 0 is a special language string, and must be defined.  People in U.S.A. can leave this alone.
///
///   You must define the length else get_next_string_character() will not see the string
///   Current code only supports 10 strings (0 thru 9)
///
//////////////////////////////////////////////////////////////////

//the offset of the starting location of each string.  offset[0] is the start of string 0, offset[1] is the start of string 1, etc.
char USB_STRING_DESC_OFFSET[]={0,4,12};

char const USB_STRING_DESC[]={
   //string 0
         4, //length of string index
         USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
         0x09,0x04,   //Microsoft Defined for US-English
   //string 1
         8, //length of string index
         USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
         't',0,
         'm',0,
         'c',0,
   //string 2
         58,                   //length of string index
         USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
         't',0,
         'm',0,
         'c',0,
         'o',0,
         'n',0,
         'e',0,
         ' ',0,
         '(',0,
         'C',0,
         ')',0,
         ' ',0,
         'U',0,
         's',0,
         'b',0,
         'H',0,
         'I',0,
         'D',0,
         ' ',0,
         'U',0,
         'y',0,
         'g',0,
         'u',0,
         'l',0,
         'a',0,
         'm',0,
         'a',0,
         's',0,
         'i',0,
         ' ',0
};

#ENDIF


Başlık: Ynt: c# USBHID komutları yardım
Gönderen: t2 - 19 Ağustos 2011, 23:21:37
usb_wait_for_enumeration adından anlaşıldığı kadarıyla  aygıtın usb host tarafından algılanmasını bekliyor.demekki algılanmamış.

Ortada bir aygıt var mı? pcnin usb portuna bağlandı mı?  PC uygulaması ve Pic kodu ile birlikte komple bir örnek denemek lazım.
Başlık: Ynt: c# USBHID komutları yardım
Gönderen: Gökhan BEKEN - 19 Ağustos 2011, 23:25:37
Bu sorunun dışında bir de devreyi bilgisayara bağladığımda, windows "bilinmeyen aygıt" diye uyarı veriyor. Kullandığım dil ccs c, arayüz programından önce pic tarafını yapmaya başladım, arayüz programı olmasa bile devrede yazan yazıyı göstererek tanıması lazım diye biliyorum. Mesela  "usb deneme cihazı" diye tanımasını istiyorum bunun için ne yapmam lazım? USB_Konfigurasyon.h dosyasında yazılar var ama onları göstermiyor.
Başlık: Ynt: c# USBHID komutları yardım
Gönderen: t2 - 19 Ağustos 2011, 23:34:49
kristal yanlış olabilir. kondansatörü eksiktir. ayrıca picin 3.3 V çıkıişı ile şase  arasına 470nF bağlamak gerekiyor. mclryi beslemeye bağlarsın. başka da pek kritik şey yok. usb aygıt örneğini çalışıyor  diye  yayınladılarsa  devre montajında usb kablosunda vs hata vardır. yoksa çalışması lazım.

Yok ben  projeyi sıfırdan yazdım. belgeleri kendim okudum ve yaptım diyorsan config, pll  vb bir ton hata olabilir. Bir maniniz yoksa çalışan hazır örneği deneyin.
Başlık: Ynt: c# USBHID komutları yardım
Gönderen: Gökhan BEKEN - 19 Ağustos 2011, 23:40:11
Alıntı yapılan: t2 - 19 Ağustos 2011, 23:34:49
kristal yanlış olabilir. kondansatörü eksiktir. ayrıca picin 3.3 V çıkıişı ile şase  arasına 470nF bağlamak gerekiyor. mclryi beslemeye bağlarsın. başka da pek kritik şey yok. usb aygıt örneğini çalışıyor  diye  yayınladılarsa  devre montajında usb kablosunda vs hata vardır. yoksa çalışması lazım.

Yok ben  projeyi sıfırdan kendim okudum vey yaptım diyorsan config, pll  vb bir ton hata olabilir. Bir maniniz yoksa çalışan hazır örneği deneyin.
kristal 48 Mhz
kristale 22pf lik 2 tane kristal bağlı
picin VUSB pini yani 18 nolu pini 470 nf kondansatör ile GND ye bağlı
MCLR direkt +5 volta bağlı sorun olur mu? Aslında direnç takmak için delik yaptım ama direnç yerine direkt tel ile köprü attım
Başlık: Ynt: c# USBHID komutları yardım
Gönderen: t2 - 19 Ağustos 2011, 23:48:49
18f4550 için 48Mhz kristal bağlamamalısın. yanlış yapmışsın. hazır çalışan örnekte ne verildiyse onu bağlamalısın.  48 kesin yanlıştır. 20Mhz veya daha altı olmalıdır. Picin içinde PLL ile çalışma frekansı 48Mhz olarak yükseltilir

ben gerçek bir 18f4550 ve devre ile çalıştığından emin değilim.  sanal ortamda deniyor olaiblirsin. Yoksa niye göz göre göre yanlış parça takasın ki? Örneği yayınlayan adam ne dediyse aynısını yapmalısın.yoksa spor yaparsın
Başlık: Ynt: c# USBHID komutları yardım
Gönderen: Gökhan BEKEN - 19 Ağustos 2011, 23:55:17
Devreyi simulasyonla değil gerçekten yaptım ve bilgisayara bağlayarak deniyorum.
Devre tasarımını ben yaptım, kullandığım yazılım ise hazır, sadece modifiye ettim.
48 mhz bağlanmaması gerektiğini bilmiyordum, mclr'deki +5volta bağlı olan köprüyü söktüm devre yine çalışıyor sorun yine aynı. Dediğinizi bir araştırayım kaç mhz bağlamak gerekiyorsa ona göre bağlar sonucu bildiririm. İlginiz alakanız için sonsuz teşekkürler.
Başlık: Ynt: c# USBHID komutları yardım
Gönderen: Gökhan BEKEN - 20 Ağustos 2011, 00:16:15
Hocam çok sağolun 20 mhz bağladım artık tanıdı.
Başlık: Ynt: c# USBHID komutları yardım
Gönderen: t2 - 20 Ağustos 2011, 00:34:52
Hayırlı olsun. Tamam artık sırtın yere gelmez :)
Başlık: Ynt: c# USBHID komutları yardım
Gönderen: muhittin_kaplan - 20 Ağustos 2011, 02:37:35
@ meftun
yeni gördüm. X550 iler PLL kullanır. 4mhz de kullanabilirsin. ama PLL i ayarlaman gerek. o 48Mhz işlemcinin içerisindeki USB modülü için Gerekli. Cihazı Tanıtmışsın. Sonrası gelir. Ayrıca CCS ile yazıyorsun Anladığım Kadarıyla. DLL, AcriveX uğraşma hazır çalışan bir C# örneği ile işi kotarırsın.
Başlık: Ynt: c# USBHID komutları yardım
Gönderen: Gökhan BEKEN - 20 Ağustos 2011, 05:42:15
Bir sorum var, 20MHZ kristal taktık, PLL ile 48 MHZ oldu tamam.
48mhz sadece usb kısmı için mi oldu, yoksa herşey için mi?
Yani benim yazdığım program 48 mhz ile mi çalışacak 20 mhz mi?
Eğer 20 mhz ile çalışacaksa, ben kodların 48 mhz(veya farklı bir frekans) ile çalışmasını istiyorsam ne yapmam lazım?
Başlık: Ynt: c# USBHID komutları yardım
Gönderen: LukeSkywalker - 20 Ağustos 2011, 11:06:52
Digimensch 'in yaptığı program çalışıyor...
Başlık: Ynt: c# USBHID komutları yardım
Gönderen: muhittin_kaplan - 21 Ağustos 2011, 00:27:26
Meftun Onu Ayarlayabiliyorsun
Config deki Usb div ile USB frekansını Cpudiv ile CPU frekansını ayarlayabiliyorsun. Ben 48Mhz Kullanıyorum CPU frekansını. 
Başlık: Ynt: c# USBHID komutları yardım
Gönderen: muhittin_kaplan - 21 Ağustos 2011, 00:42:40
https://www.picproje.org/index.php/topic,28599.msg195445.html#msg195445
https://www.picproje.org/index.php/topic,25799.msg173810.html#msg173810
https://www.picproje.org/index.php/topic,18108.msg170787.html#msg170787
Başlık: Ynt: c# USBHID komutları yardım
Gönderen: kralsam - 30 Ekim 2011, 19:32:16
Arkadaşlar FPGA ile usb kullanımı hakkında tecrübesi olan varmı?
Hazır işlemci modülleri gömülerek mi kullanılıyor , yoksa direk modül olarak tesarlamaya çalışsak ne olur ?  ???
Başlık: Ynt: c# USBHID komutları yardım
Gönderen: muratyamak10 - 31 Ekim 2014, 20:09:16
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;

namespace led_kontrol
{
    public partial class Form1 : Form
    {
        byte sayi = 0;
        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);
        }
        public Form1()
        {
            InitializeComponent();
        }
        private void usb_gonder(byte veri)
        {
            byte[] dizi = new byte[usbHidPort1.SpecifiedDevice.OutputReportLength + 1];
            dizi[0] = 0;
            dizi[1] = veri;
            for (int i = 2; i < textBox1.Text.Length; i++) { dizi = 0xFF; }
            if (usbHidPort1.SpecifiedDevice != null)
            {
                usbHidPort1.SpecifiedDevice.SendData(dizi);
            }
            else
            {
                MessageBox.Show("USB cihaz hazır değil,cihazı takınız!.. ");
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = " Herhangi bir USB Cihaz bağlı değil!..";
            checkBox1.Checked = true;
            checkBox2.Checked = false;
        }
        private void usbHidPort1_OnSpecifiedDeviceArrived(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = " Hikko USB HID (PIC18F4550) Cihazı bağlandı!";
        }
        private void usbHidPort1_OnDeviceArrived(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = " Herhangi bir USB Cihaz bağlandı!";
        }
        private void usbHidPort1_OnDeviceRemoved(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = " Hikko USB HID (PIC18F4550) Cihazı çıkarıldı!";
        }
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                usbHidPort1.VendorId = Convert.ToInt32(textBox1.Text);
                usbHidPort1.ProductId = Convert.ToInt32(textBox2.Text);
                if ((usbHidPort1.VendorId == 4660) & (usbHidPort1.ProductId == 4660))
                {
                    usbHidPort1.CheckDevicePresent();
                }
                else
                {
                    MessageBox.Show("Yanlış Vendor ID veya Product ID girdiniz!..");
                }
            }
            catch
            {
                MessageBox.Show("Vendor ID ile Product ID girmelisiniz!..");
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                if (textBox3.Text != "")
                {
                    if (checkBox1.Checked)
                        sayi = Byte.Parse(textBox3.Text, System.Globalization.NumberStyles.HexNumber);
                    if (checkBox2.Checked)
                        sayi = Convert.ToByte(textBox3.Text);
                }
                usb_gonder(10);
            }
            catch
            {
                MessageBox.Show("Hikko USB HID (PIC18F4550) Cihazı bağlı değil!");
                textBox3.Text = "0";
            }
        }
        private void checkBox1_CheckedChanged(object sender,EventArgs e)
        {
            if(checkBox1.Checked)  checkBox2.Checked = false;
            if(checkBox2.Checked)  checkBox1.Checked = false;
            textBox3.MaxLength = 2;
            textBox2.Text = "0";
        }
        private void checkBox2_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox2.Checked) checkBox1.Checked = false;
            if (checkBox1.Checked) checkBox2.Checked = false;
            textBox3.MaxLength = 3;
        }
    }
}



mesaj birleştirme:: 01 Kasım 2014, 10:11:10

micro c uygulaması yapmak istiyorum usb ile bir türlü arayüzünü yazamadım bağlantı kurulamadı diyor c# 2010 ile 2008 ile derledim sonuç aynı hangi ayarları yapacağım c# ın

mesaj birleştirme:: 01 Kasım 2014, 10:19:18

micro c ile 18f4550 kitabındaki arayüzü yazmaya çalışıyorum.herhangi bir usb cihazı bağlanmadı yazıyor başka bir şey yazmıyor usb.dll ni ekledim programı yazarken

mesaj birleştirme:: 01 Kasım 2014, 10:19:53

nasıl yapmalıyım bir fikri olan varmı hocam

mesaj birleştirme:: 01 Kasım 2014, 10:23:27

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;

namespace led_kontrol
{
    public partial class Form1 : Form
    {
        byte sayi = 0;
        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);
        }
        public Form1()
        {
            InitializeComponent();
        }
        private void usb_gonder(byte veri)
        {
            byte[] dizi = new byte[usbHidPort1.SpecifiedDevice.OutputReportLength + 1];
            dizi[0] = 0;
            dizi[1] = veri;
            for (int i = 2; i < textBox1.Text.Length; i++) { dizi = 0xFF; }
            if (usbHidPort1.SpecifiedDevice != null)
            {
                usbHidPort1.SpecifiedDevice.SendData(dizi);
            }
            else
            {
                MessageBox.Show("USB cihaz hazır değil,cihazı takınız!.. ");
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = " Herhangi bir USB Cihaz bağlı değil!..";
            checkBox1.Checked = true;
            checkBox2.Checked = false;
        }
        private void usbHidPort1_OnSpecifiedDeviceArrived(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = " Hikko USB HID (PIC18F4550) Cihazı bağlandı!";
        }
        private void usbHidPort1_OnDeviceArrived(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = " Herhangi bir USB Cihaz bağlandı!";
        }
        private void usbHidPort1_OnDeviceRemoved(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = " Hikko USB HID (PIC18F4550) Cihazı çıkarıldı!";
        }
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                usbHidPort1.VendorId = Convert.ToInt32(textBox1.Text);
                usbHidPort1.ProductId = Convert.ToInt32(textBox2.Text);
                if ((usbHidPort1.VendorId == 4660) & (usbHidPort1.ProductId == 4660))
                {
                    usbHidPort1.CheckDevicePresent();
                }
                else
                {
                    MessageBox.Show("Yanlış Vendor ID veya Product ID girdiniz!..");
                }
            }
            catch
            {
                MessageBox.Show("Vendor ID ile Product ID girmelisiniz!..");
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                if (textBox3.Text != "")
                {
                    if (checkBox1.Checked)
                        sayi = Byte.Parse(textBox3.Text, System.Globalization.NumberStyles.HexNumber);
                    if (checkBox2.Checked)
                        sayi = Convert.ToByte(textBox3.Text);
                }
                usb_gonder(10);
            }
            catch
            {
                MessageBox.Show("Hikko USB HID (PIC18F4550) Cihazı bağlı değil!");
                textBox3.Text = "0";
            }
        }
        private void checkBox1_CheckedChanged(object sender,EventArgs e)
        {
            if(checkBox1.Checked)  checkBox2.Checked = false;
            if(checkBox2.Checked)  checkBox1.Checked = false;
            textBox3.MaxLength = 2;
            textBox3.Text = "0";
        }
        private void checkBox2_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox2.Checked) checkBox1.Checked = false;
            if (checkBox1.Checked) checkBox2.Checked = false;
            textBox3.MaxLength = 3;
        }
    }
}



mesaj birleştirme:: 31 Ekim 2014, 20:24:19

fikri olan yokmu hocam