C#中指令之间的精确计时

时间:2019-04-29 19:54:23

标签: c# raspberry-pi timing windowsiot

我正在尝试重写一些我已经在C#中为Arduino使用的代码,以便在Raspberry Pi 3(Windows 10 IOT)上使用。我遇到的Arduino代码如下:

void loop()
{
    while(true)
    {
        Step();
        delay(100);
    }
}

void Step()
{
    digitalWrite(StepPin, HIGH); //Sets the output to HIGH
    delayMicroseconds(2000);     //Waits 2ms
    digitalWrite(StepPin, LOW);  //Sets the output to LOW
}

此代码用于使用A4988步进驱动器控制步进电机。代码目标是每100ms给驱动板一个2ms的脉冲。

到目前为止,我在C#中所做的是:

public void Runner()
{
    while(true)
    {
        Step();

        //100ms delay here
    }
}    

public void Step()
{
    StepPin.Write(GpioPinValue.High);
    //2ms delay here
    StepPin.Write(GpioPinValue.Low);
}

我已经尝试过Thread.Sleep(),但是它似乎不合适,而且看起来也不太好:

Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
while(stopwatch.ElapsedMilliseconds < 2) ;

实现这种延迟的最佳方法是什么?

0 个答案:

没有答案