测试回路故障

时间:2019-06-25 17:13:41

标签: c#

我正在尝试编写一个循环来调整激光的强度。我在使用虚拟变量只是为了检查代码是否有效,但程序无法按预期工作。

该代码将激光器设置为.2A,但未更改。

这是我尝试过的代码:

private void AdjustIntensity_Click(object sender, EventArgs e)
{
    double setLDCurr;
    var startTime = DateTime.UtcNow;
    while (DateTime.UtcNow - startTime < TimeSpan.FromSeconds(5))
    {
        int testVariable = 199;
        if (testVariable < 200)
        {
            //dummy Current value
            setLDCurr = 0.2;
            laser.setLdCurrSetpoint(setLDCurr);
            testVariable++;
        }
        else if (testVariable >= 200)
        {
            //dummy Current value
            setLDCurr = 0.3;
            laser.setLdCurrSetpoint(setLDCurr);
            testVariable++;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您一直在循​​环内声明testVariable并重置其值。您还在if和else if语句中对其进行了迭代,该语句是多余的,因为没有值将导致if else异常。检测时间变化的确切时间似乎有点过头了,我不确定速度有多重要以及DateTime.UctNow进程有多长时间。另外,如果这样做的目的是根据迭代次数切换激光强度,则最好不使用testVariable而是使用时间跨度。

double setLDCurr;
var startTime = DateTime.UtcNow;
int testVariable = 199;

while (DateTime.UtcNow - startTime < TimeSpan.FromSeconds(5))
{
   if (testVariable < 200)
   {
      //dummy Current value
      setLDCurr = 0.2;
      laser.setLdCurrSetpoint(setLDCurr);
   }
   else
   {
      //dummy Current value
      setLDCurr = 0.3;
      laser.setLdCurrSetpoint(setLDCurr);
   }
   testVariable++;
}

编辑:谢谢Rufus L

double setLDCurr;
var startTime = DateTime.UtcNow;
int testVariable = 199;
while (DateTime.UtcNow - startTime < TimeSpan.FromSeconds(5))
{
   laser.setLdCurrSetPoint(testVariable++ < 200 ? 0.2 : 0.3);
}