diff --git a/UserClass/AsyncTcpServer.cs b/UserClass/AsyncTcpServer.cs index 0c1ff12..037cc19 100644 --- a/UserClass/AsyncTcpServer.cs +++ b/UserClass/AsyncTcpServer.cs @@ -79,6 +79,7 @@ namespace DyeingComputer.UserClass service.Closed = (client, e) => { return EasyTask.CompletedTask; };//有客户端断开连接 service.Received = (client, e) => { + MainWindowViewModel.RX++; string SYSAPI = e.ByteBlock.Span.ToString(Encoding.ASCII).Substring(0,5); string DAT = e.ByteBlock.Span.ToString(Encoding.UTF8).Substring(5); string SYSDAT ="";// = e.ByteBlock.Span.ToString(Encoding.ASCII).Substring(5); @@ -94,6 +95,7 @@ namespace DyeingComputer.UserClass Chart_new.Add("SYSKEY", MainWindowViewModel.SYSKEY); Chart_new.Add("TIME", MainWindowViewModel.SYSTime); client.SendAsync("SC800" + "[" + MainWindowViewModel.S01 + "]" + Chart_new.ToJsonString()); + MainWindowViewModel.TX++; } else if (SYSAPI == "SC810") { @@ -104,23 +106,23 @@ namespace DyeingComputer.UserClass Dictionary WorkOrder_dat; WorkOrder_dat = SerializeConvert.JsonDeserializeFromString>(SYSDAT); //WorkOrder_dat.GetValue("WorkOrder"); - bool dat_w= SQLDATA.WorkOrder( - WorkOrder_dat.GetValue("WorkOrder").ToString(), + bool dat_w = SQLDATA.WorkOrder( + WorkOrder_dat.GetValue("WorkOrder").ToString(), WorkOrder_dat.GetValue("ProcessName").ToString(), WorkOrder_dat.GetValue("StartTime").ToString(), - WorkOrder_dat.GetValue("EndTime").ToString(), - WorkOrder_dat.GetValue("Time").ToString(), + WorkOrder_dat.GetValue("EndTime").ToString(), + WorkOrder_dat.GetValue("Time").ToString(), WorkOrder_dat.GetValue("Remark").ToString(), - WorkOrder_dat.GetValue("lock").ToString(), + WorkOrder_dat.GetValue("lock").ToString(), WorkOrder_dat.GetValue("State").ToString(), - WorkOrder_dat.GetValue("ProcessID").ToString()); - if (!dat_w) { client.SendAsync("SC910"); } - else { client.SendAsync("SC810" + SYSKEY +SYSDAT); } + WorkOrder_dat.GetValue("ProcessID").ToString()); + if (!dat_w) { client.SendAsync("SC910"); } + else { client.SendAsync("SC810" + SYSKEY + SYSDAT); MainWindowViewModel.TX++; } } - catch + catch { client.SendAsync("SC990"); - } + } } else { client.SendAsync("SC999"); } }//WorkOrder表信息检查写入 @@ -134,7 +136,7 @@ namespace DyeingComputer.UserClass WorkOrder_dat = SerializeConvert.JsonDeserializeFromString(SYSDAT); bool dat_w = SQLDATA.WorkOderStep(WorkOrder_dat); if (!dat_w) { client.SendAsync("SC911"); } - else { client.SendAsync("SC811" + SYSKEY + SYSDAT); } + else { client.SendAsync("SC811" + SYSKEY + SYSDAT); MainWindowViewModel.TX++; } } catch { @@ -157,6 +159,7 @@ namespace DyeingComputer.UserClass SetLocalDateTime(dt); } client.SendAsync("SC820" + "[" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "]"); + MainWindowViewModel.TX++; } catch { client.SendAsync("SC920"); } } @@ -185,7 +188,7 @@ namespace DyeingComputer.UserClass } else if (dat_821.GetValue("INSTRUCTION").ToString() == "CONTINUE") { - MainWindowViewModel.WORK_RUN = 2;//暂停 + MainWindowViewModel.WORK_RUN = 2;// } else if (dat_821.GetValue("INSTRUCTION").ToString() == "JUMP") { @@ -252,12 +255,13 @@ namespace DyeingComputer.UserClass SQLiteHelpers.Close(); //关闭连接 client.SendAsync("SC831" + "[" + MainWindowViewModel.S01 + "]" + MainWindowViewModel.dt_TP.ToJsonString()); + MainWindowViewModel.TX++; }//插入 else if (dat_821.GetValue("INSTRUCTION").ToString() == "EDIT") { int n = Convert.ToInt16(dat_821.GetValue("ID").ToString()); /**编辑行信息**/ - DataRow dr =MainWindowViewModel.dt_TP.Rows[n - 1]; + DataRow dr = MainWindowViewModel.dt_TP.Rows[n - 1]; dr.BeginEdit(); dr["StepID"] = dat_821.GetValue("StepID").ToString(); dr["StepName"] = dat_821.GetValue("StepName").ToString(); @@ -270,7 +274,7 @@ namespace DyeingComputer.UserClass dr.EndEdit(); var _TechnologicalProcessView = Application.Current.Windows.Cast().FirstOrDefault(window => window is TechnologicalProcessView) as TechnologicalProcessView;//跨页面 - // _TechnologicalProcessView.Grid.ItemsSource = TechnologicalProcessView.sql.Tables[0].DefaultView; + // _TechnologicalProcessView.Grid.ItemsSource = TechnologicalProcessView.sql.Tables[0].DefaultView; _TechnologicalProcessView.Grid.SelectedIndex = -1; /**存入信息**/ SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 @@ -294,16 +298,17 @@ namespace DyeingComputer.UserClass SQLiteHelpers.Close(); //关闭连接 client.SendAsync("SC831" + "[" + MainWindowViewModel.S01 + "]" + MainWindowViewModel.dt_TP.ToJsonString()); + MainWindowViewModel.TX++; }//编辑 else if (dat_821.GetValue("INSTRUCTION").ToString() == "DELETE") { int d = Convert.ToInt16(dat_821.GetValue("ID")); MainWindowViewModel.dt_TP.Rows.RemoveAt(d - 1); - TechnologicalProcessView.Dat(); - /**存入信息**/ + TechnologicalProcessView.Dat(); + /**存入信息**/ SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 SQLiteHelpers.Open(); //打开数据库 - SQLiteHelpers.Delete("RUN", null, null); + SQLiteHelpers.Delete("RUN", null, null); DataTable data_t = MainWindowViewModel.dt_TP.Clone(); for (int i = 0; i < MainWindowViewModel.dt_TP.Rows.Count; i++) { @@ -318,10 +323,11 @@ namespace DyeingComputer.UserClass drT.EndEdit(); SQLiteHelpers.InsertData("RUN", SQLiteHelpers.DataTableToDictionary(data_t));//行插入 - } + } SQLiteHelpers.Close(); //关闭连接 client.SendAsync("SC831" + "[" + MainWindowViewModel.S01 + "]" + MainWindowViewModel.dt_TP.ToJsonString()); + MainWindowViewModel.TX++; } else { @@ -336,25 +342,29 @@ namespace DyeingComputer.UserClass { if (SYSKEY == MainWindowViewModel.SYSKEY) { - Dictionary Chart_new = new Dictionary();//缓存函数 - Chart_new.Add("Status", MainWindowViewModel.StatusStr); - Chart_new.Add("Machine", MainWindowViewModel.S01); - Chart_new.Add("WorkNumder", MainWindowViewModel.WorkNumder); - Chart_new.Add("Time", MainWindowViewModel.SYSTime); - Chart_new.Add("Process", MainWindowViewModel.ProgramName); - Chart_new.Add("Step", MainWindowViewModel.Process_step); - Chart_new.Add("MST", MainWindowViewModel.TEMP_co); - Chart_new.Add("MTT", MainWindowViewModel.Selet_dtm("1010")); - Chart_new.Add("MTL", MainWindowViewModel.Selet_dtm("1015")); - Chart_new.Add("MTH", MainWindowViewModel.Selet_dtm("1009")); - Chart_new.Add("MUT", MainWindowViewModel.Selet_dtm("1011")); - Chart_new.Add("STTA", MainWindowViewModel.Selet_dtm("1012")); - Chart_new.Add("STLA", MainWindowViewModel.Selet_dtm("1017")); - Chart_new.Add("STTB", MainWindowViewModel.Selet_dtm("1013")); - Chart_new.Add("STLB", MainWindowViewModel.Selet_dtm("1018")); - Chart_new.Add("STTC", MainWindowViewModel.Selet_dtm("1014")); - Chart_new.Add("STLC", MainWindowViewModel.Selet_dtm("1019")); - client.SendAsync("SC830" + "[" + MainWindowViewModel.S01 + "]" + Chart_new.ToJsonString()); + try { + Dictionary Chart_new = new Dictionary();//缓存函数 + Chart_new.Add("Status", MainWindowViewModel.StatusStr); + Chart_new.Add("Machine", MainWindowViewModel.S01); + Chart_new.Add("WorkNumder", MainWindowViewModel.WorkNumder); + Chart_new.Add("Time", MainWindowViewModel.SYSTime); + Chart_new.Add("Process", MainWindowViewModel.ProgramName); + Chart_new.Add("Step", MainWindowViewModel.Process_step); + Chart_new.Add("MST", MainWindowViewModel.TEMP_co); + Chart_new.Add("MTT", MainWindowViewModel.Selet_dtm("1010")); + Chart_new.Add("MTL", MainWindowViewModel.Selet_dtm("1015")); + Chart_new.Add("MTH", MainWindowViewModel.Selet_dtm("1009")); + Chart_new.Add("MUT", MainWindowViewModel.Selet_dtm("1011")); + Chart_new.Add("STTA", MainWindowViewModel.Selet_dtm("1012")); + Chart_new.Add("STLA", MainWindowViewModel.Selet_dtm("1017")); + Chart_new.Add("STTB", MainWindowViewModel.Selet_dtm("1013")); + Chart_new.Add("STLB", MainWindowViewModel.Selet_dtm("1018")); + Chart_new.Add("STTC", MainWindowViewModel.Selet_dtm("1014")); + Chart_new.Add("STLC", MainWindowViewModel.Selet_dtm("1019")); + client.SendAsync("SC830" + "[" + MainWindowViewModel.S01 + "]" + Chart_new.ToJsonString()); + MainWindowViewModel.TX++; + } + catch { client.SendAsync("SC931"); } } else { client.SendAsync("SC999"); } }//当前信息 @@ -362,7 +372,12 @@ namespace DyeingComputer.UserClass { if (SYSKEY == MainWindowViewModel.SYSKEY) { - client.SendAsync("SC831" + "[" + MainWindowViewModel.S01 + "]" +MainWindowViewModel.dt_TP.ToJsonString()); + try + { + client.SendAsync("SC831" + "[" + MainWindowViewModel.S01 + "]" + MainWindowViewModel.dt_TP.ToJsonString()); + MainWindowViewModel.TX++; + } + catch { client.SendAsync("SC931"); } } else { client.SendAsync("SC999"); } }//当前工作表 @@ -372,15 +387,22 @@ namespace DyeingComputer.UserClass { try { client.SendAsync("SC832" + "[" + MainWindowViewModel.S01 + "]" + MainWindowViewModel.SYSlog); - } catch (Exception) { } } + MainWindowViewModel.TX++; + } + catch { client.SendAsync("SC932"); } + } else { client.SendAsync("SC999"); } }//当前细节信息 else if (SYSAPI == "SC833") { if (SYSKEY == MainWindowViewModel.SYSKEY) { - - client.SendAsync("SC832" + "[" + MainWindowViewModel.S01 + "]" + "sc833"); + try + { + client.SendAsync("SC832" + "[" + MainWindowViewModel.S01 + "]" + "sc833"); + MainWindowViewModel.TX++; + } + catch { client.SendAsync("SC933"); } } else { client.SendAsync("SC999"); } }//当前领料单 @@ -388,7 +410,11 @@ namespace DyeingComputer.UserClass { if (SYSKEY == MainWindowViewModel.SYSKEY) { - client.SendAsync("SC851" + "[" + MainWindowViewModel.S01 + "]" + JsonConvert.SerializeObject(MainWindowViewModel.dt_d));//数字开关信息 + try + { + client.SendAsync("SC851" + "[" + MainWindowViewModel.S01 + "]" + JsonConvert.SerializeObject(MainWindowViewModel.dt_d));//数字开关信息 + } + catch { client.SendAsync("SC951"); } } else { client.SendAsync("SC999"); } }//数字开关表 @@ -396,7 +422,11 @@ namespace DyeingComputer.UserClass { if (SYSKEY == MainWindowViewModel.SYSKEY) { - client.SendAsync("SC852" + "[" + MainWindowViewModel.S01 + "]" + MainWindowViewModel.dt_a.ToJsonString());//寄存器信息 + try + { + client.SendAsync("SC852" + "[" + MainWindowViewModel.S01 + "]" + MainWindowViewModel.dt_a.ToJsonString());//寄存器信息 + } + catch { client.SendAsync("SC952"); } } else { client.SendAsync("SC999"); } }//寄存器表 @@ -404,7 +434,11 @@ namespace DyeingComputer.UserClass { if (SYSKEY == MainWindowViewModel.SYSKEY) { - client.SendAsync("SC853" + "[" + MainWindowViewModel.S01 + "]" + MainWindowViewModel.dt_m.ToJsonString());//缓存信息 + try + { + client.SendAsync("SC853" + "[" + MainWindowViewModel.S01 + "]" + MainWindowViewModel.dt_m.ToJsonString());//缓存信息 + } + catch { client.SendAsync("SC953"); } } else { client.SendAsync("SC999"); } }//缓存表 diff --git a/View/EngineerSetView.xaml b/View/EngineerSetView.xaml index 1958322..d56e54d 100644 --- a/View/EngineerSetView.xaml +++ b/View/EngineerSetView.xaml @@ -6,12 +6,14 @@ xmlns:local="clr-namespace:DyeingComputer.View" xmlns:lang="clr-namespace:DyeingComputer.Properties" mc:Ignorable="d" - d:DesignHeight="630" d:DesignWidth="1280" VerticalAlignment="Top"> + d:DesignHeight="500" d:DesignWidth="800"> + + diff --git a/View/EngineerSetView.xaml.cs b/View/EngineerSetView.xaml.cs index 0844a4a..c9ee220 100644 --- a/View/EngineerSetView.xaml.cs +++ b/View/EngineerSetView.xaml.cs @@ -1,4 +1,5 @@ -using System; +using DyeingComputer.ViewModel; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -12,6 +13,7 @@ using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; +using System.Windows.Threading; namespace DyeingComputer.View { @@ -23,12 +25,13 @@ namespace DyeingComputer.View public EngineerSetView() { InitializeComponent(); + CountDown(); // 获取所有可用串口端口,并添加到comboBoxCOM string[] ports = System.IO.Ports.SerialPort.GetPortNames(); comboBoxCOM.ItemsSource = ports; comboBoxCOM.Text = Configini.IniReadvalue("SYS", "COM"); - string[] Language = {"en-US","zh-CN","zh -TW" }; + string[] Language = { "en-US", "zh-CN", "zh -TW" }; comboBoxLanguage.ItemsSource = Language; comboBoxLanguage.Text = Configini.IniReadvalue("SYS", "Language"); } @@ -37,12 +40,29 @@ namespace DyeingComputer.View private void comboBoxCOM_SelectionChanged(object sender, SelectionChangedEventArgs e) { - Configini.IniWritevalue("SYS","COM",comboBoxCOM.SelectedValue.ToString()); + Configini.IniWritevalue("SYS", "COM", comboBoxCOM.SelectedValue.ToString()); } private void comboBoxLanguage_SelectionChanged(object sender, SelectionChangedEventArgs e) { Configini.IniWritevalue("SYS", "Language", comboBoxLanguage.SelectedValue.ToString()); } + + public void CountDown() + { + DispatcherTimer timer1s = new DispatcherTimer//初始化循环,每1秒调用一次Tick + { + Interval = TimeSpan.FromSeconds(1)//秒 + }; + timer1s.Tick += Tick_Event_1S; + timer1s.Start(); + } + + + void Tick_Event_1S(object sender, EventArgs e)//Tick_Event周期执行事件1S + { + RX.Text = MainWindowViewModel.RX.ToString(); + TX.Text = MainWindowViewModel.TX.ToString(); + } } } diff --git a/ViewModel/MainWindowViewModel.cs b/ViewModel/MainWindowViewModel.cs index 6e58e86..b85b120 100644 --- a/ViewModel/MainWindowViewModel.cs +++ b/ViewModel/MainWindowViewModel.cs @@ -64,7 +64,8 @@ namespace DyeingComputer.ViewModel public static int RUN_STEPID;//当前步骤 public static int SYS_REDYE=0;//当前重燃步 public static string SYSKEY; - + public static UInt32 RX = 0; + public static UInt32 TX = 0; public MainWindowViewModel() { SYSKEY = MD5check.MD5Encrypt16(HardwareSN.GetCPUSerialNumber()+HardwareSN.GetBIOSSerialNumber());