C# Timer Yardım

Katılım
21 Ara 2009
Mesajlar
48
Puanları
1
Yaş
36
Merhabalar;

C# ile paralel port üzerinden step motor kontrolü yapıyorum. Motora belirli sürelerde clock palsi göndermek gerekiyor. Yani porta sırayla 1 ve 0 göndermem gerekiyor. bunu şu komutlar ile sağlıyorum;


for (int i = 0; i < 10; i++) { PortAccess.Output(888, 1); System.Threading.Thread.Sleep(50); // Gecikme Satırı PortAccess.Output(888, 0); System.Threading.Thread.Sleep(50); // Gecikme Satırı }

Fakat bu şekilde yapınca program içerisinde başka bir tuşa basınca donma oluyor. Bu yüzden timer kullanmak istiyorum. Sizce nasıl bir döngü kurmalıyım?
 
teşekkü ederim...
aslında ben thread değil de timer kullanarak yapmak istiyordum. birde mikrosaniye cinsinden bekletme verebileceğim bir yol var mı c#'da bildiğiniz?
 
teşekkü ederim...
aslında ben thread değil de timer kullanarak yapmak istiyordum. birde mikrosaniye cinsinden bekletme verebileceğim bir yol var mı c#'da bildiğiniz?

Bak arkadaşım timer kullansanda programın bir iş yaparken yine donma yapacaktır yani değişen hiçbir şey. Senin sorununun çözümünü Ahmetbogus bey vermiş zaten.
 
PC'lerde mikro saniye bazlı işlem yapmak istiyorsan windows kullanmaman gerekli.
Embedded pc lerle rtos uygulamalarına bakınız.
 
teşekkür ederim arkadaşlar bi araştırayım dediklerinizi...
 
Timer kullanırsan donma olmaz. Ama Timer milisaniye bazında kesin çalışmaz. Yani kare dalga genliği her zaman eşit olmaz. Senin yazdığın yöntem dalge genliği için daha doğru. Faklat bu kodu Multi therad olarak yapmalısın. Bu zor değil ama zor geliyorsa bu kodu activeX veya .net compenent içersine koy ana program bu activex'i çalıştırıp durdursun.
 
işte o son dediğinizi nasıl yapacağımı bilemiyorum. bu konu hakkında bir döküman veya kitap var mı bildiğiniz?
 
timer kullanabilirsin ama .net üzerindeki timer milisaniye cinsinde çalışır "mikrosaniye" değil.
kodu döngü içinden çıkarman gerekir önce.

Visual studio'da sol bölümden System.Windows.Forms.Timer nesnesi sürükle. Tick eventi içine kendi kodlarını yaz.
Properties penceresinde Interval kısmına istediğin istediğin gecikme süresini yaz (ms cinsinden)

Timer.Start() ve Timer.Stop() komutları ile timer'ı başlatıp durdurabilirsin.
Kolay gelsin.
 

Forum istatistikleri

Konular
128,391
Mesajlar
917,201
Kullanıcılar
450,277
Son üye
Hzomero

Yeni konular

Geri
Üst