私は拍/分で私の心拍数のレートでConsole.Beep
を生成するはずのタイマーを持っています。私は私のC#タイマーでTimer.Interval
を計算するには、次の簡単な数式を使用しています:私はウェアラブルから私の心拍数を読んでいますリセットすることなくタイマーの間隔を変更できますか?
ServerVarValues = new ws ServerVarValues();
this.timerHeartBeatSound = new System.Windows.Forms.Timer(this.components);
public class ServerVarValues
{
public int HR;
public DateTime LastHRUpdate;
public int SpO2;
public DateTime LastO2Update;
public double Temperature;
public DateTime LastTempUpdate;
}
//... I plug in my heart rate to calculate my new timer interval...
int tVal = (int)Math.Round((ws.HR/60.0) * 1000,0);
timerHeartBeatSound.Interval = tVal;
// and with the new interval, the timer generates a Tick Event that runs this
private void PlayHeartBeatSound(object sender, EventArgs e)
{
Console.Beep();
}
。問題は、自分のHRが変更されるたびに、タイマーの間隔を変更するとタイマーがリセットされることです。こうして、滑らかな変化する心拍数の代わりにしゃっくりが頻繁に聞こえます。
心拍数が変わるたびにタイマーをリセットしないようにするにはどうすればよいですか?
.NETにはいくつかのタイマークラスがあります。どちらを使用していても、レートの変更に常に対応することは可能です。しかし、いくつかのタイマークラスは、他のタイマークラスに比べてより順応性があります。文脈によっては、実際のタイマーではなくループ内で 'Task.Delay()'を使用し、新しいデータを受け取るときに遅延値を非同期的に更新する方が望ましいことがあります。あなたがやろうとしていることを正確に示し、問題の修正に問題がある特定の問題を再現する、良い[mcve]を提供してください。 –
こんにちはPeter - コードは実際にあなたが見るものです。私はビジュアルスタジオでタイマーを設定し、タイマー間隔を渡して有効にします。 tickイベントでは、Console.Beepを呼び出します。私が望まないのは、心拍数が変化するので、時間間隔を変えるたびに、タイマーをリセットすることです。私は、ビジュアルスタジオタイマーが理想的なものではないことを暗示していると思います。代わりに他のクラスを見てください。 – LeoM
_ "コードは本当にあなたが見ているもの" _ - 本当ですか? _anything_を追加せずに上記のプログラムをコンパイルできますか? 'tVal'や' timerHeartBeatSound'変数や 'ws'の宣言ではなく、' class'とメソッド宣言にコードを入れることに気をつけませんか?先ほどお話した[mcve]の記事をお読みください。そのページの一番下にリンクされている記事を含む(さらには特に)[ask]も参照してください。 Stack Overflowに関するヘルプが必要な場合は、良い質問を投稿する方法を学ぶ必要があります。あなたは今それをやっていません。 –