USB to serial

Başlatan lojikmemo1, 19 Ağustos 2007, 22:57:19

Jabba

Bak dostum microchip'in custom driver'ını hiç incelmedim.Kodları filan var mı?
Şimdi şu hız olayını biraz açalım.USB üç hızı destekler.Yüksek hız saniyede 480MBit, tam hız saniyede 10Mbit, düşük hız saniyede 1.5Mbit.Bu hızlar USB BUS tarafından desteklenen değerlerdir.Fakat cihaz hızları bundan daha düşüktür.Yani cihazın hızı BUS'dan düşüktür.Fakat bir tasarımda hız şu kadardır diyemeyiz.Çünkü veri iletiminde birçok kontrol biti ve diğer paketler değerlendirilir.Eğer sabit hızlı transfer yapmak istiyorsan izokron transfer kullanacaksın.Bu transferde 1m'lik çerçevede 1024 byte birden veri gönderilebilir PC'ye.Fakat bu transfer türünde hata kontrolü ve elsıkışma olmaz veriler hatasız alındı kabul edilir.HID sınıfı cihazlar genelde kesme transfer kullanır.Bu transfer türü zaman sınırı belli bir türdür fakat burada da hız kesin değil.Bunu PC belirler çünkü BUS tüm cihazlar tarafından paylaşılıyor.Yani hız şu kadar, transfer şukadar zamanda bitecek diye bir garanti yok.

Yığın transfer BUS BOŞ İKEN en hızlı transfer türüdür.saniyede 1.26 Mbyte veri gönderebilir.Bu transfer türünü kullanabilirsin.
Bir diğer seçenek izokron transfer.Bu tür transfer de de zaman sabittir çünkü el sıkışma yoktur.Saniyede 1024Mbyte veri iletimi yapılabilir.

Şimdi EasyHID a baktım netten.Dostum one öyle yaaa.Uğraşmayın böyle şeylerle.İşte projenizi yükseltmek istediğinizde tıkanırsınız.Şimdi sanin cihazını HID'dan kurtarman için yapman gerekenleri yazıcam.Bu araç ile yaptıysan devreni dediklerimi nasıl yapıcan mesak ediyorum.

İlk olarak Tanımlayıcılardan Arabirim Tanımlayıcısının 5 byte'ı olan bInterfaceClass değerini değiştireceksin.Bu değer 0x03 ise PC cihazın HID olduğunu anlar.Bu değeri 0xff yaparsan sınıfın üreticiye ait olduğunu anlar.
6.byte bInterfaceSubClass'ın değerinide 0xff yapacaksın.
Tanımlayıcılardan HID TANIMLAYICISINI sileceksin.
Uçnokta tanımlayıcısında 3 byte olan bmAttributes alanını BULK veya Izokron yapacaksın.

Aaynı zamanda demin anlattığım Arabirim Tanımlayıcısındaki alanlar gibi Cihaz Tanımlayıcısındaki 4. ve 5. byte'ı yani bDeviceClass ve bDeviceSubClass alanlarını 0xff yapacaksın.

Bu durumda cihazı porta takdığında PC inf arar ve bulamazsa sürücü sihirbazını açar.

Bu halde sürücü bekleyen bir cihaz WinDriver ile sürücü oluşturabilirsin.Vaktin varsa kendin yaz derim....

EasyHID filan çok amatörce hocam.Uğraşma derim.Sonra çok komlike işlerde saçını başını yolarsın
Capsule NET Compiler 2007

lojikmemo1

eve tkardeş verdiğin bilgiler için sağol bilgisayar kısmının tamamı bana ait değil ama pic kısmını söylediğin şekilde yapabilirim waktim olunca pc kısımı için bir driver yazacam böyle daha iyi olabilir. Tabii senin dll de fena değil bitsin bir inceleyelim belki onu kullanırım :D
İnsanlara Akılları Ölçüsünde Söz Söyleyiniz.

lojikmemo1

jabba sen bir dahisin yahu :D
pic kısmını dediğin gibi yaptım windriver de mütiş miş hemen bir driver oluşturdum süper çalışıyor read pipe ve write pipe çok iyi çalışıyor ama artık benim cihaz hid de değil other seçenegini seçtim farkl bır çihaz olarak tanıyor windows hid değil şimdir buna bir yazılm yapmam lazım windriver gibi read ve  write metodları olan ve bir kaç event olan bir yazılım sen ne önerirsin nasıl yapmalıyım daha doğrusu hangi apilerle bu iş çözülecek bilgi verirsen sevinirim.
Ayrıca bu şekilde mass store yapmak çocuk oyuncağı teşekkürler

