C# 测试回路故障

C# 测试回路故障,c#,C#,我试图写一个循环来调节激光的强度。我使用一个虚拟变量只是为了检查代码是否正常工作,但程序没有按预期工作 该代码将激光器设置为.2A,但不会改变 以下是我尝试过的代码: private void\u单击(对象发送者,事件参数e) { 双套电流; var startTime=DateTime.UtcNow; while(DateTime.UtcNow-startTime

我试图写一个循环来调节激光的强度。我使用一个虚拟变量只是为了检查代码是否正常工作,但程序没有按预期工作

该代码将激光器设置为.2A,但不会改变

以下是我尝试过的代码:

private void\u单击(对象发送者,事件参数e)
{
双套电流;
var startTime=DateTime.UtcNow;
while(DateTime.UtcNow-startTime=200)
{
//虚拟电流值
setLDCurr=0.3;
激光设置电流设置点(设置电流);
testVariable++;
}
}
}

您一直在循环中声明testVariable并重置其值。您还在if和elseif语句中对其进行了迭代,这是多余的,因为没有任何值会导致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++;
}
double-setLDCurr;
var startTime=DateTime.UtcNow;
int testVariable=199;
while(DateTime.UtcNow-startTime
编辑:谢谢鲁弗斯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);
}
double-setLDCurr;
var startTime=DateTime.UtcNow;
int testVariable=199;
while(DateTime.UtcNow-startTime
int testVariable=199
在每个循环上它总是199 Ah true,如果我在while循环上定义变量并将testVariable++,这是否会被修复;在if循环之外,但在while循环之内?测试这种变化比写问题花费的时间要少。您只需将
testVariable
的声明和初始化移动到
while
循环之前。在
if/else
之后移动
testVariable++
(和
laser.setLdCurrSetpoint(setLDCurr);
)将减少重复代码,但不会影响结果。此外,在每次迭代时,不要在
while
条件中进行数学运算,您可以只计算一次
endTime
并将当前时间与之比较:
var endTime=DateTime.UtcNow.AddSeconds(5);while(DateTime.UtcNow
或while循环的主体只能是一行:
laser.setldcurrsetter(testVariable++<200?0.2:0.3)=200或条件运算符有两个布尔选项。由于您有两个选项(数字大于或不大于200),因此输出为.2或.3。因此testvariable递增,条件为_u<200,如果是,输出为0.2,如果否,输出为0.3。如果不清楚,请检查链接