gpt4 book ai didi

c# - C#中高速切换位

转载 作者:太空宇宙 更新时间:2023-11-03 20:32:40 25 4
gpt4 key购买 nike

我想用小于 1 毫秒的时间切换位。我更喜欢在 C# Windows 窗体中执行此操作,但它可以在 C++、C# 中的控制台应用程序中。我想要做的是切换位并通过 LPT 端口发送。

这段代码中的开关位是为了减慢..

PortAccess.Output(888,1);
Thread.Sleep(1);
PortAccess.Output(888,0);
Thread.Sleep(1);

我读过这篇文章:How to use QueryPerformanceCounter? , 但它只是计时器..

请帮忙:)

最佳答案

在 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) 可能会休眠 25 毫秒。

顺便说一下:几乎没有 PC 有并行端口了。这是一种古老的——不,是最古老的在 PC 外部写入位或翻转输出的方法。直接输出到PC IO口来做,也太垃圾了。您可以寻找具有合适驱动程序的外部数字 IO 设备/板/接口(interface) - 更好的主意。

关于c# - C#中高速切换位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6690149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com