FT232 ile ilgili bir sıkıntı

Başlatan bunalmis, 31 Mart 2010, 19:52:24

z

D2XX.DLL kullanarak FT232 çipi ile iletişim kuruyorum. Çpiten  herhangi bir veri geldimi diye merak edersem Get_USB_Device_QueueStatus fonksiyonunu çağırıyor ve geri dönen değerinin sıfır olup olmadığına bakıyorum.

Dönen değer sıfırdan farklı ise veri gelmiş demek olduğundan receive buffer içeriğini okuyor ve programım gelen verilerin gereğini yapıyor.

Fonksiyondan sıfır değerle geri dönülmüşse Get_USB_Device_QueueStatus fonksiyonunu çağıran döngüde kalıyorum. Ne zaman veri gellirse döngüden o zaman çıkıyorum.

Bu sonsuz döngüyü kırmak için zamanı referans alan kontrol mekanizmam var ve döngünün 1sn den uzun sürmesi durumunda döngüden çıkıp hata mesajı verdiriyorum.

Bu kontrol mekanizmasına rağmen program bazen kilitlenip kalıyor. Program kitlendiğinde Delphide programımı pause ediyor ve ortaya çıkan CPU penceresinde kodları adım adım yürütürrek Get_USB_Device_QueueStatus fonksiyonunun derinliklerinde biraz ilerliyor ve ardından program counterın kendi kodlarıma geldiğini görüyor ve zaman kontrol mekanizman zaman aşımını tespit ediyor ve döngüden çıkıyor. 

Bu dögüden çıkmak için neden pause edip kodları adım adım yürütmem gerektiğini anlamış değilim.

Sıkıntının kaynağı için neler söyleyebilirsiniz?

Not: Kitlenmiş programı pause ettiğimde CPU ntdll.KiFastSystemCallRet:
etiketinde oluyor
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Bu cipi FT nin verdigi dokuman ve ornek kodlara gore kendimce kullaniyorum.

PC datalari receive ettiginde event olusturuyormu? Ben sorgulayarak data gelip gelmedigini ogreniyorum.
Bu da surekli bir dongude kalmami gerektiriyor.

Sizler FT232 yi nasil kullaniyorsunuz? D2XX dll den yana sorun yasiyormusunuz?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com