Benide kendine benzettin usb nin bu yönleri mütiş kendime bir ses kartı bile yapabilirim :D :D
İnsanlara Akılları Ölçüsünde Söz Söyleyiniz.

Jabba

Açıkçası WinDriver pek kullanmadım.WritePipe, ReadPipe methodları herhalde WinDriver'la gelen DLL'lerdeki methodlar.Yoksa benim DLL'i mi aldın biryerden :D
Cihazını hemen HID sınıfından çıkarmadın değil mi????Yukarıda yazdıklarımı yaptın herlade.Yoksa HID Tanımlayısıcısı ve diğer tanımlayıcılardaki bilgiler varken Windows cihazı yine HID olarak tanır.Tanımasa bile, şöyle birşey olmuştur;Şimdi sen cihazı porta taktığında windows senin cihazın vendor ve product id'si ile uyumlu bir inf arıyor ve bu infi bulduğunda inf'in gösterdiği sürüyü yüklüyor ya sen e sende bu ID ile uyumlu bir driver attıysan system32'e bunu yüklemiştir.Ama yonga kodunda gerekli değişiklikler yapmadıysan bence pek sağlıklı değil.

Yazılım kısmına gelince bugün boş bir zamanımda bende bir daha deniyeyim sende dene."Eğer cihazının kaç byte veri alıp gönderdiğini biliyorsan yani uçnokta büyüklüğünü de filan o zaman CreateFile ile bir handle alıp, WriteFile, ve ReadFile API'leri ile işlem yapabilirsin diye düşünüyorum.Belki biliyorsundur.Cihazı tespit ederkende setupapi.dll içindeki API'leri kullanıyoruz.Mesela sistemdeki tüm cihaz'lar için bir arayüz seti almak istediğimizde SetupDiGetClassDevs API'sini kullaır diğerleri ile devam ederiz.Şimdi bu API'nin ilk parametresi referans olarak bir GUID numarası alıyor ya, normalde bu eğer HIDlarla çalışıyorsak 4D1E55B2-F16F-11CF-88CB-001111000030 GUID nosunu alır ve bu GUID'e uyan yani HID sınıfı cihazlar için arayüz seti alınır.
Sen bu parametreye, A5DCBF10-6530-11D2-901F-00C04FB951ED GUID numarasını vereceksin.

DLL'de bir değişiklik yapabilirm.Şimdi DLL sadece HID aygıtlarla konuşuyor.Fakat bir enum yapıp cihaz ile bağlantı kurulurken Standart, Hid diye bir seçenek vererek kendi sürücüsü olan cihazlar ile de konuşulabilir.
Capsule NET Compiler 2007

lojikmemo1

ya yine mi CreateFile yahu bıktım bu apiden ne kadar işe yarıyor muş bu api seri port paralel port usb ayrıca hdd file işlemleri daha neler neler.

Verdiğin kodu nereden buldun acaba :D biraz ertelemeliyim şu elimdeki işleri bitireyim ilk iş bu api yi kullanarak bir usb cihazı yapmaya çalışacağım sonuçlardan veya sorunlardan :D seni habardear edicem
İnsanlara Akılları Ölçüsünde Söz Söyleyiniz.

lojikmemo1

oppps
kodu buldum sadece bir sabitiş
İnsanlara Akılları Ölçüsünde Söz Söyleyiniz.

files

EasyHID filan çok amatörce hocam.Uğraşma derim.Sonra çok komlike işlerde saçını başını yolarsın    
Sağol, HID'ı çevirmek içindediklerini dikkate aldım gerekli değişikliği yaparım.
Bak dostum microchip'in custom driver'ını hiç incelmedim.Kodları filan var mı?
Kodları yoktur. Sadece kullanıma ilişkin kodlar vardır. Driveri OneySoft mu ne yapmış. INF sdosyada görülüyor. microchip'in custom driver
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2124&param=en022629
Alıntı YapBu halde sürücü bekleyen bir cihaz WinDriver ile sürücü oluşturabilirsin.Vaktin varsa kendin yaz derim....
Nasıl yazabileceğimi bilmiyorum. *.sys ve *.dll ve *.inf  şeklinde 3 tane dosya lazım. Hadi infi benzettik editledik uydurduk. sys'yi nasıl yazacağız.
Ben bu konuyla sizler gibi ilgilenemiyorum. amacım işin tüm derinliklerini öğrenmek değil zaten buna vaktim de yok. hem öğrensem ne olacak? madalyamı alacağım. usb cihaz tasarımı ve imalatı yapıyoruz ama  bu kadar derin mevzulara giremeyiz. gerekmiyor. Bir örnek olsun editleyeyim usb kısmında hiç sorun olmasın yeterli. gerisini picteki ve uygulamadaki kendi yazdığımız kodlar ile halledebiliyorum.

