timer nesnesi thread olarak arka planda çalışan bir döngü müdür, yoksa donanımsal bir sayıcı mıdır?
1. şık sanırım ;)
1 saniyelik gecikme ile bir saat yaptım. fakat 15 dakikada 3 saniye geri kaldı sanırım bu bir donaımsal sayaç değil. :)
Alıntı yapılan: "OptimusPrime"1 saniyelik gecikme ile bir saat yaptım. fakat 15 dakikada 3 saniye geri kaldı sanırım bu bir donaımsal sayaç değil. :)
Saat yapacaksan sitemin saatini oku, öylesi cok daha sağlıklı olur. Timerler belli zamanlarda döngüsel olarak belirli işleri yapmak için kullanılıyor.
O "timer"a gerçek zaman dilimleri tutmak için güvenilmez, paralel porttan fonksiyon üretmeyi denerken sağlıksız sonuçlar almıştım. İyi çalışmalar.
1 snlik timer olsun. her saniye, 20mS uzunluğunda bip sesi üretilsin. Normalde uygulama kendi halinde beklerken her saniye bip sesi duyarız. Formun, maksimize butonunu 5 sn süreile basılı tutalım. bu sırada timerin durduğu, bip sesinin kesildiği görülür.
Bir thread içinde sistem saati kontrol edilebilir. Aynı anda çalışmasını istediğiniz işlemleri ayrı threadler içine yerleştirirsiniz.
Normalde timer nesnesi formun kendi Thread'ine senkron olduğu için formdaki bir kesintiden etkilenir. ayrı thread içinde olursa, formun meşguliyetinden etkilenmez.
Alıntı yapılan: "OptimusPrime"timer nesnesi thread olarak arka planda çalışan bir döngü müdür, yoksa donanımsal bir sayıcı mıdır?
Donanımsal bir sayıcıdır...
Windows'un Multimedia Timer'ini kullanmalisin, onda sasma olmaz.
600µs bir gecikme yapmayı düşünüyordum ama böyle bir imkan olmadığını görünce 5 katı olan 3ms ilede işimi görebilirim diye düşündüm. timer nesnesi beni yarı yolda bırakınca vaz geçtim. :)
cevaplardan anladığım kadarıyla tahmin ettiğim gibi timer nesnesi donaımsal bir sayıcı değil. ;)
Alıntı yapılan: "picusta"Windows'un Multimedia Timer'ini kullanmalisin, onda sasma olmaz.
belli aralıklarda usb den veri alıp geri dönmem gerekiyor. WMT ne kadar kararlı olursa olsun bu seferde usb trafiğini beklemem gerekiyor sanırım.
vazgeçtim.:)
thread gerekli
timer işini görür.dediğiniz işlemi proton ve VB.net ile yaptım. usb hid ile gönderdim bilgiyi işleme tabi tutup geri aldım yanlız 120ms den daha kısa zaman aralığında bilgi almayı berceremedim.
Alıntı yapılan: "wsxwsx"thread gerekli
Cihaz ile ilgili işlemler ayrı bir thread ile yapılmalıdır.
Ufak bir thread örneği yaptım.
http://www.mediafire.com/?xwuvomedg6g
THREAD_PRIORITY_HIGHEST
desenizde olmuyor. sanırım usb trafiğini de durduracak bişey lazım :)
dediğim gibi vaz geçtim.
Alıntı yapılan: "OptimusPrime"THREAD_PRIORITY_HIGHEST
desenizde olmuyor. sanırım usb trafiğini de durduracak bişey lazım :)
dediğim gibi vaz geçtim.
Bence senin programinin yapisinda sorun var. Süreç arasi senkronzasyona dikkat et. Olmadi driver yaz.
:)
hocam driver yazabilcek kapasitede olsam, timer nesnesi donanımsal mı yoksa yazılımsal mı diye sorar mıyım hiç... :)
Ne olarak yapmak istedigini anlatmamissin. Istedigin kisa süre timer'i, ise dedigim Multimedia timer'i kullandin mi ? istedigin sonuca ulasti mi ?(3 ms)
Arada USB diyorsun, o kismi hiç açiklamamissin.
Benim anladigim su : USB kismini ayri bir thread'de isleyeceksin, senin timer üzerindeki thread ise ona periyodik araliklarla sinyal gönderecek Event, veya FIFO.
Sorunun nerede oldugunu söylemiyorsun.
aslında bu başlıkta merak ettiğim konuyu takıldığım bir nokta ile bağdaştırınca ortaya böyle ne olduğu belirsiz bir tartışma çıktı.
ben konuyu özetleyeyim.
olay şöyle.
FT232 nin modem status fonksiyonunu kullanıp DCD pinindeki lojik seviyeleri her 600µs de bir okumak istedim. fakat µs gecikme veren bir fonksiyon bulamadım. Sleep fonksiyonu ms gecikme yaptığı için bende bari 600µs nin 5 katı olan 3ms yede bir okuyayım dedim. bir thread oluşturdum ve her 3ms de bir kontrol ettim. sonuç hüsran oldu. sonra timer nesnesi ne kadarlık gecikme yapıyorduki diye bakarken onunda ms gecikme yaptığını gördüm. sonra da aklıma bu donaınmsal mı yazılımsal mı sorusu geldi. foruma sorayım dedim. derken olay benim takıldığım noktaya kaymaya başladı.
vs vs
olay böyle.