3

定義された数 Hz の周波数を生成する必要がある状況に陥っています。マルチメディア タイマーなど、インターネットで入手できるものをすべて試しましたが、これまでのところ、いくつかの if-else 条件を使用した無限ループで最良の結果が得られました。しかし、このアプローチの問題点は、ほとんどすべての CPU を消費し、他のアプリケーションが適切に動作するためのスペースを残さないことです。

数HzからKHzの周波数を生成するアルゴリズムが必要です。

C# で Windows プラットフォームを使用しています。

4

4 に答える 4

3

非リアルタイム プラットフォームでは、固定周波数の信号を正確に生成することはできません。いつでも、同じプロセスまたは他のプロセスからの優先度の高いスレッドがスレッドの実行をブロックする可能性があります。たとえば、GC スレッドが起動すると、ワーカー スレッドは中断されます。

そうは言っても、許容できるジッターと、サポートする必要がある最高周波数はどれくらいですか?

于 2012-10-04T14:15:05.963 に答える
2

私が問題に取り組む方法は、「音波」を生成してサウンドカードに出力することです。XNA を使用するなど、C# からサウンド カードにアクセスする方法があります。他の人が指摘しているように、そのために CPU を使用するのは良い方法ではありません。

于 2012-10-04T14:33:37.680 に答える
0

Thread.Sleep(delay);ループで使用する

プロセッサの使用量を減らします

于 2012-10-04T14:07:24.847 に答える
0

タイマーを生成しているので、周波数の期間に基づいてスリープしたいと思うでしょう。

独自のスレッドで周波数発生器を実行し、呼び出す必要があります

Thread.Sleep(yourFrequencyPeriodMs);

period の各反復で。

于 2012-10-04T14:08:23.767 に答える