Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }