FormHOZMain.cs 51 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122
  1. using FileManager;
  2. using MeasureData;
  3. using MeasureThread;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.ComponentModel;
  7. using System.Configuration;
  8. using System.Data;
  9. using System.Drawing;
  10. using System.Drawing.Drawing2D;
  11. using System.IO;
  12. using System.Linq;
  13. using System.Runtime.InteropServices;
  14. using System.Text;
  15. using System.Threading.Tasks;
  16. using System.Windows.Forms;
  17. using static MeasureThread.ThreadStatusEventArgs;
  18. namespace HOZProject
  19. {
  20. public partial class FormHOZMain : Form
  21. {
  22. #region 控制窗体可以调整大小用
  23. const int HTLEFT = 10;
  24. const int HTRIGHT = 11;
  25. const int HTTOP = 12;
  26. const int HTTOPLEFT = 13;
  27. const int HTTOPRIGHT = 14;
  28. const int HTBOTTOM = 15;
  29. const int HTBOTTOMLEFT = 0x10;
  30. const int HTBOTTOMRIGHT = 17;
  31. protected override void WndProc(ref Message m)
  32. {
  33. switch (m.Msg)
  34. {
  35. case 0x0084:
  36. base.WndProc(ref m);
  37. Point vPoint = new Point((int)m.LParam & 0xFFFF,
  38. (int)m.LParam >> 16 & 0xFFFF);
  39. vPoint = PointToClient(vPoint);
  40. if (vPoint.X <= 5)
  41. if (vPoint.Y <= 5)
  42. m.Result = (IntPtr)HTTOPLEFT;
  43. else if (vPoint.Y >= ClientSize.Height - 5)
  44. m.Result = (IntPtr)HTBOTTOMLEFT;
  45. else m.Result = (IntPtr)HTLEFT;
  46. else if (vPoint.X >= ClientSize.Width - 5)
  47. if (vPoint.Y <= 5)
  48. m.Result = (IntPtr)HTTOPRIGHT;
  49. else if (vPoint.Y >= ClientSize.Height - 5)
  50. m.Result = (IntPtr)HTBOTTOMRIGHT;
  51. else m.Result = (IntPtr)HTRIGHT;
  52. else if (vPoint.Y <= 5)
  53. m.Result = (IntPtr)HTTOP;
  54. else if (vPoint.Y >= ClientSize.Height - 5)
  55. m.Result = (IntPtr)HTBOTTOM;
  56. break;
  57. case 0x0201://鼠标左键按下的消息
  58. m.Msg = 0x00A1;//更改消息为非客户区按下鼠标
  59. m.LParam = IntPtr.Zero;//默认值
  60. m.WParam = new IntPtr(2);//鼠标放在标题栏内
  61. base.WndProc(ref m);
  62. break;
  63. default:
  64. base.WndProc(ref m);
  65. break;
  66. }
  67. }
  68. #endregion
  69. #region 成员变量
  70. private NLog.Logger log;
  71. /// <summary>
  72. /// 控制闪烁
  73. /// </summary>
  74. public static bool ControlFlicker;//控制流程闪烁
  75. public BackgroundWorker m_BackgroundWorker;// 申明后台对象
  76. /// <summary>
  77. /// 测量文件
  78. /// </summary>
  79. public MeasureFile m_MeasureFile;
  80. /// 测量线程
  81. public Measure m_Ms;
  82. /// <summary>
  83. /// 显示日志窗体
  84. /// </summary>
  85. Form m_FormLog = null;
  86. /// <summary>
  87. /// 显示实例化窗体
  88. /// </summary>
  89. FormMove m_FormInit = null;
  90. /// <summary>
  91. /// 是否已保存
  92. /// </summary>
  93. public bool IsSave = false;
  94. /// <summary>
  95. /// 初始化用户控件
  96. /// </summary>
  97. UControl_Init uControl_Init = null;
  98. /// <summary>
  99. /// 日志用户控件
  100. /// </summary>
  101. UControl_Log ucLog = null;
  102. //流程控制
  103. public int m_MeasureType = (int)MeasureMsgManage.measureType.FIB;
  104. //是否关闭窗体标识
  105. public bool IsClose = false;
  106. OTSMeasureOutputNlog logwin;
  107. Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
  108. #endregion
  109. #region 构造函数
  110. public FormHOZMain()
  111. {
  112. InitializeComponent();
  113. //在线程操作过程中,可以设置控件属性
  114. Control.CheckForIllegalCrossThreadCalls = false;
  115. m_BackgroundWorker = new BackgroundWorker(); // 实例化后台对象
  116. m_BackgroundWorker.WorkerReportsProgress = true; // 设置可以通告进度
  117. m_BackgroundWorker.WorkerSupportsCancellation = true; // 设置可以取消
  118. m_BackgroundWorker.DoWork += new DoWorkEventHandler(DoWork);
  119. m_BackgroundWorker.ProgressChanged += new ProgressChangedEventHandler(UpdateProgress);
  120. m_BackgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(CompletedWork);
  121. //LogManager.InitManulLog();
  122. }
  123. #endregion
  124. #region 测量线程
  125. void DoWork(object sender, DoWorkEventArgs e)
  126. {
  127. try
  128. {
  129. m_Ms = new Measure(ConfigurationManager.AppSettings["WebServerIP"].ToString(),
  130. ConfigurationManager.AppSettings["WebServerPort"].ToString(),
  131. ConfigurationManager.AppSettings["WebServerUrl"].ToString());
  132. m_MeasureFile.MParam.AutoFocus.UP = Convert.ToSingle(ConfigurationManager.AppSettings["Focus_UP"].ToString());
  133. m_MeasureFile.MParam.AutoFocus.Down = Convert.ToSingle(ConfigurationManager.AppSettings["Focus_Down"].ToString());
  134. m_MeasureFile.MParam.AutoFocus.Step = Convert.ToSingle(ConfigurationManager.AppSettings["Focus_Step"].ToString());
  135. m_MeasureFile.MParam.AutoFocus.Range = Convert.ToSingle(ConfigurationManager.AppSettings["Focus_Range"].ToString());
  136. m_MeasureFile.MParam.AutoFocus.fStep = Convert.ToSingle(ConfigurationManager.AppSettings["Focus_FStep"].ToString());
  137. m_MeasureFile.MParam.FIBFocus.UP = Convert.ToSingle(ConfigurationManager.AppSettings["FIB_UP"].ToString());
  138. m_MeasureFile.MParam.FIBFocus.Down = Convert.ToSingle(ConfigurationManager.AppSettings["FIB_Down"].ToString());
  139. m_MeasureFile.MParam.FIBFocus.Step = Convert.ToSingle(ConfigurationManager.AppSettings["FIB_Step"].ToString());
  140. m_MeasureFile.MParam.FIBFocus.Range = Convert.ToSingle(ConfigurationManager.AppSettings["FIB_Range"].ToString());
  141. m_MeasureFile.MParam.FIBFocus.fStep = Convert.ToSingle(ConfigurationManager.AppSettings["FIB_FStep"].ToString());
  142. m_MeasureFile.MParam.AutoStigX.UP = Convert.ToSingle(ConfigurationManager.AppSettings["StigX_UP"].ToString());
  143. m_MeasureFile.MParam.AutoStigX.Down = Convert.ToSingle(ConfigurationManager.AppSettings["StigX_Down"].ToString());
  144. m_MeasureFile.MParam.AutoStigX.Step = Convert.ToSingle(ConfigurationManager.AppSettings["StigX_Step"].ToString());
  145. m_MeasureFile.MParam.AutoStigX.Range = Convert.ToSingle(ConfigurationManager.AppSettings["StigX_Range"].ToString());
  146. m_MeasureFile.MParam.AutoStigX.fStep = Convert.ToSingle(ConfigurationManager.AppSettings["StigX_FStep"].ToString());
  147. m_MeasureFile.MParam.AutoStigY.UP = Convert.ToSingle(ConfigurationManager.AppSettings["StigY_UP"].ToString());
  148. m_MeasureFile.MParam.AutoStigY.Down = Convert.ToSingle(ConfigurationManager.AppSettings["StigY_Down"].ToString());
  149. m_MeasureFile.MParam.AutoStigY.Step = Convert.ToSingle(ConfigurationManager.AppSettings["StigY_Step"].ToString());
  150. m_MeasureFile.MParam.AutoStigY.Range = Convert.ToSingle(ConfigurationManager.AppSettings["StigY_Range"].ToString());
  151. m_MeasureFile.MParam.AutoStigY.fStep = Convert.ToSingle(ConfigurationManager.AppSettings["StigY_FStep"].ToString());
  152. m_MeasureFile.MParam.FIBDo= Convert.ToBoolean(ConfigurationManager.AppSettings["Is_FIBDo"]);
  153. m_MeasureFile.MParam.FIBAutoBC = Convert.ToBoolean(ConfigurationManager.AppSettings["Is_FIBAutoBc"]);
  154. m_MeasureFile.MParam.FIBB = Convert.ToSingle(ConfigurationManager.AppSettings["FIBB"]);
  155. m_MeasureFile.MParam.FIBC = Convert.ToSingle(ConfigurationManager.AppSettings["FIBC"]);
  156. m_MeasureFile.MParam.MagComp = Convert.ToBoolean(ConfigurationManager.AppSettings["MagComp"]);
  157. m_MeasureFile.MParam.MagRange1 = Convert.ToSingle(ConfigurationManager.AppSettings["MagRange1"]);
  158. m_MeasureFile.MParam.MagRange2 = Convert.ToSingle(ConfigurationManager.AppSettings["MagRange2"]);
  159. m_MeasureFile.MParam.MagRange3 = Convert.ToSingle(ConfigurationManager.AppSettings["MagRange3"]);
  160. m_MeasureFile.MParam.MagCompX1 = Convert.ToSingle(ConfigurationManager.AppSettings["MagCompX1"]);
  161. m_MeasureFile.MParam.MagCompX2 = Convert.ToSingle(ConfigurationManager.AppSettings["MagCompX2"]);
  162. m_MeasureFile.MParam.MagCompX3 = Convert.ToSingle(ConfigurationManager.AppSettings["MagCompX3"]);
  163. m_MeasureFile.MParam.MagCompY1 = Convert.ToSingle(ConfigurationManager.AppSettings["MagCompY1"]);
  164. m_MeasureFile.MParam.MagCompY2 = Convert.ToSingle(ConfigurationManager.AppSettings["MagCompY2"]);
  165. m_MeasureFile.MParam.MagCompY3 = Convert.ToSingle(ConfigurationManager.AppSettings["MagCompY3"]);
  166. m_Ms.X_Min = Convert.ToSingle(ConfigurationManager.AppSettings["X_Min"]);
  167. m_Ms.X_Max = Convert.ToSingle(ConfigurationManager.AppSettings["X_Max"]);
  168. m_Ms.Y_Min = Convert.ToSingle(ConfigurationManager.AppSettings["Y_Min"]);
  169. m_Ms.Y_Max = Convert.ToSingle(ConfigurationManager.AppSettings["Y_Max"]);
  170. m_Ms.Z_Min = Convert.ToSingle(ConfigurationManager.AppSettings["Z_Min"]);
  171. m_Ms.Z_Max = Convert.ToSingle(ConfigurationManager.AppSettings["Z_Max"]);
  172. m_Ms.T_Min = Convert.ToSingle(ConfigurationManager.AppSettings["T_Min"]);
  173. m_Ms.T_Max = Convert.ToSingle(ConfigurationManager.AppSettings["T_Max"]);
  174. m_Ms.R_Min = Convert.ToSingle(ConfigurationManager.AppSettings["R_Min"]);
  175. m_Ms.R_Max = Convert.ToSingle(ConfigurationManager.AppSettings["R_Max"]);
  176. m_Ms.M_Min = Convert.ToSingle(ConfigurationManager.AppSettings["M_Min"]);
  177. m_Ms.M_Max = Convert.ToSingle(ConfigurationManager.AppSettings["M_Max"]);
  178. //人工干预
  179. m_Ms.hand_intervene = Convert.ToInt32(ConfigurationManager.AppSettings["Hand_Intervene"]);
  180. //SmartSEM远程路径
  181. m_Ms.RemoteELYPath = ConfigurationManager.AppSettings["RemoteELYPath"];
  182. m_Ms.RemoteMLFPath = ConfigurationManager.AppSettings["RemoteMLFPath"];
  183. //Z轴移动距离
  184. m_MeasureFile.MParam.ZDistance= Convert.ToSingle(ConfigurationManager.AppSettings["ZDistance"]);
  185. //add by sun 2020-12-15 增加不同样品扫描速度参数
  186. m_MeasureFile.MParam.ScanSpeedNormal = Convert.ToString(ConfigurationManager.AppSettings["ScanSpeedNormal_" + m_MeasureFile.MParam.SampleName]);
  187. m_MeasureFile.MParam.ScanSpeedFocus = Convert.ToString(ConfigurationManager.AppSettings["ScanSpeedFocus_" + m_MeasureFile.MParam.SampleName]);
  188. m_MeasureFile.MParam.ScanSpeedHigh = Convert.ToString(ConfigurationManager.AppSettings["ScanSpeedHigh_" + m_MeasureFile.MParam.SampleName]);
  189. //log.Info("==============="+ ConfigurationManager.AppSettings["ScanSpeedNormal_3"] + "========="+ m_MeasureFile.MParam.SampleName, true);
  190. //add by sun 2020-12-15 增加不同样品扫描速度参数 end
  191. //add by sun 2020-12-17 增加调试时是否切割开关
  192. m_MeasureFile.MParam.IsCutingForDebug = Convert.ToBoolean(ConfigurationManager.AppSettings["IsCutingForDebug"]);
  193. //add by sun 2020-12-17 增加调试时是否切割开关 end
  194. // add by zjx 2020-12-18 为了测试只做能谱部分
  195. m_MeasureFile.MParam.IsonlyEDSForDebug = Convert.ToBoolean(ConfigurationManager.AppSettings["IsonlyEDSForDebug"]);
  196. // add by zjx 2020-12-18 为了测试只做能谱部分 end
  197. #region 初始化参数的默认值
  198. // add by zjx 2020-12-20 厂商参数
  199. m_MeasureFile.MParam.VendorType0 = Convert.ToString(ConfigurationManager.AppSettings["VendorType0"]);
  200. m_MeasureFile.MParam.VendorType1 = Convert.ToString(ConfigurationManager.AppSettings["VendorType1"]);
  201. m_MeasureFile.MParam.VendorType2 = Convert.ToString(ConfigurationManager.AppSettings["VendorType2"]);
  202. m_MeasureFile.MParam.VendorType3 = Convert.ToString(ConfigurationManager.AppSettings["VendorType3"]);
  203. // add by zjx 2020-12-20 厂商参数 end
  204. // add by zjx 2020-12-21 校正角度
  205. m_MeasureFile.MParam.CorrectionType0 = Convert.ToString(ConfigurationManager.AppSettings["CorrectionType0"]);
  206. m_MeasureFile.MParam.CorrectionType1 = Convert.ToString(ConfigurationManager.AppSettings["CorrectionType1"]);
  207. m_MeasureFile.MParam.CorrectionType2 = Convert.ToString(ConfigurationManager.AppSettings["CorrectionType2"]);
  208. m_MeasureFile.MParam.CorrectionType3 = Convert.ToString(ConfigurationManager.AppSettings["CorrectionType3"]);
  209. // add by zjx 2020-12-21 校正角度 end
  210. // add by zjx 2020-12-21 拉直操作放大倍数
  211. m_MeasureFile.MParam.StraightenTimesType0 = Convert.ToString(ConfigurationManager.AppSettings["StraightenTimesType0"]);
  212. m_MeasureFile.MParam.StraightenTimesType1 = Convert.ToString(ConfigurationManager.AppSettings["StraightenTimesType1"]);
  213. m_MeasureFile.MParam.StraightenTimesType2 = Convert.ToString(ConfigurationManager.AppSettings["StraightenTimesType2"]);
  214. m_MeasureFile.MParam.StraightenTimesType3 = Convert.ToString(ConfigurationManager.AppSettings["StraightenTimesType3"]);
  215. // add by zjx 2020-12-21 拉直操作放大倍数 end
  216. // add by zjx 2020-12-21 定位电压
  217. m_MeasureFile.MParam.PositioningVoltageeType0 = Convert.ToString(ConfigurationManager.AppSettings["PositioningVoltageeType0"]);
  218. m_MeasureFile.MParam.PositioningVoltageeType1 = Convert.ToString(ConfigurationManager.AppSettings["PositioningVoltageeType1"]);
  219. m_MeasureFile.MParam.PositioningVoltageeType2 = Convert.ToString(ConfigurationManager.AppSettings["PositioningVoltageeType2"]);
  220. m_MeasureFile.MParam.PositioningVoltageeType3 = Convert.ToString(ConfigurationManager.AppSettings["PositioningVoltageeType3"]);
  221. // add by zjx 2020-12-21 定位电压 end
  222. // add by zjx 2020-12-21 定位放大倍数
  223. m_MeasureFile.MParam.PositioningTimesType0 = Convert.ToString(ConfigurationManager.AppSettings["PositioningTimesType0"]);
  224. m_MeasureFile.MParam.PositioningTimesType1 = Convert.ToString(ConfigurationManager.AppSettings["PositioningTimesType1"]);
  225. m_MeasureFile.MParam.PositioningTimesType2 = Convert.ToString(ConfigurationManager.AppSettings["PositioningTimesType2"]);
  226. m_MeasureFile.MParam.PositioningTimesType3 = Convert.ToString(ConfigurationManager.AppSettings["PositioningTimesType3"]);
  227. // add by zjx 2020-12-21 定位放大倍数 end
  228. // add by zjx 2020-12-21 拍照电压
  229. m_MeasureFile.MParam.PhotoVoltageeType0 = Convert.ToString(ConfigurationManager.AppSettings["PhotoVoltageeType0"]);
  230. m_MeasureFile.MParam.PhotoVoltageeType1 = Convert.ToString(ConfigurationManager.AppSettings["PhotoVoltageeType1"]);
  231. m_MeasureFile.MParam.PhotoVoltageeType2 = Convert.ToString(ConfigurationManager.AppSettings["PhotoVoltageeType2"]);
  232. m_MeasureFile.MParam.PhotoVoltageeType3 = Convert.ToString(ConfigurationManager.AppSettings["PhotoVoltageeType3"]);
  233. // add by zjx 2020-12-21 拍照电压 end
  234. // add by zjx 2020-12-21 拍照放大倍数
  235. m_MeasureFile.MParam.PhotoTimesType0 = Convert.ToString(ConfigurationManager.AppSettings["PhotoTimesType0"]);
  236. m_MeasureFile.MParam.PhotoTimesType1 = Convert.ToString(ConfigurationManager.AppSettings["PhotoTimesType1"]);
  237. m_MeasureFile.MParam.PhotoTimesType2 = Convert.ToString(ConfigurationManager.AppSettings["PhotoTimesType2"]);
  238. m_MeasureFile.MParam.PhotoTimesType3 = Convert.ToString(ConfigurationManager.AppSettings["PhotoTimesType3"]);
  239. // add by zjx 2020-12-21 拍照放大倍数 end
  240. // add by zjx 2020-12-21 ScanRotate修正参数
  241. m_MeasureFile.MParam.ScanRotateType0 = Convert.ToString(ConfigurationManager.AppSettings["ScanRotateType0"]);
  242. m_MeasureFile.MParam.ScanRotateType1 = Convert.ToString(ConfigurationManager.AppSettings["ScanRotateType1"]);
  243. m_MeasureFile.MParam.ScanRotateType2 = Convert.ToString(ConfigurationManager.AppSettings["ScanRotateType2"]);
  244. m_MeasureFile.MParam.ScanRotateType3 = Convert.ToString(ConfigurationManager.AppSettings["ScanRotateType3"]);
  245. // add by zjx 2020-12-21 ScanRotate修正参数 end
  246. // add by zjx 2020-12-21 Y轴方向PixelSize修正值
  247. m_MeasureFile.MParam.PixelSizeType0 = Convert.ToString(ConfigurationManager.AppSettings["PixelSizeType0"]);
  248. m_MeasureFile.MParam.PixelSizeType1 = Convert.ToString(ConfigurationManager.AppSettings["PixelSizeType1"]);
  249. m_MeasureFile.MParam.PixelSizeType2 = Convert.ToString(ConfigurationManager.AppSettings["PixelSizeType2"]);
  250. m_MeasureFile.MParam.PixelSizeType3 = Convert.ToString(ConfigurationManager.AppSettings["PixelSizeType3"]);
  251. // add by zjx 2020-12-21 Y轴方向PixelSize修正值 end
  252. // add by zjx 2020-12-21 能谱Z轴移动位置
  253. m_MeasureFile.MParam.SEMAxis_ZType0 = Convert.ToString(ConfigurationManager.AppSettings["SEMAxis_ZType0"]);
  254. m_MeasureFile.MParam.SEMAxis_ZType1 = Convert.ToString(ConfigurationManager.AppSettings["SEMAxis_ZType1"]);
  255. m_MeasureFile.MParam.SEMAxis_ZType2 = Convert.ToString(ConfigurationManager.AppSettings["SEMAxis_ZType2"]);
  256. m_MeasureFile.MParam.SEMAxis_ZType3 = Convert.ToString(ConfigurationManager.AppSettings["SEMAxis_ZType3"]);
  257. // add by zjx 2020-12-21 能谱Z轴移动位置 end
  258. // add by zjx 2020-12-21 能谱电压值
  259. m_MeasureFile.MParam.SEMVoltageeType0 = Convert.ToString(ConfigurationManager.AppSettings["SEMVoltageeType0"]);
  260. m_MeasureFile.MParam.SEMVoltageeType1 = Convert.ToString(ConfigurationManager.AppSettings["SEMVoltageeType1"]);
  261. m_MeasureFile.MParam.SEMVoltageeType2 = Convert.ToString(ConfigurationManager.AppSettings["SEMVoltageeType2"]);
  262. m_MeasureFile.MParam.SEMVoltageeType3 = Convert.ToString(ConfigurationManager.AppSettings["SEMVoltageeType3"]);
  263. // add by zjx 2020-12-21 能谱电压值 end
  264. // add by zjx 2020-12-21 能谱电流值
  265. m_MeasureFile.MParam.SEMCurrentType0 = Convert.ToString(ConfigurationManager.AppSettings["SEMCurrentType0"]);
  266. m_MeasureFile.MParam.SEMCurrentType1 = Convert.ToString(ConfigurationManager.AppSettings["SEMCurrentType1"]);
  267. m_MeasureFile.MParam.SEMCurrentType2 = Convert.ToString(ConfigurationManager.AppSettings["SEMCurrentType2"]);
  268. m_MeasureFile.MParam.SEMCurrentType3 = Convert.ToString(ConfigurationManager.AppSettings["SEMCurrentType3"]);
  269. // add by zjx 2020-12-21 能谱电流值 end
  270. #endregion
  271. m_Ms.InitMeas(m_MeasureFile);
  272. //注册事件
  273. m_Ms.SendThreadStatus += new ThreadStatusHandler(displayMessage);
  274. //注册事件
  275. m_Ms.SendCutHolesStatus += new CutHolesStatusHandler(displayCutHoleMessage);
  276. //设置控件操作
  277. SetWinControlMeasureState(false);
  278. //自动测量的全过程
  279. m_Ms.DoMeasure();
  280. }
  281. catch (Exception ex)
  282. {
  283. log.Error(ex.ToString(),false);
  284. }
  285. }
  286. public void displayMessage(object sender, ThreadStatusEventArgs e)
  287. {
  288. //主界面显示内容
  289. this.BeginInvoke((Action)delegate
  290. {
  291. this.listmsg.Items.Add(e.HoleName +"_" + e.Time.ToString() + "_"+ e.Message + "_" + e.State );
  292. //显示流程中对应编号的内容
  293. MeasureMsgManage.ShowMsgContent(this, e);
  294. AddLogListInfo(e);
  295. });
  296. }
  297. public void displayCutHoleMessage(object sender, CutHolesStatusEventArgs e)
  298. {
  299. //主界面显示内容
  300. this.BeginInvoke((Action)delegate
  301. {
  302. //修改切孔状态
  303. ChangeCutHoleState(e.HoleName.ToString(), Convert.ToInt32(e.State));
  304. });
  305. }
  306. void UpdateProgress(object sender, ProgressChangedEventArgs e)
  307. {
  308. }
  309. void CompletedWork(object sender, RunWorkerCompletedEventArgs e)
  310. {
  311. ControlFlicker = false;
  312. //设置控件操作
  313. MessageBox.Show("测量已完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  314. SetWinControlMeasureState(true);
  315. pbStop.Visible = false;
  316. pbStart.Visible = true;
  317. //UControl_ParaInfo uControl_ParaInfo=new UControl_ParaInfo()
  318. UControl_ParaInfo uControl_ParaInfo = new UControl_ParaInfo(this);
  319. uControl_ParaInfo.pbMeasure.Value = 100;
  320. uControl_ParaInfo.lblCompletedAmount.Text = "100%";
  321. }
  322. #endregion
  323. #region 窗体加载
  324. private void FormHOZMain_Load(object sender, EventArgs e)
  325. {
  326. //加载控件的点击事件
  327. this.Click += new EventHandler(FormHOZMain_Click);
  328. plFill.Click += new EventHandler(FormHOZMain_Click);
  329. plTop.Click += new EventHandler(FormHOZMain_Click);
  330. plLeft.Click += new EventHandler(FormHOZMain_Click);
  331. plLeftContent.Click += new EventHandler(FormHOZMain_Click);
  332. pbImage.Click += new EventHandler(FormHOZMain_Click);
  333. //加载窗口移动事件
  334. this.MouseDown += new MouseEventHandler(FormHOZMain_MouseDown);
  335. this.plTop.MouseDown += new MouseEventHandler(FormHOZMain_MouseDown);
  336. //新建
  337. NewCreate();
  338. //实例初始化窗体对象
  339. if (uControl_Init == null)
  340. {
  341. uControl_Init = new UControl_Init(this);
  342. uControl_Init.ReloadConfig();
  343. }
  344. logwin = new OTSMeasureOutputNlog();
  345. logwin.Show();
  346. NLog.Config.LoggingRule lr = NLog.LogManager.Configuration.LoggingRules.FirstOrDefault(
  347. r => r.Targets.Any(
  348. t => "control" == t.Name
  349. )
  350. );
  351. if (lr != null)
  352. {
  353. }
  354. log = NLog.LogManager.GetCurrentClassLogger();
  355. }
  356. #endregion
  357. #region 创建切孔列表信息
  358. /// <summary>
  359. /// 创建切孔列表信息
  360. /// </summary>
  361. /// <param name="ListCutHole"></param>
  362. public void CreateCutHoleList(List<CutHole> ListCutHole)
  363. {
  364. //清空左侧Panel中的切孔控件
  365. ClearPanelControls();
  366. for (int i = ListCutHole.Count - 1; i >= 0; i--)
  367. {
  368. UControl_CutHole ucCutHole = new UControl_CutHole(this);
  369. ucCutHole.Dock = DockStyle.Top;
  370. ucCutHole.CutHoleName = ListCutHole[i].HoleName;
  371. //显示切孔参数信息
  372. if (ucCutHole.UControl_ParaInfo == null)
  373. {
  374. ucCutHole.UControl_ParaInfo = new UControl_ParaInfo(this);
  375. }
  376. plPrarInfo.Width = ucCutHole.UControl_ParaInfo.Width;
  377. plPrarInfo.Height = ucCutHole.UControl_ParaInfo.Height;
  378. //设置当前样品的参数信息
  379. string CutHoleName = ListCutHole[i].HoleName;
  380. ucCutHole.UControl_ParaInfo.Name = CutHoleName;
  381. ucCutHole.UControl_ParaInfo.CutHoleName = CutHoleName;
  382. ucCutHole.UControl_ParaInfo.Position = ListCutHole[i].Position;
  383. ucCutHole.UControl_ParaInfo.StartTime = ListCutHole[i].START.ToString();
  384. ucCutHole.UControl_ParaInfo.EndTime = ListCutHole[i].END.ToString();
  385. int state = (int)ListCutHole[i].STATE;
  386. ucCutHole.UControl_ParaInfo.State = state;
  387. ucCutHole.UControl_ParaInfo.IsSwitch = ListCutHole[i].SWITCH;
  388. ucCutHole.UControl_ParaInfo.ShowParaInfo();
  389. this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
  390. plPrarInfo.Controls.Add(ucCutHole.UControl_ParaInfo);
  391. plLeftContent.Controls.Add(ucCutHole);
  392. ChangeCutHoleState(CutHoleName, state);
  393. }
  394. plPrarInfo.Visible = false;
  395. }
  396. #endregion
  397. #region 隐藏处理层
  398. //隐藏处理层
  399. private void FormHOZMain_Click(object sender, EventArgs e)
  400. {
  401. if (plPrarInfo.Visible)
  402. {
  403. plPrarInfo.Visible = false;
  404. }
  405. }
  406. #endregion
  407. #region 设置控件在线程过程中的编辑状态
  408. /// <summary>
  409. /// 设置控件在线程过程中的编辑状态
  410. /// </summary>
  411. /// <param name="cState"></param>
  412. public void SetWinControlMeasureState(bool cState)
  413. {
  414. pbNew.Enabled = cState;
  415. pbOpen.Enabled = cState;
  416. pbSave.Enabled = cState;
  417. pbInit.Enabled = cState;
  418. pbImportTemplateFile.Enabled = cState;
  419. //pbLog.Enabled = cState;
  420. pbStart.Enabled = cState;
  421. pbStop.Enabled = !cState;
  422. //设置切孔是否执行
  423. foreach (Control item in plPrarInfo.Controls)
  424. {
  425. if (item is UserControl)
  426. {
  427. UControl_ParaInfo ucParaInfo = (UControl_ParaInfo)item;
  428. ucParaInfo.CkIsSwitch.Enabled = cState;
  429. }
  430. }
  431. }
  432. #endregion
  433. #region 窗体中 线程开始 停止 最大化 最小化 关闭 按钮事件
  434. private void pbMin_MouseEnter(object sender, EventArgs e)
  435. {
  436. this.pbMin.BackgroundImage = global::HOZProject.Properties.Resources.Min_2_;
  437. }
  438. private void pbMin_MouseLeave(object sender, EventArgs e)
  439. {
  440. this.pbMin.BackgroundImage = global::HOZProject.Properties.Resources.Min_2_;
  441. }
  442. private void pbMax_MouseEnter(object sender, EventArgs e)
  443. {
  444. this.pbMax.BackgroundImage = global::HOZProject.Properties.Resources.Max_2_;
  445. }
  446. private void pbMax_MouseLeave(object sender, EventArgs e)
  447. {
  448. this.pbMax.BackgroundImage = global::HOZProject.Properties.Resources.Max_2_;
  449. }
  450. private void pbClose_MouseEnter(object sender, EventArgs e)
  451. {
  452. this.pbClose.BackgroundImage = global::HOZProject.Properties.Resources.exit_2_;
  453. }
  454. private void pbClose_MouseLeave(object sender, EventArgs e)
  455. {
  456. this.pbClose.BackgroundImage = global::HOZProject.Properties.Resources.exit_2_;
  457. }
  458. private void pbStart_MouseEnter(object sender, EventArgs e)
  459. {
  460. //this.pbStart.BackgroundImage = global::HOZProject.Properties.Resources.StartMove;
  461. }
  462. private void pbStart_MouseLeave(object sender, EventArgs e)
  463. {
  464. //this.pbStart.BackgroundImage = global::HOZProject.Properties.Resources.Start_3_;
  465. }
  466. private void pbStop_MouseEnter(object sender, EventArgs e)
  467. {
  468. //this.pbStop.BackgroundImage = global::HOZProject.Properties.Resources.StopMove;
  469. }
  470. private void pbStop_MouseLeave(object sender, EventArgs e)
  471. {
  472. //this.pbStop.BackgroundImage = global::HOZProject.Properties.Resources.Stop;
  473. }
  474. private void pbClose_Click(object sender, EventArgs e)
  475. {
  476. try
  477. {
  478. if (m_Ms != null)
  479. {
  480. if (m_BackgroundWorker.IsBusy)
  481. {
  482. if (MessageBox.Show("当前测量正在运行,是否关闭此窗体?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
  483. {
  484. //线程停止变量
  485. m_Ms.key_stop = true;
  486. IsClose = true;
  487. lblStateMessage.Text = "正在关闭窗体...请等待";
  488. pbClose.Enabled = false;
  489. ControlFlicker = false;
  490. }
  491. return;
  492. }
  493. }
  494. if (MessageBox.Show("是否关闭此窗体?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
  495. {
  496. m_MeasureFile.Save();
  497. this.Close();
  498. }
  499. }
  500. catch (Exception ex)
  501. {
  502. log.Error(ex.Message);
  503. }
  504. }
  505. private void pbMin_Click(object sender, EventArgs e)
  506. {
  507. this.WindowState = FormWindowState.Minimized;
  508. }
  509. private void pbMax_Click(object sender, EventArgs e)
  510. {
  511. if (this.WindowState == FormWindowState.Maximized)
  512. {
  513. this.WindowState = FormWindowState.Normal;
  514. }
  515. else
  516. {
  517. this.WindowState = FormWindowState.Maximized;
  518. }
  519. //窗体据中
  520. this.StartPosition = FormStartPosition.CenterScreen;
  521. }
  522. #endregion
  523. #region 新建、保存、打开、初始化、导入配置、查看日志
  524. private void pbNew_Click(object sender, EventArgs e)
  525. {
  526. NewCreate();
  527. }
  528. private void NewCreate()
  529. {
  530. m_MeasureFile = new MeasureFile();
  531. if (!m_MeasureFile.New())
  532. {
  533. return;
  534. }
  535. else
  536. {
  537. //清空内容容器中的控件
  538. ClearPanelControls();
  539. }
  540. //实例初始化窗体对象
  541. if (uControl_Init == null)
  542. {
  543. uControl_Init = new UControl_Init(this);
  544. uControl_Init.ReloadConfig();
  545. }
  546. m_MeasureFile.MParam = uControl_Init.GetMeasureParam();
  547. }
  548. private void pbSave_Click(object sender, EventArgs e)
  549. {
  550. if (m_MeasureFile == null)
  551. {
  552. MessageBox.Show("请新建一个测量文件!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  553. }
  554. else
  555. {
  556. //保存测量文件
  557. if (m_MeasureFile.SaveAs())
  558. {
  559. //获取测量文件所在路径
  560. string savePath = m_MeasureFile.FilePath;
  561. //数据库名称
  562. string dbFileName = "MeasureFile.db";
  563. //要复制的文件路径
  564. string pLocalFilePath = Application.StartupPath +"\\"+dbFileName;
  565. string pSaveFilePath = savePath + "\\" + dbFileName;//指定存储的路径
  566. if (File.Exists(pLocalFilePath))//必须判断要复制的文件是否存在
  567. {
  568. //三个参数分别是源文件路径,存储路径,若存储路径有相同文件是否替换
  569. File.Copy(pLocalFilePath, pSaveFilePath, true);
  570. }
  571. //将初始化中的参数,配置到测量参数中
  572. m_MeasureFile.MParam = uControl_Init.GetMeasureParamInfo();
  573. //设置已保存状态
  574. IsSave = true;
  575. }
  576. }
  577. }
  578. private void pbOpen_Click(object sender, EventArgs e)
  579. {
  580. try
  581. {
  582. //打开默认路径
  583. OpenFileDialog openFileDialog = new OpenFileDialog();
  584. //设置筛选文件格式
  585. openFileDialog.Filter = "测量文件(*.msf)|*.msf";
  586. if (openFileDialog.ShowDialog() == DialogResult.OK)
  587. {
  588. //读取文件
  589. string measureFileNamePath = openFileDialog.FileName;
  590. m_MeasureFile.FileName = measureFileNamePath;
  591. m_MeasureFile.Open();
  592. List<CutHole> ListCutHole = m_MeasureFile.ListCutHole;
  593. //文件路径
  594. string CutHoleFilePath = m_MeasureFile.CutHoleFilePath;
  595. CreateCutHoleList(ListCutHole);
  596. ////保存测量文件
  597. //m_MeasureFile.Save();
  598. //设置已保存状态
  599. IsSave = true;
  600. }
  601. }
  602. catch (Exception ex)
  603. {
  604. log.Error(ex.Message);
  605. }
  606. }
  607. private void pbInit_Click(object sender, EventArgs e)
  608. {
  609. if (uControl_Init == null)
  610. {
  611. uControl_Init = new UControl_Init(this);
  612. uControl_Init.ReloadConfig();
  613. }
  614. if (m_FormInit == null)
  615. {
  616. m_FormInit = new FormMove();
  617. }
  618. m_FormInit.StartPosition = FormStartPosition.CenterScreen;
  619. m_FormInit.FormBorderStyle = FormBorderStyle.None;
  620. m_FormInit.Width = uControl_Init.Width + 2;
  621. m_FormInit.Height = uControl_Init.Height + 2;
  622. if (m_FormInit.Controls.Count == 0)
  623. {
  624. uControl_Init.Location = new Point(1,1);
  625. m_FormInit.Controls.Add(uControl_Init);
  626. }
  627. m_FormInit.ShowDialog();
  628. }
  629. private void pictureBox1_Click(object sender, EventArgs e)
  630. {
  631. //if (UControl_ZoomIn == null)
  632. //{
  633. // UControl_ZoomIn = new UControl_ZoomIn(this);
  634. // UControl_ZoomIn.ReloadConfig();
  635. //}
  636. //if (m_FormZoomIn == null)
  637. //{
  638. // m_FormZoomIn = new FormZoomIn();
  639. //}
  640. //m_FormZoomIn.StartPosition = FormStartPosition.CenterScreen;
  641. //m_FormZoomIn.FormBorderStyle = FormBorderStyle.None;
  642. //m_FormZoomIn.Width = UControl_ZoomIn.Width + 4;
  643. //m_FormZoomIn.Height = UControl_ZoomIn.Height + 4;
  644. //if (m_FormZoomIn.Controls.Count == 0)
  645. //{
  646. // UControl_ZoomIn.Location = new Point(2, 2);
  647. // m_FormZoomIn.Controls.Add(UControl_ZoomIn);
  648. //}
  649. //m_FormZoomIn.ShowDialog();
  650. }
  651. private void pbImportTemplateFile_Click(object sender, EventArgs e)
  652. {
  653. Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
  654. string m_TemplateFilePath = config.AppSettings.Settings["TemplateFilePath"].Value.ToString();
  655. //判断保存的路径是否存在
  656. if (!Directory.Exists(m_TemplateFilePath))
  657. {
  658. ////创建路径
  659. //Directory.CreateDirectory(m_TemplateFilePath);
  660. FolderBrowserDialog dialog = new FolderBrowserDialog();
  661. dialog.Description = "请选择文件路径";
  662. //dialog.RootFolder = Environment.SpecialFolder.Programs;
  663. if (dialog.ShowDialog() == DialogResult.OK)
  664. {
  665. m_TemplateFilePath = dialog.SelectedPath;
  666. config.AppSettings.Settings["TemplateFilePath"].Value = m_TemplateFilePath;
  667. config.Save(ConfigurationSaveMode.Modified);
  668. ConfigurationManager.RefreshSection("appSettings");//重新加载新的配置文件
  669. }
  670. }
  671. //打开默认路径
  672. OpenFileDialog openFileDialog = new OpenFileDialog();
  673. //设置默认打开路径(绝对路径)
  674. openFileDialog.InitialDirectory = m_TemplateFilePath;
  675. openFileDialog.Filter = "样品参数文件|*.cfg";
  676. if (openFileDialog.ShowDialog() == DialogResult.OK)
  677. {
  678. if (uControl_Init == null)
  679. {
  680. uControl_Init = new UControl_Init(this);
  681. }
  682. //设置选择的模板文件
  683. uControl_Init.ReadConfigPath = openFileDialog.FileName;
  684. //获取文件
  685. uControl_Init.ReadConfigInfo();
  686. }
  687. }
  688. private void pbLog_Click(object sender, EventArgs e)
  689. {
  690. m_FormLog = new Form();
  691. m_FormLog.StartPosition = FormStartPosition.CenterScreen;
  692. if (ucLog == null)
  693. {
  694. ucLog = new UControl_Log();
  695. }
  696. m_FormLog.FormBorderStyle = FormBorderStyle.None;
  697. m_FormLog.Width = ucLog.Width;
  698. m_FormLog.Height = ucLog.Height;
  699. ucLog.Name = "UControl_Log";
  700. //获取日志信息
  701. if (listmsg.Items.Count>0)
  702. {
  703. string[] strLog = new string[listmsg.Items.Count];
  704. for (int i = 0; i < listmsg.Items.Count; i++)
  705. {
  706. //赋值给数组
  707. strLog[i] = listmsg.Items[i].ToString();
  708. }
  709. ucLog.ShowProcessLogInfo(strLog);
  710. }
  711. m_FormLog.Controls.Add(ucLog);
  712. m_FormLog.ShowDialog();
  713. }
  714. //显示日志
  715. private void AddLogListInfo(ThreadStatusEventArgs e)
  716. {
  717. if (m_FormLog != null)
  718. {
  719. foreach (Control item in m_FormLog.Controls)
  720. {
  721. if (item is UserControl)
  722. {
  723. if (item.Name == "UControl_Log")
  724. {
  725. ucLog = (UControl_Log)item;
  726. //获取日志信息
  727. if (listmsg.Items.Count > 0)
  728. {
  729. string[] strLog = new string[listmsg.Items.Count];
  730. for (int i = 0; i < listmsg.Items.Count; i++)
  731. {
  732. //赋值给数组
  733. strLog[i] = listmsg.Items[i].ToString();
  734. }
  735. ucLog.ShowProcessLogInfo(strLog);
  736. }
  737. }
  738. }
  739. }
  740. }
  741. }
  742. #endregion
  743. #region 修改切孔状态
  744. /// <summary>
  745. /// 修改切孔状态
  746. /// </summary>
  747. /// <param name="cutHoleCode"></param>
  748. /// <param name="States"></param>
  749. public void ChangeCutHoleState(string CutHoleName, int States)
  750. {
  751. foreach (Control item in plLeftContent.Controls)
  752. {
  753. if (item is UserControl)
  754. {
  755. UControl_CutHole cutHole = (UControl_CutHole)item;
  756. if (cutHole.CutHoleName == CutHoleName)
  757. {
  758. Button btnCutHole = (Button)cutHole.Controls.Find("btnCutHole", false)[0];
  759. switch (States)
  760. {
  761. //运行中
  762. case (int)ThreadState.InProcess:
  763. //btnCutHole.BackColor = Color.Yellow;
  764. btnCutHole.BackgroundImage = Properties.Resources.CutHole_Yellow_2_;
  765. btnCutHole.BackgroundImageLayout = ImageLayout.Center;
  766. ChangeCutHoleMeasureState(CutHoleName, States);
  767. ControlFlicker = true;
  768. break;
  769. //等待
  770. case (int)ThreadState.Waiting:
  771. //btnCutHole.BackColor = Color.Yellow;
  772. btnCutHole.BackgroundImage = Properties.Resources.CutHole_Yellow_2_;
  773. btnCutHole.BackgroundImageLayout = ImageLayout.Center;
  774. ChangeCutHoleMeasureState(CutHoleName, States);
  775. break;
  776. //准备
  777. case (int)ThreadState.Ready:
  778. //btnCutHole.BackColor = Color.White;
  779. btnCutHole.BackgroundImage = Properties.Resources.CutHole_Gray_2_;
  780. btnCutHole.BackgroundImageLayout = ImageLayout.Center;
  781. ChangeCutHoleMeasureState(CutHoleName, States);
  782. break;
  783. //失败
  784. case (int)ThreadState.Failed:
  785. //btnCutHole.BackColor = Color.Red;
  786. btnCutHole.BackgroundImage = Properties.Resources.CutHole_Red_2_;
  787. btnCutHole.BackgroundImageLayout = ImageLayout.Center;
  788. ChangeCutHoleMeasureState(CutHoleName, States);
  789. ControlFlicker = false;
  790. break;
  791. //完成
  792. case (int)ThreadState.Success:
  793. //btnCutHole.BackColor = Color.GreenYellow;
  794. btnCutHole.BackgroundImage = Properties.Resources.CutHole_Green_2_;
  795. btnCutHole.BackgroundImageLayout = ImageLayout.Center;
  796. //修改切孔状态
  797. ChangeCutHoleMeasureState(CutHoleName, States);
  798. ControlFlicker = false;
  799. break;
  800. }
  801. break;
  802. }
  803. }
  804. }
  805. }
  806. #endregion
  807. #region 修改切孔状态
  808. public void ChangeCutHoleMeasureState(string CutHoleName, int States)
  809. {
  810. if (plPrarInfo.Controls.Count > 0)
  811. {
  812. foreach (Control item in plPrarInfo.Controls)
  813. {
  814. if (item is UserControl)
  815. {
  816. if (item.Name == CutHoleName)
  817. {
  818. UControl_ParaInfo uControl_ParaInfo = (UControl_ParaInfo)item;
  819. //获取切孔列表
  820. List<CutHole> aCutHole = m_MeasureFile.ListCutHole;
  821. foreach (CutHole cutHoleItem in aCutHole)
  822. {
  823. if (cutHoleItem.HoleName == CutHoleName)
  824. {
  825. //设置开始时间与结束时间
  826. uControl_ParaInfo.StartTime = cutHoleItem.START.ToString();
  827. uControl_ParaInfo.EndTime = cutHoleItem.END.ToString();
  828. uControl_ParaInfo.ShowTime();
  829. break;
  830. }
  831. }
  832. switch (States)
  833. {
  834. //准备
  835. case (int)ThreadState.Ready:
  836. //修改切孔状态
  837. uControl_ParaInfo.lblShowState.Text = "准备";
  838. break;
  839. //等待
  840. case (int)ThreadState.Waiting:
  841. //修改切孔状态
  842. uControl_ParaInfo.lblShowState.Text = "等待";
  843. break;
  844. //进行中
  845. case (int)ThreadState.InProcess:
  846. //修改切孔状态
  847. uControl_ParaInfo.lblShowState.Text = "进行中";
  848. break;
  849. //完成
  850. case (int)ThreadState.Success:
  851. //修改切孔状态
  852. uControl_ParaInfo.lblShowState.Text = "完成";
  853. break;
  854. //失败
  855. case (int)ThreadState.Failed:
  856. uControl_ParaInfo.lblShowState.Text = "失败";
  857. uControl_ParaInfo.pbMeasure.Value = 100;
  858. uControl_ParaInfo.lblCompletedAmount.Text = "100%";
  859. break;
  860. }
  861. break;
  862. }
  863. }
  864. }
  865. }
  866. }
  867. #endregion
  868. #region 拖动无窗体的控件
  869. [DllImport("user32.dll")]//拖动无窗体的控件
  870. public static extern bool ReleaseCapture();
  871. [DllImport("user32.dll")]
  872. public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
  873. public const int WM_SYSCOMMAND = 0x0112;
  874. public const int SC_MOVE = 0xF010;
  875. public const int HTCAPTION = 0x0002;
  876. private void FormHOZMain_MouseDown(object sender, MouseEventArgs e)
  877. {
  878. if (this.WindowState == FormWindowState.Normal)
  879. {
  880. //拖动窗体
  881. ReleaseCapture();
  882. SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
  883. }
  884. }
  885. #endregion
  886. #region 开始、结束线程事件
  887. private void pbStart_Click(object sender, EventArgs e)
  888. {
  889. if (plLeftContent.Controls.Count==0)
  890. {
  891. MessageBox.Show("请添加切孔信息!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  892. return;
  893. }
  894. if (IsSave)
  895. {
  896. if (m_BackgroundWorker.IsBusy)
  897. {
  898. MessageBox.Show("线程已经运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  899. return;
  900. }
  901. if (MessageBox.Show("是否开始测量!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
  902. {
  903. log.Info("开始", true);
  904. m_BackgroundWorker.RunWorkerAsync(this);
  905. pbStop.Visible = true;
  906. pbStart.Visible = false;
  907. }
  908. }
  909. else
  910. {
  911. MessageBox.Show("请保存当前测量文件", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  912. return;
  913. }
  914. }
  915. private void pbStop_Click(object sender, EventArgs e)
  916. {
  917. if (m_Ms != null)
  918. {
  919. if (MessageBox.Show("是否停止当前测量?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)== DialogResult.Yes)
  920. {
  921. ControlFlicker = false;
  922. //线程停止变量
  923. m_Ms.key_stop = true;
  924. }
  925. }
  926. }
  927. #endregion
  928. #region 清空内容容器中的控件
  929. /// <summary>
  930. /// 清空内容容器中的控件
  931. /// </summary>
  932. private void ClearPanelControls()
  933. {
  934. //清空内容容器中的控件
  935. plLeftContent.Controls.Clear();
  936. plPrarInfo.Controls.Clear();
  937. }
  938. /// <summary>
  939. /// 清空日志控件内容
  940. /// </summary>
  941. private void ClearContrlsContent()
  942. {
  943. try
  944. {
  945. if (ucLog != null)
  946. {
  947. if (ucLog.dgvLog != null)
  948. {
  949. if (ucLog.dgvLog.Rows.Count > 0)
  950. {
  951. ucLog.dgvLog.Rows.Clear();
  952. }
  953. }
  954. }
  955. if (listmsg != null)
  956. {
  957. if (listmsg.Items.Count > 0)
  958. {
  959. listmsg.Items.Clear();
  960. }
  961. }
  962. }
  963. catch (Exception ex)
  964. {
  965. log.Error(ex.Message);
  966. }
  967. }
  968. #endregion
  969. #region 测试修改切孔中流程状态
  970. private void button1_Click(object sender, EventArgs e)
  971. {
  972. if (plPrarInfo.Controls.Count > 0)
  973. {
  974. string name = textBox1.Text;
  975. string code = textBox2.Text;
  976. bool state = Convert.ToBoolean(comboBox1.Text);
  977. foreach (Control item in plPrarInfo.Controls)
  978. {
  979. if (item is UserControl)
  980. {
  981. if (item.Name == name)
  982. {
  983. UControl_ParaInfo uControl_ParaInfo = (UControl_ParaInfo)item;
  984. TimeLineItem[] ParaItem = uControl_ParaInfo.TlItem;
  985. foreach (TimeLineItem tlItem in ParaItem)
  986. {
  987. if (tlItem.Code == code)
  988. {
  989. tlItem.State = Convert.ToInt32(state);
  990. break;
  991. }
  992. }
  993. uControl_ParaInfo.TimeLineInvalidate();
  994. break;
  995. }
  996. }
  997. }
  998. }
  999. }
  1000. #endregion
  1001. private void FormHOZMain_Resize(object sender, EventArgs e)
  1002. {
  1003. plMain.Left = 2;
  1004. plMain.Top = 2;
  1005. plMain.Width = this.Width - 4;
  1006. plMain.Height = this.Height - 4;
  1007. plFill.Width = plMain.Width - plLeft.Width - 4;
  1008. plFill.Height = plMain.Height - plTop.Height - 4;
  1009. plFill.Left = plLeft.Width + 4;
  1010. plFill.Top = plTop.Height + 4;
  1011. if(this.WindowState!= FormWindowState.Maximized)
  1012. {
  1013. plPrarInfo.Height = 505;
  1014. foreach (Control item in plPrarInfo.Controls)
  1015. {
  1016. if (item is UserControl)
  1017. {
  1018. if(item.Height>505)
  1019. {
  1020. item.Height = 505;
  1021. }
  1022. }
  1023. }
  1024. }
  1025. }
  1026. private void FormHOZMain_Paint(object sender, PaintEventArgs e)
  1027. {
  1028. }
  1029. }
  1030. }