Neyse driver geliştirmek için hazır proje var mı? Delphi, C# ,vs  ne oursa artık. bunları editleyip derleyeceğim. kendi *.sys ve *.dll dosyam oluşacak.kendi tasarladığım usb aletle kullanabileceğim. Elinizde bu aşamada bir durum varsa faaliyetlerinizi nakit olarak desteklemeye hazırım. bloğa bağış düğmesi koyarsınız, biri size bağış yapar

Jabba

@files ince düşüncen için çok teşekkür ederim.Şimdi ben senin durumunu anladım.Sen bu işle ticari olarak ilgileniyorsun.Bu yüzden gerçektende çok detayını bilmene gerek yok.Haklısın.Fakat bu iş benim mesleğim olsada ben işin daha çok mutfak kısmıyla ilgileniyorum.Çünkü birileri bunu yapmalı. :D

O zaman sana karşı tavsiyelerimi işini kolaylaştırmak için biraz değiştireyim.Şu an için WinDriver senin için en uygunu.Devreni tasarla.PIC kodlarını bul diycem ama ben USB ile uğraştığım süre boyunca gerçek anlamda PIC USB için yazılmış köklü kod bulamadım.Kendim yazdım.Neyse devereni halledersen cihazı tak PC'ye.Eğer Aygıt Sürücü Sihirbazı çıkarsa herşey sorunsuz gitmiş demektir.Yani Windows cihazını başarılı bir şekilde bulmuş yüklemek için sürücü istiyor demektir.Bu durumda WinDriver ile sürücü ve inf oluşturabilirsin.Aynı zamanda uygulamalarında kullanman için WinDriver'da DLL'ler de varmış sanırım ben bakmadım ama lojikmemo1 öyle söyledi.

Kitap çıksın biz sana her türlü destek veririz.Senin bize vermek istediğin destek için ise çok sağol.Ama şu an tam anlamıyla bir grup kurup faliyete başlayamadık.Bir gün olursa ve ihtiyacımız olursa kendi yermediğimiz yerlerde çalarız kapını sağol :)

@lojikmemo1 C de tüm aygıtlar dosya ve stream ilişkisi içindedir.Dosya cihaz, stream ise sabit bir arayüzdür.Bu sabit arayüz ile aynı yöntemleri kullanarak tüm cihazlar ile iletişim kurabilirsin.
Aynı zamanda Win32 sisteminde herşey HANDLE'dır.Process'ler tarafından oluşturulan tüm kernel nesnelerinin bir HANDLE tablosu vardır ve process handle tablosunda saklanır.Bu yüzden CreateFile gibi bir API path bilgisi ister bir cihazın olsun, ister bir disk teki dosyanın bir HANDLE elde etmemizi sağlar.Sonra diğer API fonksiyonlarına bu HANDLE'ları geçirerek işlem yaptırırız.O yüzden CreateFile'dan kurtulamazsın.Hem benim gibi kendi DLL'ini yazmaya kalkışırsan sadece bu 3 API sana yetmeyecek.setupapi.dll, HID tasarım yaparsan hid.dll, mesaj sistemine girersen DBT başlıkları, WM_XX mesajları gibi bir çok sabit, API ve yapıyla uğraşacaksın.Hem yönetimli ortamdan yönetimsiz ortam üzerinde işlem yapmak için daha birçok şey var öğrenmen gereken.Örneğin verilerin yönetimli ortamdan yönetimsiz ortama Marshal edilmesi, yine yönetimsiz ortamdan yönetimli oratama veri taşıma için Marshal işlemleri ve daha birçok karmaşık şey var.Bir arkadaşım kafayı yedi yazarken birtek ben sağ çıkıp yazdım bitirdim :lol:

