Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

Delphi'de USB

Başlatan YARGICH, 04 Mayıs 2006, 05:02:54

YARGICH

Selam,


     Delphi'de, USB den veri gönderebilmek için beleş komponent var mı acaba. Ben planet-source-code.com, torry.net gibi sitelere baktım ama bulamadım. Bulduklarımda ücretli idi. Acaba delphi de, seri portdan gönderdiğimiz gibi, USB den nasıl bilgi gönderebiliriz. Şimdi burda da master slave durumları devreye girmez inşallah. Karşı taraftada FT232 ile yapacağım çevirici olacak.

    Bana komponent veya yöntem konusunda yardımcı olabilirseniz çok sevinirim.


Teşekkürler, İyi Çalışmalar.
Uçurtmalar, rüzgarın kuvvetiyle değil, rüzgara karşı koydukları direnç ile yükselirler.

bsivgin

FT232 kullanacaksan driverını yükledikten sonra oluşturduğu sanal COM porta bilgi yollayabilirsin. Eğer Delphi'de com porta bilgi yollayabilyorsan bunu da yapabilirsin demektir.


Saygılarımla
Bülent ŞIVGIN
www.diyot.com

mp3dragon

eğer karşıda FT232 olacak ise direkt com portu kullanarak gönderebilirsin.

Delphi bilmiyorum ama VB de MSComm ve benzeri komponentler iş görür eğer hızlı olsun dersen başka kompanentlere bak derim FT232 1Mbps kadar destekler MSComm 115.200 bps
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

YARGICH

Yardımlarınız için teşekkürler. Şimdi bu kurma işlemi ile uğraşıyorum da bunu benim programın içerisine nasıl gömebiliriz. Mesela benim programın setup'ı var, o setup çalıştırdıktan sonra, bu USB yide o bilgisayara kurabilirmiyim.

@bsivgin,  forumda tekrar aradım, VCP yerine D2XX kullanırsanız usb nin derinliklerine inebilirsiniz demiştiniz. Bu galiba sadece bir dll. Bunu yazılımın içerisinde kullanırsak tekrar kurma işlemi yapmamız gerekiyor mu?

D2XX'in programcılar için olan datasheet'ini indirdim. Çok da zor değil gibi. Ama ayrıntı çok. Galiba kurarak yapmak başlangıç için daha kolay olacak. Zaten hali hazırda seriden bilgi çıkıyoruz, ben sadece kullanıcı açısından daha kolay nasıl olabilir diye düşünüyordum. Önce kurarak yapayımda olursa daha sonra dll'i de denerim.

  Aslında elimde birde PL-2303HX var, acaba hangisi daha ucuzdur. Yalnız PL-2303 data koblosu şeklinde değilde chip olarak bulabilmek önemli.


Yardımlarınız için Teşekkürler, İyi Çalışmalar.
Uçurtmalar, rüzgarın kuvvetiyle değil, rüzgara karşı koydukları direnç ile yükselirler.

bsivgin

PL2303HX'in PDIP olanlarından bulursan bana da haber veriseniz sevinirim. Aslında NOKIA'ların data kabloları çok güzel yapılmış kablonun içine USB RS232 çeviriciyi gömmüşer çok şık olmuş. Ancak bu data kablolarının çoğunda sadece 3 uç verildiği için devremizi USBde beslemek zor olucak gibi.

Devreyide USB den beslemek önemli aslında

Saygılarımla
Bülent ŞIVGIN
www.diyot.com

YARGICH

Tamma bulursam size de haber veririm. FT-232 için elimde 6MHz kristal yok, 5 küsür var, büyük ihtimalle boudrate inde sorun çıkartır. O yüzden FT-232 ile değilde, data kablosundan çıkartığım PL-2303 lü modülü kulanacağım. Bi anlamda SMD lehimlemektende kurtuldum :D Siz kablo ile mi kullanacaksınız bilmiyorum ama, ben içerisindeki modülü devreye soket ile oturtacağım. O devre üzerinden kendinize besleme alabilirsiniz aslında. PL-2303'ün 8 numaralı pini Vdd, ordan kaçak hat çekebilirsiniz belki :D



