| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package com.mes.step;
- import com.mes.core.StationConfig;
- import com.mes.core.StationContext;
- import com.mes.device.IDeviceDriver;
- /**
- * 读取设备数据步骤
- * 在流程开始时读取设备数据并显示,不阻塞流程
- */
- public class ReadDeviceDataStep extends AbstractStep {
- public ReadDeviceDataStep() {
- super("read_device_data", "读取设备数据");
- this.async = false;
- this.requiresUserInteraction = false;
- }
- @Override
- public boolean execute(StationContext context) {
- // 检查设备是否启用
- if (!context.isDeviceEnabled()) {
- log.debug("[{}] 设备未启用,跳过读取", context.getStationCode());
- return true;
- }
- IDeviceDriver driver = context.getDeviceDriver();
- if (driver == null || !driver.isConnected()) {
- log.warn("[{}] 设备未连接,无法读取数据", context.getStationCode());
- return true; // 不阻塞流程
- }
- try {
- StationConfig config = StationConfig.getInstance();
-
- // 读取第一行设备数据
- StationConfig.DeviceInfoRow row1 = config.getDeviceInfoRow(0);
- if (row1 != null) {
- int presetCount = driver.readRegister(row1.getPresetAddress());
- int finishedCount = driver.readRegister(row1.getFinishedAddress());
- context.setPresetCount(presetCount);
- context.setFinishedCount(finishedCount);
- log.debug("[{}] 读取第一行设备数据: 预设={}, 完成={}",
- context.getStationCode(), presetCount, finishedCount);
- }
-
- // 读取第二行设备数据(如果配置了)
- StationConfig.DeviceInfoRow row2 = config.getDeviceInfoRow(1);
- if (row2 != null) {
- IDeviceDriver driver2 = context.getDeviceDriver2();
- if (driver2 != null && driver2.isConnected()) {
- int presetCount2 = driver2.readRegister(row2.getPresetAddress());
- int finishedCount2 = driver2.readRegister(row2.getFinishedAddress());
- context.setPresetCount2(presetCount2);
- context.setFinishedCount2(finishedCount2);
- context.setDeviceConnected2(true);
- log.debug("[{}] 读取第二行设备数据: 预设={}, 完成={}",
- context.getStationCode(), presetCount2, finishedCount2);
- } else {
- // 第二个设备未连接
- context.setPresetCount2(-1);
- context.setFinishedCount2(-1);
- context.setDeviceConnected2(false);
- log.debug("[{}] 第二行设备未连接", context.getStationCode());
- }
- }
-
- // 更新UI显示
- context.updateUI();
-
- } catch (Exception e) {
- log.error("[{}] 读取设备数据失败: {}", context.getStationCode(), e.getMessage());
- // 不阻塞流程
- }
- return true;
- }
- @Override
- public boolean canExecute(StationContext context) {
- // 总是可以执行
- return true;
- }
- @Override
- public boolean canSkip(StationContext context) {
- // 设备未启用时可以跳过
- return !context.isDeviceEnabled();
- }
- }
|