Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Visual C# => Konuyu başlatan: superconductor - 08 Eylül 2012, 16:03:13

Başlık: timer ile kronometre
Gönderen: superconductor - 08 Eylül 2012, 16:03:13
Merhabalar..
Çizgi izleyen robotum için en iyi tur zamanını görebileceğim bir program yazayım dedim visual studio'da.
timer komponenti interval olarak milisaniye değer alıyor ama 1 milisaniyede tetiklenecek şekilde kurduğumda 1000 milisaniyeyi gerçek zamanda 15 saniyeden fazla bir zamanda tamamladı.Windows rtos değil ondan dedim.Hane azaltıp milisaniye yerine salise göstertebilirim ve timerida bir şekilde kalibre edip salilse için intervala 10 yerine atıyorum 6 yazabilirim..peki bu kod daha performanslı bir pc de sapıtırmı?şu an anakartım yanık olduğundan denemelerimi atom işlemcili netbookta yapıyorum..visualde gerçek zaman çekebileceğim bir sınıf varmı?

private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Text = minutes.ToString();
            label2.Text = seconds.ToString();
            label3.Text = miliseconds.ToString();
            miliseconds++;
            if (miliseconds > 999)
            {
                miliseconds = 0;
                seconds++;
            }

        }
Başlık: Ynt: timer ile kronometre
Gönderen: berat23 - 08 Eylül 2012, 18:49:21
birşey merak ettim,0 ladıktan sonra 1 arttırmanın mantığı nedir?
Başlık: Ynt: timer ile kronometre
Gönderen: superconductor - 08 Eylül 2012, 21:29:30
milisaniyeyi sıfırlayıp saniyeyi bir arttırıyorum sonrada saniye 59'u geçince saniye sıfırlanıp dakika bir artıyor.

mesaj birleştirme:: 08 Eylül 2012, 22:52:49

Biraz daha araştırdıktan sonra çözümü buldum belki timer konusunda benim gibi problem yaşayan arkadaşlara yardımcı olur.timer komponenti ile çok hassas çalışmak mümkün değilmiş.zaten kronometre sınıfı varmış libraryde.

Stopwatch kronometre =new Stopwatch();
       double milisecond = 0;
        private void timer1_Tick(object sender, EventArgs e)
        {
            TimeSpan delta_time = kronometre.Elapsed;
            milisecond = delta_time.TotalMilliseconds;
            milisecond = Math.Floor(milisecond);
            label1.Text=milisecond.ToString();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Enabled=true;
            timer1.Start();
            kronometre.Start();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            timer1.Stop();
            kronometre.Stop();
        }