Aynı zamanda daha birçok karışık konu var.Mesela bazı API'ler içini doldurmak için referans olarak yapı alıyor.Bu yapılardan bazılarını biz CLASS olarak tanımlamamız gerek bazısını değil.Aynı zamanda yapıların bile tanımlanırken bazı şartlara uyması gerek.Bunları hepsini anlatıcam kitapta.Yapının CLR tarafından optimize edilmeden bizim belirlediğimiz düzenda kalması için bazı Atrributelar var bunları kullanmalısın.Aynı zamanda API parametrelerini yönetimli ortamdaki tiplerle eşlemen için MarshalAs işlemleri var.

Sen en iyisi kitap çıkana kadar bekle.Orda hepsini anlatıcam.Bu arad herkez bana kitabı basın evine ver diyor.Ne yapcağımı şaşırdım
Capsule NET Compiler 2007

lojikmemo1

jabba çok sağ ol ama bu kadar derine inersek ömrümüz sadece win32 olur :D şaka bir yana win32, wmi, com+ ve api aslında bunlar işin püf noktaları biraz zamanım olsa com+ ile fir flört edecem zaten. Ayrıca sen beni dinle bu kitabı basım evine ver o kadar emek verecen bari bir kazanımın olur ama böyle yaparsan blog işi için bir kaç adım geri kalmış olursun. Tabii istersen yazılım dünyasına en iyi hizmeti vermiş olabilirsin bahsettiğin şeyler çok derin herkezin anlaması zor bu yüzden kitabın çok satarmı bilmem ama kaç para olursa olsun ben alırım.
Piyasada öyle kitaplar varki yani seninki bir pırlanta. Hele bir bodur varki bana sor adamcağız pic in ram ındaki bir registere dosya demiş utanmasa yani partition diyecek hele biri var prof . doğan İbrahim adam hex kodunu kitaba basmış ne işe yarayacaksa kitap zaten boyama kitabı gibi gereksiz bir sürü bilgi büyük punto ne ararsan var.
Karar senin ama şunu unutma senin kitabı alacak olan bu işle ilgili olanlardan ibaret farkındaysa 800 den fazla kişi bu konuya girmiş olmasına rağmen sadece ikimiz chat yapar gibi konuşuyoruz ha bir de files katıldı sağolsun.
İnsanlara Akılları Ölçüsünde Söz Söyleyiniz.

Jabba

Dostum çok doğru söylüyorsun.O dediğin şahsiyetlerin kitaplarını incelemiştim.Gerçektende saçmalık dolu.Birde bu adamlar profosör olacak.Blog işine gelince kitap çıksa bile biz yine uygulamaları ve kitap reklamını blogdan yaparız hıca.Sonuçta 2 kişide olsa 3 kişi olsa yalnız değilim artık :D
Capsule NET Compiler 2007

lojikmemo1

tamam dostum sen bilirsin.
İlk adımı atıyorum çok yakında (yarın veya yarından da yakın) pic ile usb yi, en azından hidi burada anlatacam ama derleyicini özel fonksiyonlarını kullanarak yapılanı çünki böyle anlatırsam herhalde herkez yapar yoksa senin yöntemi kullanırsam yine iş iki üç kişilik olur.
İnsanlara Akılları Ölçüsünde Söz Söyleyiniz.

lojikmemo1

kusura bakma bloğu yeni gördüm.
İnşallah yakında bir iki birşey de ben karalarım kusura bakma şu an meşkulum biraz bir de, iki gün sonra bir süreliğine tatil yapacağım ondan sonra kolları sıvarız .
İnsanlara Akılları Ölçüsünde Söz Söyleyiniz.

ahmet2004

Blog'unuzda picproje linkine rastlayamadım.

Projelerde yok.3-5 proje eklesenizde

USB blog'u olduğu meydana çıksa derim.

Sizin blog daha çok VB.net blogu olmuş.Sevgiler.

Jabba

İlk olarak ben ve lojikmemo1 C# programcısı orası USB bloğu olmayacaksa eğer Vb.net değil C# bloğu olur.
İkincisi orası daha çok yeni.Bende başlangıç olarak birşeyler ekledim.Zamanım oldukça USB ile ilgili konular ekleyeceğim.Ayrıca orada USB haricinde de şeyler olabilir.Başlıkta Elektronik ve programlama hakkında herşey yazıyor.Ve konuşman beni birazcık rahatsız etti. :?
Capsule NET Compiler 2007

ahmet2004

Rahatsız olmana gerek yokki.Eleştiri benimkisi sadece.

İçin rahat olsun USB projelerine devam et.

Birdaha eleştirmem olur biter hepsi bu.Sevgiler.