Esempio n. 1
0
        private void Control_central_ControllerCommStatusChanged(object sender, CommProgressReportArg e)
        {
            switch (e.Progress)
            {
            case CommProgressReportArg.ENUM_COMM_EVENT_TYPE.Finish:
                /* 获取治疗带使用时间 */
                this.CureBandServiceTime = control_central.BoardInfo.CureBandServiceTime[this.Channel];


                /* 获取治疗带状态 */
                // 如果使用时间达到最大值,则标记为过期
                if (this.CureBandServiceTime >= CPublicVariables.Configuration.MaxCureBandServieTime && !bgw_cure.IsBusy)
                {
                    this.CureBandState = ENUM_STATE.Overdue;
                }
                else
                {
                    this.CureBandState = control_central.BoardInfo.State[this.Channel];
                }


                /* 显示实时温度 */
                if (this.CureBandState == ENUM_STATE.Standby || this.CureBandState == ENUM_STATE.Curing || this.CureBandState == ENUM_STATE.Heating)
                {
                    this.RealtimeTemperature = control_central.BoardInfo.Temperature[this.Channel];
                }
                else
                {
                    this.realtime_temperature = 0.0;
                }
                break;

            case CommProgressReportArg.ENUM_COMM_EVENT_TYPE.PortOpened:
                /*
                 * 产生PortOpened事件有两种情况:
                 * 1、程序启动
                 * 2、通讯中断后重新恢复连接
                 * 如果出现第二种情况,可能是控制板断电或者其它情况造成的重启,此时需要根据PC端记录的状态恢复每个通道的工作状态,
                 * 因此这里向每个通道重新写入控制信息
                 */
                if (this.CureAction == ENUM_ACTION.Started || this.CureAction == ENUM_ACTION.Paused)
                {
                    control_central.SetControllerWorks(new CCommandQueueItem(CCommandQueueItem.ENUM_CMD.Start, this.Channel, 0));
                    control_central.SetControllerWorks(new CCommandQueueItem(CCommandQueueItem.ENUM_CMD.SetTemper, this.Channel, this.PresetTemperatureInCurrentStage));
                }
                else
                {
                    control_central.SetControllerWorks(new CCommandQueueItem(CCommandQueueItem.ENUM_CMD.Stop, this.Channel, 0));
                }
                break;
            }
        }
        private void Control_central_ControllerCommStatusChanged(object sender, CommProgressReportArg e)
        {
            switch (e.Progress)
            {

                case CommProgressReportArg.ENUM_COMM_EVENT_TYPE.Finish:
                    /* 获取治疗带使用时间 */
                    this.CureBandServiceTime = control_central.BoardInfo.CureBandServiceTime[this.Channel];


                    /* 获取治疗带状态 */
                    // 如果使用时间达到最大值,则标记为过期
                    if (this.CureBandServiceTime >= CPublicVariables.Configuration.MaxCureBandServieTime && !bgw_cure.IsBusy)
                        this.CureBandState = ENUM_STATE.Overdue;
                    else
                        this.CureBandState = control_central.BoardInfo.State[this.Channel];


                    /* 显示实时温度 */
                    if (this.CureBandState == ENUM_STATE.Standby || this.CureBandState == ENUM_STATE.Curing || this.CureBandState == ENUM_STATE.Heating)
                        this.RealtimeTemperature = control_central.BoardInfo.Temperature[this.Channel];
                    else
                        this.realtime_temperature = 0.0;
                    break;

                case CommProgressReportArg.ENUM_COMM_EVENT_TYPE.PortOpened:
                    /* 
                    * 产生PortOpened事件有两种情况:
                    * 1、程序启动
                    * 2、通讯中断后重新恢复连接
                    * 如果出现第二种情况,可能是控制板断电或者其它情况造成的重启,此时需要根据PC端记录的状态恢复每个通道的工作状态,
                    * 因此这里向每个通道重新写入控制信息
                    */
                    if (this.CureAction == ENUM_ACTION.Started || this.CureAction == ENUM_ACTION.Paused)
                    {
                        control_central.SetControllerWorks(new CCommandQueueItem(CCommandQueueItem.ENUM_CMD.Start, this.Channel, 0));
                        control_central.SetControllerWorks(new CCommandQueueItem(CCommandQueueItem.ENUM_CMD.SetTemper, this.Channel, this.PresetTemperatureInCurrentStage));
                    }
                    else
                    {
                        control_central.SetControllerWorks(new CCommandQueueItem(CCommandQueueItem.ENUM_CMD.Stop, this.Channel, 0));
                    }
                    break;
            }
        }
        /// <summary>
        /// 通讯状态改变引发的事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Control_central_ControllerCommStatusChanged(object sender, CommProgressReportArg e)
        {
            switch(e.Progress)
            {
                case CommProgressReportArg.ENUM_COMM_EVENT_TYPE.PortOpening:
                    txt_CommErrInfo.Text = e.Info;
                    break;

                case CommProgressReportArg.ENUM_COMM_EVENT_TYPE.Err:
                    if (brd_CommErr.Visibility == Visibility.Hidden)
                        brd_CommErr.Visibility = Visibility.Visible;
                    txt_CommErrInfo.Text = e.Info;
                    break;

                case CommProgressReportArg.ENUM_COMM_EVENT_TYPE.Finish:
                    if (brd_CommErr.Visibility == Visibility.Visible)
                        brd_CommErr.Visibility = Visibility.Hidden;

                    break;
            }
        }