XScript 手册 · Chapter 3

title: "控制流 — if / for / while" chapter: 3 images:

  • xscript-control-flow.png

控制流

XScript 支持三种基础控制语句:ifforwhile。语法与 C# 一致,设备控制场景这三种足以覆盖。

if

if (IO[START] == ON) {
    Log.Add("start pressed");
}
else if (IO[RESET] == ON) {
    Log.Add("reset pressed");
}
else {
    // 待机
}

常见用法

  • 传感器检查if (Cylinder[LOADER].ReadSensorA() == true)
  • 错误保护if (Motor[X].GetEndStatus() != 0) ShowError("E100");
  • 标志判定if (initOk == false) return false;

for

次数明确时使用。

for (int i = 0; i < 10; i++) {
    Motor[X].MoveAbs(i * 10.0, true);
    Sleep(100);
}

while

直到条件成立为止,反复执行。设备等待循环中常见。

int timeout = 0;
while (IO[READY] == OFF) {
    Sleep(50);
    timeout += 50;
    if (timeout > 5000) {
        ShowError("E_TIMEOUT");
        return false;
    }
}

注意:while(true) 无出口会锁住线程并冻结系统。必须包含超时或中断条件。简单等待请优先使用 Wait() API。

建议

  • 始终用 { } 包裹语句体 — 便于后续添加代码
  • ShowError() 后立即 return false,让上层步骤能感知错误
  • 长条件分多行书写并加注释