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.
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.
Teşekkürler, inceliyorum
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/)
Profesyonel amaç yoksa, hobi işi ise, bu yukarıdaki gibi örneklerle idare edebilirsin.
Bağlantı kuruldu veya kurulamadı diye geri bildirim yapacak
Eğ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.
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.
@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?
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.
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.
Örnekleri anlamak zor geldiyse daha kolay örnek için mesela şöyle bir yol izlenir.
- Proteusta deneyebilmeniziçin 0 ila 255 arasındaki sayıyı pcye gönderen devre dosyaları
- 0 ila 255 arasındaki sayıyı pice gönderen ve picden geleni gösteren v.studio 2008 c# pc programı ve kodları
- Uygulamada kullanılacak HID activex nesnesi (yeni yapılacak)
- Kapora alınır başlanır. Teslimat süresi 5 gün. Bitince demo yapılır. Beğenmezsen almazsın
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.
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
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.
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.
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.
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
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
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.
Hocam çok sağolun 20 mhz bağladım artık tanıdı.
Hayırlı olsun. Tamam artık sırtın yere gelmez :)
@ 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.
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?
Digimensch 'in yaptığı program çalışıyor...
Meftun Onu Ayarlayabiliyorsun
Config deki Usb div ile USB frekansını Cpudiv ile CPU frekansını ayarlayabiliyorsun. Ben 48Mhz Kullanıyorum CPU frekansını.
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
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 ? ???
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