FrmMain.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469
  1. using BaseLibRWFile;
  2. using HRT_Measure.Windows;
  3. using Sunny.UI;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.ComponentModel;
  7. using System.Data;
  8. using System.Diagnostics;
  9. using System.Drawing;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Threading;
  13. using System.Threading.Tasks;
  14. using System.Windows.Forms;
  15. namespace HRT_Measure
  16. {
  17. public partial class FrmMain :Sunny.UI.UIForm
  18. {
  19. public FrmMain()
  20. {
  21. InitializeComponent();
  22. }
  23. public static FrmLogin frmLogin = new FrmLogin();
  24. PLCResultHelp resultHelp = new PLCResultHelp();
  25. public FrmPLC_M01M02 frmPLC_M01M02;//= new FrmPLC_M01M02();
  26. public FrmPLC_M03 frmPLC_M03;//= new FrmPLC_M03();
  27. public FrmPLC_M04M05 frmPLC_M04M05;//= new FrmPLC_M04M05();
  28. public FrmPressure frmPressure;//= new FrmPressure();
  29. public FrmParaWrite frmParaWrite;//= new FrmParaWrite();
  30. public FrmFirstWindow frmFirstWindow;//= new FrmFirstWindow();
  31. public FrmWeight frmWeight;
  32. private FrmProjectConfig frmProjectConfig;//= null;
  33. private FrmCommunication frmCommunication;//= null;
  34. private void FrmMain_Load(object sender, EventArgs e)
  35. {
  36. ProgramHelp.Instance.LoadProjectFiles();
  37. //ToolStripMenuItem_PartNo_Name.Text = "";// ProgramHelp.Instance.ProConfig.当前料号;
  38. //启动ToolStripMenuItem_Click(null, null);
  39. timer1.Enabled = true;
  40. //DateTime dateTime = DateTime.Now;
  41. //DateTime dateFinal = new DateTime(2025, 2, 28);
  42. //int resultTime = DateTime.Compare(dateTime, dateFinal);
  43. //if(resultTime > 0)
  44. //{
  45. // FrmMain_FormClosing(null,null);
  46. //}
  47. PLCCylinder.GetInitIO();//初始化界面IO
  48. PLCCylinder.GetAlm();
  49. PLCCylinder.GetM01M02Add();
  50. PLCCylinder.GetM03Add();
  51. PLCCylinder.GetM04M05Add();
  52. PLCAxisPos.GetM01M02PosAdd();
  53. //PLCAxisPos.GetM03PosAdd();
  54. PLCAxisPos.GetM04M05PosAdd();
  55. PLCAxis.GetM01M02AxisAdd();
  56. PLCAxis.GetM03AxisAdd();
  57. PLCAxis.GetM04M05AxisAdd();
  58. ClsWeightHelp.GetWeightAdd();
  59. ReadPLCHelp.LoadPLCAdd();
  60. frmPLC_M01M02 = new FrmPLC_M01M02();
  61. frmPLC_M03 = new FrmPLC_M03();
  62. frmPLC_M04M05 = new FrmPLC_M04M05();
  63. frmPressure = new FrmPressure();
  64. frmFirstWindow = new FrmFirstWindow();
  65. frmParaWrite = new FrmParaWrite();
  66. frmProjectConfig = new FrmProjectConfig();
  67. frmCommunication = new FrmCommunication();
  68. frmWeight = new FrmWeight();
  69. ControlLayout();
  70. ClsResultData.LoadResultTitle();
  71. ProgramHelp.Instance.frmMain = this;
  72. //uchmiM01M02.timer1.Enabled = true;
  73. //uchmiM03.timer1.Enabled = true;
  74. //uchmiM04M05.timer1.Enabled = true;
  75. //uchmiM01M02.thMonitor.Start(); uchmiM03.thMonitor.Start(); uchmiM04M05.thMonitor.Start();
  76. }
  77. private void ControlLayout()
  78. {
  79. this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width , Screen.PrimaryScreen.WorkingArea.Height);//* 95 / 100
  80. this.Size = this.MaximumSize;
  81. this.WindowState = FormWindowState.Maximized;
  82. panelMain.Controls.Clear();
  83. frmPLC_M01M02.TopLevel = false;
  84. frmPLC_M01M02.Dock = DockStyle.Fill;
  85. panelMain.Controls.Add(frmPLC_M01M02);
  86. frmPLC_M01M02.Show();
  87. //Refresh();
  88. panelMain.Controls.Clear();
  89. frmPLC_M03.TopLevel = false;
  90. frmPLC_M03.Dock = DockStyle.Fill;
  91. panelMain.Controls.Add(frmPLC_M03);
  92. frmPLC_M03.Show();
  93. //Refresh();
  94. panelMain.Controls.Clear();
  95. frmPLC_M04M05.TopLevel = false;
  96. frmPLC_M04M05.Dock = DockStyle.Fill;
  97. panelMain.Controls.Add(frmPLC_M04M05);
  98. frmPLC_M04M05.Show();
  99. //Refresh();
  100. panelMain.Controls.Clear();
  101. frmPressure.TopLevel = false;
  102. frmPressure.Dock = DockStyle.Fill;
  103. panelMain.Controls.Add(frmPressure);
  104. frmPressure.Show();
  105. //Refresh();
  106. panelMain.Controls.Clear();
  107. frmWeight.TopLevel = false;
  108. frmWeight.Dock = DockStyle.Fill;
  109. panelMain.Controls.Add(frmWeight);
  110. frmWeight.Show();
  111. //Refresh();
  112. panelMain.Controls.Clear();
  113. frmParaWrite.TopLevel = false;
  114. frmParaWrite.Dock = DockStyle.Fill;
  115. panelMain.Controls.Add(frmParaWrite);
  116. frmParaWrite.Show();
  117. //Refresh();
  118. panelMain.Controls.Clear();
  119. frmCommunication.TopLevel = false;
  120. frmCommunication.Dock = DockStyle.Fill;
  121. panelMain.Controls.Add(frmCommunication);
  122. frmCommunication.Show();
  123. //Refresh();
  124. panelMain.Controls.Clear();
  125. frmProjectConfig.TopLevel = false;
  126. frmProjectConfig.Dock = DockStyle.Fill;
  127. panelMain.Controls.Add(frmProjectConfig);
  128. frmProjectConfig.Show();
  129. //Refresh();
  130. panelMain.Controls.Clear();
  131. frmFirstWindow.TopLevel = false;
  132. frmFirstWindow.Dock = DockStyle.Fill;
  133. panelMain.Controls.Add(frmFirstWindow);
  134. frmFirstWindow.Show();
  135. ReadPLCHelp.EnumWindowDisplay = WindowDisplay.主界面;
  136. btnHome.FillColor = Color.Green;
  137. //Refresh();
  138. //splitContainerMain.SplitterDistance = 367;
  139. //splitContainerMain.SplitterDistance = this.Size.Width * 4/ 5;
  140. //splitContainerResult.SplitterDistance = splitContainerMain.Height / 2;
  141. }
  142. #region Button
  143. private void 登录ToolStripMenuItem_Click(object sender, EventArgs e)
  144. {
  145. frmLogin.ShowDialog();
  146. }
  147. private void 登出ToolStripMenuItem_Click(object sender, EventArgs e)
  148. {
  149. GlobalPara.isOperatorSelect = false;
  150. }
  151. private void 启动ToolStripMenuItem_Click(object sender, EventArgs e)
  152. {
  153. //if (GlobalPara.CurrentMachineState != MachineState.AutoRunning)
  154. //{
  155. // 启动ToolStripMenuItem.Image = HRT_Measure.Properties.Resources.Stop_active_main;
  156. // GlobalPara.CurrentMachineState = MachineState.AutoRunning;
  157. // ProgramHelp.Instance.SaveMsg("System", $"运行中", true);
  158. //}
  159. //else
  160. //{
  161. // 启动ToolStripMenuItem.Image = HRT_Measure.Properties.Resources.Start_active_main;
  162. // GlobalPara.CurrentMachineState = MachineState.Pause; ;
  163. // ProgramHelp.Instance.SaveMsg("System", $"暂停中", true);
  164. //}
  165. }
  166. #endregion
  167. private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
  168. {
  169. try
  170. {
  171. timer1.Enabled = false;
  172. try
  173. {
  174. ReadPLCHelp.thReadPLCM01M02.Abort();
  175. }
  176. catch { }
  177. try
  178. {
  179. ReadPLCHelp.thReadPLCM03.Abort();
  180. }
  181. catch { }
  182. try
  183. {
  184. ReadPLCHelp.thReadPLCM04M05.Abort();
  185. }
  186. catch { }
  187. ProgramHelp.Instance.commPLC_M01M02.Close();
  188. ProgramHelp.Instance.commPLC_M03.Close();
  189. ProgramHelp.Instance.commPLC_M04M05.Close();
  190. ProgramHelp.Instance.comm压机.Close();
  191. //frmPLC_M01M02.Dispose();
  192. //frmPLC_M03.Dispose();
  193. //frmPLC_M04M05.Dispose();
  194. Environment.Exit(0);
  195. Application.Exit();
  196. this.Close();
  197. }
  198. catch (Exception )
  199. {
  200. //MessageBox.Show(ex.ToString());
  201. }
  202. }
  203. private void timer1_Tick(object sender, EventArgs e)
  204. {
  205. lblCurrentNo.Text = $"当前配方号:{ClsWeightHelp.s当前配方号}";
  206. //try
  207. //{
  208. // //M01
  209. // txt药A暂存当前盒数.Text = resultHelp.M01_药A暂存当前盒数.ToString();
  210. // txt药B暂存当前盒数.Text = resultHelp.M01_药B暂存当前盒数.ToString();
  211. // txt抛盖暂存槽当前数量.Text = resultHelp.M01_抛盖暂存槽当前数量.ToString();
  212. // txt空桶暂存槽当前数量.Text = resultHelp.M01_空桶暂存槽当前数量.ToString();
  213. // btn清料.BackColor = PLCResultHelp.isM01_清料 ? Color.Green : Color.Gray;
  214. // btn称重开始.BackColor = PLCResultHelp.isM01_称重开始 ? Color.Green : Color.Gray;
  215. // //M02
  216. // txt药A称重配比重量.Text = resultHelp.M02_药A称重配比重量.ToString();
  217. // txtA料仓1当前重量.Text = resultHelp.M02_A料仓1当前重量.ToString();
  218. // txtA料仓2当前重量.Text = resultHelp.M02_A料仓2当前重量.ToString();
  219. // txtA料仓3当前重量.Text = resultHelp.M02_A料仓3当前重量.ToString();
  220. // txtA料仓4当前重量.Text = resultHelp.M02_A料仓4当前重量.ToString();
  221. // txtA料仓5当前重量.Text = resultHelp.M02_A料仓5当前重量.ToString();
  222. // txt药B称重配比重量.Text = resultHelp.M02_药B称重配比重量.ToString();
  223. // txtB料仓1当前重量.Text = resultHelp.M02_B料仓1当前重量.ToString();
  224. // txtB料仓2当前重量.Text = resultHelp.M02_B料仓2当前重量.ToString();
  225. // txtB料仓3当前重量.Text = resultHelp.M02_B料仓3当前重量.ToString();
  226. // txtB料仓4当前重量.Text = resultHelp.M02_B料仓4当前重量.ToString();
  227. // txtB料仓5当前重量.Text = resultHelp.M02_B料仓5当前重量.ToString();
  228. // //M04
  229. // btnAllowLayOff.BackColor = PLCResultHelp.isM04_允许下料 ? Color.Green : Color.Gray;
  230. // txtCurrentHeight.Text = PLCResultHelp.fM04_当前检测高度.ToString("f3");
  231. // txtCurrentWeight.Text = PLCResultHelp.iM04_当前重量.ToString("f2");
  232. // //M05
  233. // txt箱数.Text = resultHelp.M05_箱数.ToString();
  234. // //压机
  235. // foreach (var item in grbPressure.Controls)
  236. // {
  237. // if (item is UITextBox)
  238. // {
  239. // string name = ((UITextBox)item).Name;
  240. // name = name.Remove(0, 3);
  241. // ((UITextBox)item).Text = ReadPLCHelp.dictPressure[name].value;
  242. // }
  243. // }
  244. //}
  245. //catch (Exception)
  246. //{
  247. //}
  248. }
  249. #region 料号切换
  250. public void ChangePartNumber(string PartNoName)
  251. {
  252. this.Invoke(new Action(() =>
  253. {
  254. try
  255. {
  256. //ToolStripMenuItem_PartNo_Name.Text = PartNoName;
  257. ProgramHelp.Instance.SavePorjectConfig();
  258. try
  259. {
  260. //开启新的实例
  261. System.Diagnostics.Process.Start(Application.ExecutablePath);
  262. //关闭当前实例
  263. Process.GetCurrentProcess().Kill();
  264. }
  265. catch (Exception)
  266. {
  267. }
  268. ProgramHelp.Instance.SaveMsg("System", $"料号切换成功!", true);
  269. MessageBox.Show("料号切换成功!");
  270. }
  271. catch (Exception ex)
  272. {
  273. ProgramHelp.Instance.SaveMsg("System", $"料号切换失败:{ex.Message}", true);
  274. MessageBox.Show("料号切换失败!");
  275. }
  276. }));
  277. }
  278. #region Msg显示
  279. public delegate void ListBoxAddInfo(string info);
  280. //private void AddRunMsg(string info)
  281. //{
  282. // if (listbMsg.InvokeRequired)
  283. // {
  284. // ListBoxAddInfo lb = new ListBoxAddInfo(AddRunMsg);
  285. // listbMsg.Invoke(lb, new string[] { info });
  286. // }
  287. // else
  288. // {
  289. // listbMsg.Items.Add(info);
  290. // listbMsg.SelectedIndex = listbMsg.Items.Count - 1;
  291. // if (listbMsg.Items.Count > 1000)
  292. // {
  293. // listbMsg.Items.Clear();
  294. // }
  295. // }
  296. //}
  297. //private void btnClearMsg_Click(object sender, EventArgs e)
  298. //{
  299. // listbMsg.Items.Clear();
  300. //}
  301. //private void btnExtend_Click(object sender, EventArgs e)
  302. //{
  303. // if (btnExtend.Text == "<<")
  304. // {
  305. // splitContainerMain.SplitterDistance = this.Size.Width / 2;
  306. // btnExtend.Text = ">>";
  307. // }
  308. // else
  309. // {
  310. // splitContainerMain.SplitterDistance = this.Size.Width * 4 / 5;
  311. // btnExtend.Text = "<<";
  312. // }
  313. //}
  314. #endregion
  315. #endregion
  316. private void btnWinFrmOpen(object sender, EventArgs e)
  317. {
  318. var btn = (UISymbolButton)sender;
  319. foreach (var item in splitContainerMain.Panel2.Controls)
  320. {
  321. if(item is UISymbolButton)
  322. {
  323. ((UISymbolButton)item).FillColor = Color.Gray;
  324. }
  325. }
  326. btn.FillColor = Color.Green;
  327. switch (btn.Text)
  328. {
  329. case "主画面":
  330. panelMain.Controls.Clear();
  331. frmFirstWindow.TopLevel = false;
  332. frmFirstWindow.Dock = DockStyle.Fill;
  333. panelMain.Controls.Add(frmFirstWindow);
  334. frmFirstWindow.Show();
  335. ReadPLCHelp.EnumWindowDisplay = WindowDisplay.主界面;
  336. Refresh();
  337. break;
  338. case "上料称重房":
  339. panelMain.Controls.Clear();
  340. frmPLC_M01M02.TopLevel = false;
  341. frmPLC_M01M02.Dock = DockStyle.Fill;
  342. panelMain.Controls.Add(frmPLC_M01M02);
  343. frmPLC_M01M02.Show();
  344. ReadPLCHelp.EnumWindowDisplay = WindowDisplay.上料称重房;
  345. Refresh();
  346. break;
  347. case "压机房":
  348. panelMain.Controls.Clear();
  349. frmPLC_M03.TopLevel = false;
  350. frmPLC_M03.Dock = DockStyle.Fill;
  351. panelMain.Controls.Add(frmPLC_M03);
  352. frmPLC_M03.Show();
  353. ReadPLCHelp.EnumWindowDisplay = WindowDisplay.压机房;
  354. Refresh();
  355. break;
  356. case "检测装箱房":
  357. panelMain.Controls.Clear();
  358. frmPLC_M04M05.TopLevel = false;
  359. frmPLC_M04M05.Dock = DockStyle.Fill;
  360. panelMain.Controls.Add(frmPLC_M04M05);
  361. frmPLC_M04M05.Show();
  362. ReadPLCHelp.EnumWindowDisplay = WindowDisplay.检测装箱房;
  363. Refresh();
  364. break;
  365. case "压力机":
  366. panelMain.Controls.Clear();
  367. frmPressure.TopLevel = false;
  368. frmPressure.Dock = DockStyle.Fill;
  369. panelMain.Controls.Add(frmPressure);
  370. frmPressure.Show();
  371. ReadPLCHelp.EnumWindowDisplay = WindowDisplay.压力机;
  372. Refresh();
  373. break;
  374. case "称重":
  375. panelMain.Controls.Clear();
  376. frmWeight.TopLevel = false;
  377. frmWeight.Dock = DockStyle.Fill;
  378. panelMain.Controls.Add(frmWeight);
  379. frmWeight.Show();
  380. ReadPLCHelp.EnumWindowDisplay = WindowDisplay.称重;
  381. Refresh();
  382. break;
  383. case "数据监控":
  384. panelMain.Controls.Clear();
  385. frmParaWrite.TopLevel = false;
  386. frmParaWrite.Dock = DockStyle.Fill;
  387. panelMain.Controls.Add(frmParaWrite);
  388. frmParaWrite.Show();
  389. ReadPLCHelp.EnumWindowDisplay = WindowDisplay.数据监控;
  390. Refresh();
  391. break;
  392. case "通讯":
  393. panelMain.Controls.Clear();
  394. frmCommunication.TopLevel = false;
  395. frmCommunication.Dock = DockStyle.Fill;
  396. panelMain.Controls.Add(frmCommunication);
  397. frmCommunication.Show();
  398. ReadPLCHelp.EnumWindowDisplay = WindowDisplay.通讯;
  399. Refresh();
  400. break;
  401. case "项目配置":
  402. panelMain.Controls.Clear();
  403. frmProjectConfig.TopLevel = false;
  404. frmProjectConfig.Dock = DockStyle.Fill;
  405. panelMain.Controls.Add(frmProjectConfig);
  406. frmProjectConfig.Show();
  407. ReadPLCHelp.EnumWindowDisplay = WindowDisplay.项目配置;
  408. Refresh();
  409. break;
  410. }
  411. }
  412. }
  413. }