Benutzer mit den meisten Antworten
Stoppuhr mit Signal

Frage
-
Hallo,
ich habe vor kurzem begonnen C# zu lernen. Jetzt würde ich gerne eine Stoppuhr programmieren und wollt fragen ob ihr mir beim Code helfen könnt. Hier mal kurz die Funktionen: Timer soll per Button gestarten werden können und gestoppt werden können. Allerdings soll er automatisch nach dem Start bis auf 2 minuten zählen dann ein Signalsound ausgeben und dann auf 50 Sekunden zählen und wieder einen Signalsound. Dass ganze soll so lange immer wieder passieren bis man auf Stop klickt.
Ich wäre euch sehr dankbar wenn ihr mir den Code geben würdet, oder mir zumindest sagt wie ich das Programm aufbauen muss, welche Funktionen usw... Ich nutze Visual C# 2010 und Windows Forms.
Mfg
Marko
- Bearbeitet germanman Freitag, 2. September 2011 16:34
Antworten
-
Schau dir mal die Timer-Klasse an: http://msdn.microsoft.com/en-us/library/system.windows.forms.timer.aspx.
MVP Data Platform Development My blog- Als Antwort markiert Robert BreitenhoferModerator Montag, 12. September 2011 09:12
-
Hallo Marko,
hier ein Beispiel:
using System; using System.Windows.Forms; //Timer soll per Button gestartet werden können und gestoppt werden können. //Allerdings soll er automatisch nach dem Start bis auf 2 minuten zählen //dann ein Signalsound ausgeben und dann auf 50 Sekunden zählen und wieder //einen Signalsound. Dass ganze soll so lange immer wieder passieren bis man auf Stop klickt. namespace StoppuhrDemo { public partial class Form1 : Form { Timer zeitgeber; Button btnStart = new Button { Text = "Start", Top = 0 }; Button btnStop = new Button { Text = "Stop", Top = 30 }; Label lblAnzeige = new Label { Left=10,Top = 60, AutoSize = true }; DateTime startZeit; /// <summary>1 Sekunde</summary> int zeitgeberIntervall = (int)TimeSpan.FromSeconds(1).TotalMilliseconds; /// <summary>Zeit, bis zum ersten Ton</summary> TimeSpan maximalZeit1 = TimeSpan.FromMinutes(2); /// <summary>Zeit, bis zum zweiten Ton</summary> TimeSpan maximalZeit2 = new TimeSpan(0,2,50); public Form1() { InitializeComponent(); Text = "Zeitgeber-Demo"; Controls.Add(btnStart); Controls.Add(btnStop); Controls.Add(lblAnzeige); btnStart.Click += BtnStart_Click; btnStop.Click += BtnStop_Click; zeitgeber = new Timer(); zeitgeber.Interval = zeitgeberIntervall; zeitgeber.Tick += Zeitgeber_Tick; } void BtnStart_Click(object sender, EventArgs e) { startZeit = DateTime.Now; ZeitAnzeigeRefresh(); zeitgeber.Start(); } void BtnStop_Click(object sender, EventArgs e) { zeitgeber.Stop(); } void Zeitgeber_Tick(object sender, EventArgs e) { ZeitAnzeigeRefresh(); if (IstZeitImBereich(maximalZeit1)) { Console.Beep(); return; } if (IstZeitImBereich(maximalZeit2)) { Console.Beep(1000,300); startZeit = DateTime.Now; } } private bool IstZeitImBereich(TimeSpan maxZeit) { return DifferenzZeit() > maxZeit && DifferenzZeit() < EinIntervallWeiter(maxZeit); } private TimeSpan EinIntervallWeiter(TimeSpan maximalZeit1) { return maximalZeit1 + TimeSpan.FromMilliseconds(zeitgeberIntervall); } private void ZeitAnzeigeRefresh() { lblAnzeige.Text = DifferenzZeit().ToString(@"mm\:ss"); } private TimeSpan DifferenzZeit() { return DateTime.Now - startZeit + TimeSpan.FromMilliseconds(500); } } }
_____________Sehr genaue "Stoppuhr"-Zeiten kann man übrigens mit der Stopwatch-Klasse erhalten.
Aber für Deine Zwecke ist mein Code-Beispiel am geeignetsten.
ciao Frank- Als Antwort markiert Robert BreitenhoferModerator Montag, 12. September 2011 09:12
Alle Antworten
-
Schau dir mal die Timer-Klasse an: http://msdn.microsoft.com/en-us/library/system.windows.forms.timer.aspx.
MVP Data Platform Development My blog- Als Antwort markiert Robert BreitenhoferModerator Montag, 12. September 2011 09:12
-
Hallo Marko,
hier ein Beispiel:
using System; using System.Windows.Forms; //Timer soll per Button gestartet werden können und gestoppt werden können. //Allerdings soll er automatisch nach dem Start bis auf 2 minuten zählen //dann ein Signalsound ausgeben und dann auf 50 Sekunden zählen und wieder //einen Signalsound. Dass ganze soll so lange immer wieder passieren bis man auf Stop klickt. namespace StoppuhrDemo { public partial class Form1 : Form { Timer zeitgeber; Button btnStart = new Button { Text = "Start", Top = 0 }; Button btnStop = new Button { Text = "Stop", Top = 30 }; Label lblAnzeige = new Label { Left=10,Top = 60, AutoSize = true }; DateTime startZeit; /// <summary>1 Sekunde</summary> int zeitgeberIntervall = (int)TimeSpan.FromSeconds(1).TotalMilliseconds; /// <summary>Zeit, bis zum ersten Ton</summary> TimeSpan maximalZeit1 = TimeSpan.FromMinutes(2); /// <summary>Zeit, bis zum zweiten Ton</summary> TimeSpan maximalZeit2 = new TimeSpan(0,2,50); public Form1() { InitializeComponent(); Text = "Zeitgeber-Demo"; Controls.Add(btnStart); Controls.Add(btnStop); Controls.Add(lblAnzeige); btnStart.Click += BtnStart_Click; btnStop.Click += BtnStop_Click; zeitgeber = new Timer(); zeitgeber.Interval = zeitgeberIntervall; zeitgeber.Tick += Zeitgeber_Tick; } void BtnStart_Click(object sender, EventArgs e) { startZeit = DateTime.Now; ZeitAnzeigeRefresh(); zeitgeber.Start(); } void BtnStop_Click(object sender, EventArgs e) { zeitgeber.Stop(); } void Zeitgeber_Tick(object sender, EventArgs e) { ZeitAnzeigeRefresh(); if (IstZeitImBereich(maximalZeit1)) { Console.Beep(); return; } if (IstZeitImBereich(maximalZeit2)) { Console.Beep(1000,300); startZeit = DateTime.Now; } } private bool IstZeitImBereich(TimeSpan maxZeit) { return DifferenzZeit() > maxZeit && DifferenzZeit() < EinIntervallWeiter(maxZeit); } private TimeSpan EinIntervallWeiter(TimeSpan maximalZeit1) { return maximalZeit1 + TimeSpan.FromMilliseconds(zeitgeberIntervall); } private void ZeitAnzeigeRefresh() { lblAnzeige.Text = DifferenzZeit().ToString(@"mm\:ss"); } private TimeSpan DifferenzZeit() { return DateTime.Now - startZeit + TimeSpan.FromMilliseconds(500); } } }
_____________Sehr genaue "Stoppuhr"-Zeiten kann man übrigens mit der Stopwatch-Klasse erhalten.
Aber für Deine Zwecke ist mein Code-Beispiel am geeignetsten.
ciao Frank- Als Antwort markiert Robert BreitenhoferModerator Montag, 12. September 2011 09:12