/// <summary> /// 从下位机读取参数值到 tpParam[] 中; /// 如发生错误,则立即停止并触发参数读取事件(附带错误信息) /// 如读取成功,则触发参数读取事件(附带 NoError 信息) /// </summary> public void UpdateParamFromDevice() { TempProtocol.Err_t err = TempProtocol.Err_t.NoError; lock (tpLocker) { for (int i = 0; i < 7; i++) { // 从下位机读取参数值 float val = 0.0f; err = tpDevice.ReadData((TempProtocol.Cmd_t)i, out val); // 调试信息 Debug.WriteLineIf(err == TempProtocol.Err_t.NoError, "温控设备参数读取成功! " + tpParamNames[i] + ": " + tpParam[i].ToString()); Debug.WriteLineIf(err != TempProtocol.Err_t.NoError, "温控设备参数读取失败! " + tpParamNames[i] + ": " + err.ToString()); // 如发生错误,则立即结束 for 循环 if (err != TempProtocol.Err_t.NoError) { break; } // 如果没有发生错误,则在上位机更新数据 tpParam[i] = val; } } // 说明: // 参数更新函数主要面向 FormSetting 窗口,分别设置主槽 / 辅槽的控温参数 // 所以事件 / 错误直接在 TempDevice 中处理,并不会返回到 Devices 中 // 结果处理 - 事件 ParamUpdatedFromDeviceEvent(err); }
/// <summary> /// 将参数更新入下位机,返回错误状态,触发温度参数更新事件; /// /// </summary> /// <returns></returns> internal TempProtocol.Err_t UpdateParamToDeviceReturnErr() { TempProtocol.Err_t err = TempProtocol.Err_t.NoError; // 更新硬件设备参数 lock (tpLocker) { for (int i = 0; i < 7; i++) { // 如果参数未改变,则跳过 if (Math.Abs(tpParam[i] - tpParamToSet[i]) < 10e-5) { continue; } // 向设备写入参数 err = tpDevice.SendData((TempProtocol.Cmd_t)i, tpParamToSet[i]); // 调试信息 Debug.WriteLineIf(err == TempProtocol.Err_t.NoError, "温控设备参数设置成功! " + tpParamNames[i] + ": " + tpParam[i].ToString()); Debug.WriteLineIf(err != TempProtocol.Err_t.NoError, "温控设备参数设置失败! " + tpParamNames[i] + ": " + err.ToString()); // 如发生错误,则结束 for 循环 if (err != TempProtocol.Err_t.NoError) { break; } // 将更新后的参数值写入 tpParam[] 中 tpParam[i] = tpParamToSet[i]; } } // 说明: // 参数更新函数主要面向 FormSetting 窗口,分别设置主槽 / 辅槽的控温参数 // 所以事件 / 错误直接在 TempDevice 中处理,并不会返回到 Devices 中 // 结果处理 - 事件 ParamUpdatedToDeviceEvent(err); return(err); }