FT232 ve d2XX.dll uzerine sohbet (soru ve cevaplar) Delphi uygulamalari

Başlatan bunalmis, 23 Haziran 2010, 14:40:02

z

FT232 ile delphinin birebir baglantisi olmasa da bazi tartisma sonuclarini delphi de uygulamayi dusunuyorum.
Bu nedenle burayi daha uygun buldum.

FT232 nin 128Byte RX bufferi var.
Timeout suresi 1ms artislarla minimum 2ms verilebiliyor.

1Start +8Data +1Stop formatinda 640000 Baudun  altina inmedigimiz surece,

PC den cipe yada cipten PC ye 1 byte da yollasak 128 byte da yollasak verinin karsiya ulasma suresi 2ms dir.

Oncelikle bu konuda hemfikirmiyiz?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

FT232 meraklısı yok galiba.

Neyse devam edeyim. Eğer dediğim gibi FT232 2ms den önce veri yollayamıyorsa 128 byte veri gönderildiğinde karşı tarafın bu verileri okuyup ardından "GÜZEL" verilerde hata bulamadım yada "KÖTÜ" gelen verilerde hata yakaladım demenin
zaman karşılığı da 2ms olacaktır.

O halde PC, gönderdiği 128 Byte verinin karşı tarafça kabul edilip edilmediğini ancak 4ms sonra bilecek demektir.

Çünkü  640 KBaud kullanıyoruz. (1/640000)*10*128=0.002 saniye.

Buraya kadar hata yapıyormuyum? 
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

4ms de 128 byte veri aktarımı çok yavaş.

Basit bir üçkağıtla iletişim hızını arttırabiliriz. Paketlerimizi 128 byte değil de 127 byte seçersek ve işlemcimizi FT232den gelen verilere senkronlarsak gelen her bir byta karşılık biz de 1 bye yollarsak, 127 byte verinin hemencecik kontrolunu yapıp Güzel yada Kötü cevabını da 128. byte olarak PC ye yollarsak bu durumda PC 127 byte veriyi göndermesi (128.byte sahte veri)ve Güzel yada Kötü cevabını alması 2 ms içinde tamamlanmış olacaktır.

Şimdi diyebilirsinizki FT232 3MBauda kadar destek veriyor ne gerek var bu üçkağıda.

Ben uygulamamdaki özel durumdan dolayı 640 K baud üzerine çıkamıyorum. Eğer 3MBaud kullanmış olsaydım 128 byte veriyi yollamamız yaklaşık 0.4ms tutacaktı. Güzel yada kötü cevabını 0.8 ms de yada yukarıdaki üçkağıtla 127 byte veriyi 0.4ms de alacaktık.






Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

1.6Ghz 1 Gbyte Rama sahip N270 işlemcide delphide yazdığım bazit bir kod parçası
128byte veriyi gönderip hemen ardından bir daha 128 Byte yollamaya kalkarsa 256Byte veri 16ms...32ms de karşıya gitmektedir.

Üçkağıtsız yöntemde 128 byte veri 4 ms de gitmekte (Ok-Nok cevabının alınması dahil) o halde 256 byte 8 ms de gidecektir.  16 ms den 8ms çıkarsak 8ms buluruz. Bu süre de windowsun diğer uygulamalara da hizmet etmesi anlamına gelir.

Peki burada doğru düşünüyormuyum?

Eğer doğruysam 16ms de 256 byte veri aktarımı dehşet düşük bir hızdır.

(Düzeltme: Küçük bir hata yaptığımı farkettim. Sözkonusu üçkağıt için 127 byte a gerek yok. Alınan her bir byta karşılık bir byte da biz yollarsak 128. Bytı aldığımızda Ok -Nok cevabını yollamamız 2ms içinde olacaktır.
)
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

orhanc

i'm doing nothing... Giddy Up  http://www.drorhan.com

z

FT nin kendi sitesinde verdigi dll i kullaniyorum.

Sorunum buyuk olcude bitti gibi. USB kartimi PC tarafindan sorgulandiginda veri yollamasi yerine kritik durumlarda PC ye data
yollayacak sekle donusturdum. Dolayisi ile PC nin peryodik olarak karta soru sormasi artik gerekmiyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com