Tşekkürler İyi Çalışmalar.
Uçurtmalar, rüzgarın kuvvetiyle değil, rüzgara karşı koydukları direnç ile yükselirler.

YARGICH

PL-2303'ü bağlar bağlamaz PC gördü ve zaten daha önce CEP telefonum için kurmuştum, hemen yükledi ve COM3'e atadı. Hyper Terminalde COM3'ü seçtim ve çalıştı. Ama Delphi'de kullandığım Tcomport(winsoft) komponenti ile COM3'e erişemedim. Mesela Hyper Terminal COM3 için açık iken benim program port açık diye çalışmıyo, yani COM3'ün açık olup olmadığını görebiliyo. Donanımsal akış kontrolüde kapalı ama neden bilgi gönderip alamadığını anlamadım. Komponent ile ilgili bir problem olabilirmi acaba diyeceğim ama Renesas'ın flasher'ide çalışmadı :( Akış kontrolü ile ilgili bir problem gibi görünüyo :roll:  

   Bu durum ile ilgili bilgisi veya tecrübesi olan arkadaş var mı acaba?


Teşekkürler, İyi Çalışmalar.
Uçurtmalar, rüzgarın kuvvetiyle değil, rüzgara karşı koydukları direnç ile yükselirler.

mp3dragon

renesas değil ama pic ve AT89c51RD2 usb data kablosu kullanarak bootloader ile sorunsuz programlayabiliyorum. ek uzatma kablosu kullanıyorsan sorun çıkarabilir. baud rate yi düşürmeyi de deneyebilirin. (9600 -11.400 vs)
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

YARGICH

Selam,


Tamam arkadaşlar ben koruma olsun diye bir diyot koydum o sorun yaratıyormuş, RX de sorun çıkarmamasının sebebide buymuş. Şimdi Renesas'ımın flasher'ı da çalışıyor, Delphide yaptığım programda.


Tekrar Yardımlarınız için Teşekkürler, İyi Çalışmalar
Uçurtmalar, rüzgarın kuvvetiyle değil, rüzgara karşı koydukları direnç ile yükselirler.

birumher

Com porttan daha hızlı ve sağlıklı bir çözüm arıyorsan burada delphi ile yapılmış örnekler var. Ben com port emulasyonu olmayanını yani D2XXUnit i kullanıyorum çünkü com port ile hız problemleri yaşadım.
Geliştirdiğim programı da http://www.ftdichip.com/Projects/CodeExamples/Delphi/d2xxappl.zip daki örneği baz alarak geliştirdim. Herşey çok iyi çalışıyor. Hızı gayet güzel data kaçırmıyor vs. vs. Tabii ki bunu kullanmak için USB device ın comport olmayan yani D2XX driverlarını kurman gerek.
Birkan.Herguner

YARGICH

@birumher

    Teşekkürler, örnekleri aldım, hızlı olsun dice VCP yi kurmuştum ama bende D2xx'i kullanmak istiyorum. Bir sorunla karşılaşırsam senin başını ağrıtırım :D



Teşekkürler, İyi Çalışmalar.
Uçurtmalar, rüzgarın kuvvetiyle değil, rüzgara karşı koydukları direnç ile yükselirler.

bsivgin

Bildiğim kadarı ile birçok sanal COM port çeviriciler 9600 bps üzerinde sorun çıkarıyor. Bunun sebebi de USB'den küçük datalar yolladıkça hız düşmekte data büyüklüğü arttıkça hız artmaktadır. USB her datayı yollamak için 1mslik çerçeveler kullanır. USB  8 bitlik bir datayıda, 15Kbyte'lık bir datayıda  yollamak için 1ms lik çerçeveler kullanır. Şimdi alıcı bilgiyi alacak, datayı doğrulayacak ve kabul ettim bilgisi yollayacak. USB üzerinden bir byte'lık bilginin mümkün olan en kısa zamanda yollanması (turn-around time) yaklaşık 3 ms olacaktır.

Eğer 1 byte lık bir bilgi yolluyorsanız bunun süresi
9600 bps de bir bit süresi 1/9600=104 mikrosaniye
1 start,8 data, 1stop, No parity=10*104 mikro=1.04 ms dir. Buda
1 mslik çerçeve süresinden uzun olduğu için uygundur

19200bps de bir bit süresi 1/19200=52 mikro
10*52=0.5 ms buda 1ms lik çerçeve süresinden hızlı olduğu için uygun değildir diye bir sonuç çıkardım :D

Şimdi şöyle bir örnek verelim: Diyelimki 30 byte veriniz var bunu 9600 bps ile yollayacağımızı farzedlim. Bu veriyi tek tek yollarsanız her byte 1 ms de gideceği için toplam süreniz 30 ms olur.
ancak bu verinin hepsini aynı anda yolla derseniz 9600bps de bile süre yine 1 ms olacaktır. Bu verileri USB RS232 çıkışındaki PIC 9600bps ile takip edemez tabiki.. :D . Bunun için ince bir ayar gereklidir.
Yanlışım varsa düzeltin arkadaşlar. :arrow:

Bu nedenle daha yüksek hızlarda virtual com port yerine doğrudan USB kullanmak daha mantıklı olacaktır. Pratik olarak ben sadece virtual com port denemeleri yaptım bu hız bana yeterli olduğu için.

Yukarıdaki bilgilerin bir kısmı Elektor dergisinin 2005/9. sayısının 40. sayfasından,  Bir kısmıda  J.Axelson'un her yönüyle USB kitabının 20-21-22-23-24. sayfalarından esinlenerek yazılmıştır.

Saygılarımla
Bülent ŞIVGIN
www.diyot.com

YARGICH

@bsivgin

  Evet hocam, söylediklerinizde doğruluk payı çok yüksek. Yani teorik olarak anlattığınız gibi olup olmadığını bilmiyorum ama pratik olarak biraz önce gördüm ki USB çevirici ile 115.200 baud da COM portuna göre neredeyse 2 kat daha yavaş. Sürücü olarakta VCP kullanıyorum. Yalnız sonuçta USB :D belki D2XX kullanılarak ve verileri bir bütün halde yüklersek durum değişebilir.



İyi Çalışmalar.
Uçurtmalar, rüzgarın kuvvetiyle değil, rüzgara karşı koydukları direnç ile yükselirler.

z

Alıntı yapılan: "YARGICH"Selam,
Delphi'de, USB den veri gönderebilmek için beleş komponent var mı acaba....

Komponente ihtiyacınız yok, USB cihaz daha önceden windows tarafından tanınmış ise driverı zaten yüklü yada en azından hemencecik yüklenecek demektir. Sizin yapacağınız sadece API leri kullanmak olacak. API lerde zaten beleş.  :D
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

kemalsa

arkadaşlar söz tam api lerden açılmışken bende birkaç sorum olacak
1 . microchip mpusbapi.dll  hakında delphi de yapılmıs paylaşabileceğiniz örnekler varmı elinizde C++ yapılmıs örneği var ama ben C++ fazla anlamam .
2 mpusbapi.dll  bu dll kulnarak hic usb den pic e hiç data yolayıp almayaı deneyen oldumu C++ veya herhangbir dil aracılığı ile performansı nasıl
bu konularda bilgisi veya deneyimi olana arkadaslar yardımcı olabılırse bana çok sevinirim .şimdiden ilgi ve alka gösterecek arkadaşlara en içten teşkürü bir borç bilirim ...