using MeasureThread; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; namespace HOZProject { public class MeasureMsgManage { public enum measureType { Photo=0, FIB=1, PT=2 } #region 线程消息处理,显示内容 /// /// 线程消息处理,显示内容 /// /// 主窗体对象 /// 消息对象 public static void ShowMsgContent(FormHOZMain formHOZ, ThreadStatusEventArgs args) { #region 判断线程是否停止 switch (args.Step_Code) { case "0-0": //停止线程 if (formHOZ.m_BackgroundWorker.IsBusy) { formHOZ.m_BackgroundWorker.CancelAsync(); //是否关闭窗体的标识 if (formHOZ.IsClose) { formHOZ.Close(); } } break; } #endregion //是否当前编号是流程中有数据的节点 if (IsCutHolePhotoInfo(formHOZ, args)) { if (!args.Picture_Information.Picture_FullPath.Equals("")) { //显示状态信息 ShowStateMessage(formHOZ, args); //设置图像 FileStream fileStream = new FileStream(args.Picture_Information.Picture_FullPath, FileMode.Open, FileAccess.Read); formHOZ.pbImage.Image = Image.FromStream(fileStream); fileStream.Close(); fileStream.Dispose(); //流程内容 double Work_Voltage = args.Picture_Information.Work_Voltage/1000; double Magnification = args.Picture_Information.Magnification; double Work_Distance = args.Picture_Information.Work_Distance*1000; string semParaContent = "电压:" + Work_Voltage.ToString("f1") + "KV"; semParaContent += " 放大倍数:" + Magnification + "X"; semParaContent += " 工作距离:" + Work_Distance.ToString("f1") + "mm"; formHOZ.lblFlowContent.Text = semParaContent; } } //修改切孔中流程状态 ChageCutHoleFlowNodeState(formHOZ, args); } /// /// 显示状态信息 /// /// /// private static void ShowStateMessage(FormHOZMain formHOZ, ThreadStatusEventArgs args) { //显示状态信息 if (args.Step_Code == "1-2") { formHOZ.lblStateMessage.Text = "正在对焦中...请等待"; } else { formHOZ.lblStateMessage.Text = ""; } } #endregion #region 显示切孔流程中拍照信息 /// /// 是否当前编号是流程中有数据的节点 /// /// 主窗体对象 /// 线程参数 /// public static bool IsCutHolePhotoInfo(FormHOZMain formHOZ, ThreadStatusEventArgs args) { if (formHOZ.plPrarInfo.Controls.Count > 0) { foreach (Control item in formHOZ.plPrarInfo.Controls) { if (item is UserControl) { if (item.Name == args.HoleName) { UControl_ParaInfo uControl_ParaInfo = (UControl_ParaInfo)item; TimeLineItem[] ParaItem = uControl_ParaInfo.TlItem; foreach (TimeLineItem tlItem in ParaItem) { if (tlItem.Code == args.Step_Code && tlItem.IsData) { return true; } } } } } } return false; } #endregion #region 修改切孔中流程状态 /// /// 修改切孔中流程状态 /// /// 主窗体对象 /// 切孔名称 /// 流程编号 /// 状态 /// public static bool ChageCutHoleFlowNodeState(FormHOZMain formHOZ, ThreadStatusEventArgs args) { if (formHOZ.plPrarInfo.Controls.Count > 0) { foreach (Control item in formHOZ.plPrarInfo.Controls) { if (item is UserControl) { if (item.Name == args.HoleName) { UControl_ParaInfo uControl_ParaInfo = (UControl_ParaInfo)item; TimeLineItem[] ParaItem = uControl_ParaInfo.TlItem; foreach (TimeLineItem tlItem in ParaItem) { if (tlItem.Code == args.Step_Code) { tlItem.State = args.State?1:0; break; } } //更新进度条 uControl_ParaInfo.UpdateCurrentMeasureSchedule(); //重新绘制 uControl_ParaInfo.TimeLineInvalidate(); return true; } } } } return false; } #endregion } }