C#/.NET 環境でこの種のきめの細かいタイミング制御を行うための簡単で明確な方法はありません。クラスを使用しStopwatch
て近づくことはできますが、解像度はリアルタイムの作業には適していません。タイマーを使用してこのようなことを行うには-ナンセンスコードですが、経過時間が目的の間隔になるまでループします。
Stopwatch swatch = new Stopwatch();
while(true)
{
swatch.Reset();
swatch.Start();
PortAccess.Output(888, 1);
while (swatch.ElapsedMilliseconds < 1) { }
swatch.Stop();
swatch.Reset();
swatch.Start();
PortAccess.Output(888, 0);
while (swatch.ElapsedMilliseconds < 1) { }
swatch.Stop();
}
Sleep
どこでもタイミングに使用しないでください。 Sleep
基本的に、「少なくともXミリ秒間スリープする」とだけ言っています。したがってSleep(1)
、25ms スリープする可能性があります。
ところで、パラレル ポートを備えた PC はほとんどありません。これは古い - いいえ、PC の外部でビットを書き込んだり、出力を反転したりするための最も古い方法です。PC の IO ポートに直接出力して行うのも本当にゴミです。適切なドライバーを備えた外部デジタル IO デバイス/ボード/インターフェイスを探すことができます - はるかに良いアイデアです。