こんにちは。おおさわと申します。
タイトルのとおり、1ミリ秒未満の間隔でイベントを発生させる方法がわかりません。
Timer コンポーネントなら、 Interval プロパティを調整すれば最短1ミリ秒までの間隔でイベントを発生させられるのですが、
今回私はオシロスコープ的なプログラムを作りたいので、1ミリ秒より短い間隔で発生をさせたいのです。
どなたかご教授お願いいたします m(-_-)m
環境は、Delphi 7 pro / WindowsXP です。
ちなみに CPU のクロック数は 2.4[GHz] なのですが、これも関係してくるでしょうか?
Windows のようなマルチタスク、イベントドリブンなOSでは、たとえ1ミリ秒
でも正確な時間間隔で何かをするのは不可能だと思います。精度にもよりますけど。
QueryPerformanceCounterがありますが、OS上無理があります。
返信ありがとうございます。
なるほど。無理なのですね。OTL
もう一つ質問があるのですが、
音声のサンプリングなどのような場合は時間間隔はどのようにしているのでしょうか?
サウンドレコーダは 44.1[kHz](=22.7[μ秒] 間隔) あたりでサンプリングできているのですが、これはどのように実現すればよいのでしょうか。
何度も質問して申し訳ありません。
Pentium CPUならば、RDTSC (Read Time-Stamp Counter)で μ秒の時間間隔も測定可能です。
> サウンドレコーダは 44.1[kHz](=22.7[μ秒] 間隔) あたりでサンプリングできているのですが
それはサウンドカードなどのハードウェアがやっているんじゃないですか。
> 今回私はオシロスコープ的なプログラムを作りたいので
こういうことをしたいなら、それ用のボード(A/D変換)を購入するのがいいと
思います。
>jok さん
あっ!サウンドカードの方がやっていたのですか。
確かにそうすると実現できますね。
すみません。まだまだ無知なもので(汗。出直してきます。
>せれろん さん
RDTSC ですか。そのようなものがあるとはまったく知りませんでした(汗
[μ秒] とはかなり短いですね(驚。少しぐぐってみます。
返信ありがとうございました。ようやく解決しました。
まだまだ Delphi に関しては知らない点が多いので、
これからもよろしくお願いいたします。m(__)m
ツイート | ![]() |