我正在尝试编写一个循环来调整激光的强度。我在使用虚拟变量只是为了检查代码是否有效,但程序无法按预期工作。
该代码将激光器设置为.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++;
}
}
}
答案 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);
}