diff --git a/UserClass/AsyncTcpClient.cs b/UserClass/AsyncTcpClient.cs index 2d46a45..b10f9f8 100644 --- a/UserClass/AsyncTcpClient.cs +++ b/UserClass/AsyncTcpClient.cs @@ -44,53 +44,77 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass tcpClient.Connecting = (client, e) => { return EasyTask.CompletedTask; };//即将连接到服务器,此时已经创建socket,但是还未建立tcp tcpClient.Connected = (client, e) => { - DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "' AND port='" + client.Port + "'").First(); - drEmployee.BeginEdit(); - drEmployee["State"] = "801"; - drEmployee.EndEdit(); - drEmployee.AcceptChanges(); - drEmployee.ClearErrors(); - - LogGing.LogGingDATA("[IP='" + client.IP + "' AND port='" + client.Port + "']=Link_OK"); + lock (MainWindowViewModel.Machines) + { + try + { + DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "'").First(); + drEmployee.BeginEdit(); + drEmployee["State"] = "801"; + drEmployee.EndEdit(); + drEmployee.AcceptChanges(); + LogGing.LogGingDATA("[IP='" + client.IP + "' AND port='" + client.Port + "']=Link_OK"); + } + catch (Exception ex) + { + LogGing.ERRDATA(ex); MainWindowViewModel.ERR_c++; + } + } return EasyTask.CompletedTask; - };//成功连接到服务器 + };//成功连接到服务器 tcpClient.Closing = (client, e) => { - DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "' AND port='" + client.Port + "'").First(); - drEmployee.BeginEdit(); - drEmployee["State"] = "899"; - drEmployee["WorkOrder"] = "------"; - drEmployee["Dyelot"] = ""; - drEmployee["Temperature"] = "---.-"; - drEmployee["WaterLevel"] = "----"; - drEmployee["Process"] = ""; - drEmployee["Step"] = ""; - drEmployee["Message"] = ""; - drEmployee.EndEdit(); - drEmployee.AcceptChanges(); - drEmployee.ClearErrors(); - LogGing.LogGingDATA("[IP='" + client.IP + "' AND port='" + client.Port + "']=Link_STOP"); - + lock (MainWindowViewModel.Machines) + { + try + { + DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "'").First(); + drEmployee.BeginEdit(); + drEmployee["State"] = "899"; + drEmployee["WorkOrder"] = "------"; + drEmployee["Dyelot"] = ""; + drEmployee["Temperature"] = "---.-"; + drEmployee["WaterLevel"] = "----"; + drEmployee["Process"] = ""; + drEmployee["Step"] = ""; + drEmployee["Message"] = ""; + drEmployee.EndEdit(); + drEmployee.AcceptChanges(); + LogGing.LogGingDATA("[IP='" + client.IP + "' AND port='" + client.Port + "']=Link_STOP"); + } + catch (Exception ex) + { + LogGing.ERRDATA(ex); MainWindowViewModel.ERR_c++; + } + } return EasyTask.CompletedTask; };//即将从服务器断开连接。此处仅主动断开才有效。 tcpClient.Closed = (client, e) => { - DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "' AND port='" + client.Port + "'").First(); - drEmployee.BeginEdit(); - drEmployee["State"] = "899"; - drEmployee["WorkOrder"] = "------"; - drEmployee["Dyelot"] = ""; - drEmployee["Temperature"] = "---.-"; - drEmployee["WaterLevel"] = "----"; - drEmployee["Process"] = ""; - drEmployee["Step"] = ""; - drEmployee["Message"] = ""; - drEmployee.EndEdit(); - drEmployee.AcceptChanges(); - drEmployee.ClearErrors(); - LogGing.LogGingDATA("[IP='" + client.IP + "' AND port='" + client.Port + "']=Link_INTERRUPT"); - + lock (MainWindowViewModel.Machines) + { + try + { + DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "'").First(); + drEmployee.BeginEdit(); + drEmployee["State"] = "899"; + drEmployee["WorkOrder"] = "------"; + drEmployee["Dyelot"] = ""; + drEmployee["Temperature"] = "---.-"; + drEmployee["WaterLevel"] = "----"; + drEmployee["Process"] = ""; + drEmployee["Step"] = ""; + drEmployee["Message"] = ""; + drEmployee.EndEdit(); + drEmployee.AcceptChanges(); + LogGing.LogGingDATA("[IP='" + client.IP + "' AND port='" + client.Port + "']=Link_INTERRUPT"); + } + catch (Exception ex) + { + LogGing.ERRDATA(ex); MainWindowViewModel.ERR_c++; + } + } return EasyTask.CompletedTask; };//从服务器断开连接,当连接不成功时不会触发。 tcpClient.Received = (client, e) => @@ -100,22 +124,27 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass string DAT = e.ByteBlock.Span.ToString(Encoding.UTF8); if (SYSAPI == "SC800") { - try + lock (MainWindowViewModel.Machines) { - DAT = DAT.Substring(DAT.IndexOf("]") + 1); - Dictionary Chart_new = new Dictionary();//缓存函数 - Chart_new = JsonConvert.DeserializeObject>(DAT);//反序列化 - DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "' AND port='" + client.Port + "'").First(); - drEmployee.BeginEdit(); - drEmployee["SYSKEY"] = Chart_new.GetValue("SYSKEY").ToString(); - drEmployee["NAME"] = Chart_new.GetValue("MACHINE").ToString(); - drEmployee["Groups"] = Chart_new.GetValue("GROUP").ToString(); - drEmployee["State"] = "802"; - drEmployee.EndEdit(); - drEmployee.AcceptChanges(); - drEmployee.ClearErrors(); + try + { + DAT = DAT.Substring(DAT.IndexOf("]") + 1); + Dictionary Chart_new = new Dictionary();//缓存函数 + Chart_new = JsonConvert.DeserializeObject>(DAT);//反序列化 + DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "' AND port='" + client.Port + "'").First(); + drEmployee.BeginEdit(); + drEmployee["SYSKEY"] = Chart_new.GetValue("SYSKEY").ToString(); + drEmployee["NAME"] = Chart_new.GetValue("MACHINE").ToString(); + drEmployee["Groups"] = Chart_new.GetValue("GROUP").ToString(); + drEmployee["State"] = "802"; + drEmployee.EndEdit(); + drEmployee.AcceptChanges(); + } + catch (Exception ex) + { + LogGing.ERRDATA(ex); MainWindowViewModel.ERR_c++; + } } - catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; } } else if (SYSAPI == "SC810") { @@ -128,7 +157,10 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass "WorkOrder ='" + DAT + "'", null); SQLiteHelpers.Close(); } - catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; } + catch (Exception ex) + { + LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; + } } else if (SYSAPI == "SC811") { diff --git a/View/MachinesView.xaml.cs b/View/MachinesView.xaml.cs index accc233..f802fe3 100644 --- a/View/MachinesView.xaml.cs +++ b/View/MachinesView.xaml.cs @@ -165,7 +165,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString { ID = index, - DAT = "SC862" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + datagrid_v.ToJsonString() + DAT = "SC862" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'") + datagrid_v.ToJsonString() });//发送862指令修改系统设置 } MainWindowViewModel.SysSet_view = true; @@ -188,7 +188,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString { ID = index, - DAT = "SC861" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index)+datagrid_v.ToJsonString() + DAT = "SC861" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'") +datagrid_v.ToJsonString() });//发送861指令修改程序设置 } MainWindowViewModel.ParameterSet_view = true; @@ -219,24 +219,24 @@ namespace SunlightCentralizedControlManagement_SCCM_.View MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString { ID = index, - DAT = "SC851" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + DAT = "SC851" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'") }); MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString { ID = index, - DAT = "SC852" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + DAT = "SC852" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'") }); MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString { ID = index, - DAT = "SC853" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + DAT = "SC853" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'") }); } else if (view==1) { MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString { ID = index, - DAT = "SC854" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + DAT = "SC854" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'") }); } else if (view == 2) @@ -244,7 +244,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString { ID = index, - DAT = "SC855" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + DAT = "SC855" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'") }); } } diff --git a/View/MonitorView.xaml.cs b/View/MonitorView.xaml.cs index 63b8c87..6062ad0 100644 --- a/View/MonitorView.xaml.cs +++ b/View/MonitorView.xaml.cs @@ -40,6 +40,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View { public MonitorView() { + DataContext = new MainWindowViewModel(); InitializeComponent(); CountDown(); } @@ -175,7 +176,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString { ID = index, - DAT = "SC821" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + dat_821.ToJsonString() + DAT = "SC821" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'") + dat_821.ToJsonString() }); } @@ -199,7 +200,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString { ID = index, - DAT = "SC821" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + dat_821.ToJsonString() + DAT = "SC821" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'") + dat_821.ToJsonString() }); } Insert.IsEnabled = true; @@ -221,7 +222,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString { ID = index, - DAT = "SC821" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + dat_821.ToJsonString() + DAT = "SC821" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'") + dat_821.ToJsonString() }); } }//停止 @@ -257,7 +258,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString { ID = index, - DAT = "SC821" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + dat_821.ToJsonString() + DAT = "SC821" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'") + dat_821.ToJsonString() }); MainWindowViewModel.TechnologicalProcess_bool = true; @@ -281,7 +282,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString { ID = index, - DAT = "SC821" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + dat_821.ToJsonString() + DAT = "SC821" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'") + dat_821.ToJsonString() }); MainWindowViewModel.TechnologicalProcess_bool = true; @@ -314,7 +315,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString { ID = index, - DAT = "SC821" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + dat_821.ToJsonString() + DAT = "SC821" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'") + dat_821.ToJsonString() }); } private void ListViewItem_Delete(object sender, MouseButtonEventArgs e) @@ -330,7 +331,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString { ID = index, - DAT = "SC821" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + dat_821.ToJsonString() + DAT = "SC821" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'") + dat_821.ToJsonString() }); MainWindowViewModel.TechnologicalProcess_bool = true; @@ -380,7 +381,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString { ID = index, - DAT = "SC832" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + DAT = "SC832" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'") }); }//信息 else if (machines_info == 1) @@ -392,14 +393,14 @@ namespace SunlightCentralizedControlManagement_SCCM_.View MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString { ID = index, - DAT = "SC833" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + DAT = "SC833" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'") }); }//单据 MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString { ID = index, - DAT = "SC831" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + DAT = "SC831" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'") }); } else diff --git a/ViewModel/MainWindowViewModel.cs b/ViewModel/MainWindowViewModel.cs index a6883a8..d2c478f 100644 --- a/ViewModel/MainWindowViewModel.cs +++ b/ViewModel/MainWindowViewModel.cs @@ -67,6 +67,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel private SQLiteHelper SQLiteHelpers = null; //定义数据库 private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db"; //数据库路径 public static DataTable Machines = new DataTable(); //设备表缓存 + public static DataRow MachinesROW; public static DataTable USER_data = new DataTable(); public static UserControls.info[] inf = new UserControls.info[999]; //定义总览信息卡 public static int ERR_c = 0;//错误计数器 @@ -93,6 +94,8 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel USER_data = SQLiteHelpers.ExecuteDataSet("select * from USER order by Name desc", null).Tables[0]; SQLiteHelpers.Close(); + MachinesROW = Machines.NewRow(); + USERCapacity(App.USER_Purview);//App.USER_Purview); CountDown(); TcpClientNEW(); @@ -156,14 +159,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel timer1s.Tick += Tick_Event_1S; timer1s.Start(); - //设置定时器 - DispatcherTimer disTimer = new DispatcherTimer - { - Interval = TimeSpan.FromMilliseconds(500) //毫秒 - }; - disTimer.Tick += new EventHandler(DisTimer_500MS);//每一秒执行的方法 - disTimer.Start();//计时开始 - DispatcherTimer dis50ms = new DispatcherTimer { Interval = TimeSpan.FromMilliseconds(50) //毫秒 @@ -171,7 +166,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel dis50ms.Tick += new EventHandler(DisTimer_50MS);//每一秒执行的方法 dis50ms.Start();//计时开始 }//时间周期初始化 - void DisTimer_500MS(object sender, EventArgs e)//Tick_Event周期执行事件500MS + void DisTimer_50MS(object sender, EventArgs e)//Tick_Event周期执行事件50MS + { + if (stringQueue.Count > 0) //信息发送队列 + { + QueueString t = stringQueue.Dequeue(); + MachiensTcpClient[t.ID].SendAsync(t.DAT); + } + } + void Tick_Event_1S(object sender, EventArgs e)//Tick_Event周期执行事件1S { DATA_view(); //下传工单信息 @@ -183,11 +186,11 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel string WorkOrderdata_m = WorkOrderstepdata.Select()[k].Field("Machines").ToString(); DataTable dataTable = WorkOrderSQL.ExecuteDataSet("select * from WorkorderSteps where WorkOrder='" + WorkOrderstepdata.Select()[k].Field("WorkOrder").ToString() + "'", null).Tables[0]; - int index = Convert.ToInt16(Machines.Select("NAME='" + WorkOrderdata_m + "'").First().Field("ID")); + int index = Convert.ToInt16(Selet_Machines(Machines, "ID", "Name='" + WorkOrderdata_m + "'").ToString()); stringQueue.Enqueue(new QueueString { ID = index, - DAT = "SC811" + Selet_Machines(Machines, "SYSKEY", index) + dataTable.ToJsonString() + DAT = "SC811" + Selet_Machines(Machines, "SYSKEY", "ID='" + index + "'") + dataTable.ToJsonString() }); WorkOrderSQL.Update("WorkOrder", new Dictionary { { "State", 112 } }, "WorkOrder ='" + WorkOrderstepdata.Select()[k].Field("WorkOrder").ToString() + "'", null); @@ -197,8 +200,8 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel for (int k = 0; k < WorkOrderdata.Rows.Count; k++) { string WorkOrderdata_m = WorkOrderdata.Select()[k].Field("Machines").ToString(); - string State = Machines.Select("Name='" + WorkOrderdata_m + "'"). - First().Field("State").ToString(); + string State = Selet_Machines(Machines, "State", "Name='" + WorkOrderdata_m + "'").ToString(); + if ((State == "101") || (State == "201") || (State == "202") || (State == "309")) { DataTable dataTable = WorkOrderdata.Clone(); @@ -209,45 +212,44 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel dt_temp.EndEdit(); dataTable.Rows.Add(dt_temp.ItemArray); - int index = Convert.ToInt16(Machines.Select("NAME='" + WorkOrderdata_m + "'").First().Field("ID")); + int index = Convert.ToInt16(Selet_Machines(Machines, "ID", "Name='" + WorkOrderdata_m + "'").ToString()); stringQueue.Enqueue(new QueueString { ID = index, - DAT = "SC810" + Selet_Machines(Machines, "SYSKEY", index) + DataTableToDictionary(dataTable).ToJsonString() + DAT = "SC810" + Selet_Machines(Machines, "SYSKEY", "ID='" + index + "'") + DataTableToDictionary(dataTable).ToJsonString() }); WorkOrderSQL.Update("WorkOrder", new Dictionary { { "State", 110 } }, "WorkOrder ='" + WorkOrderdata.Select()[k].Field("WorkOrder").ToString() + "'", null); } } WorkOrderSQL.Close(); - } - void DisTimer_50MS(object sender, EventArgs e)//Tick_Event周期执行事件50MS - { - if (stringQueue.Count > 0) //信息发送队列 - { - QueueString t = stringQueue.Dequeue(); - MachiensTcpClient[t.ID].SendAsync(t.DAT); - } - } - void Tick_Event_1S(object sender, EventArgs e)//Tick_Event周期执行事件1S - { + //系统时间 Sys_Time = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"); //更新机台状态与发送指令 for (int i = 0; i < Machinesdata_Count; i++) { - if (Selet_Machines(Machines, "State", i).ToString() == "802") + if (Selet_Machines(Machines, "State", "ID='" + i + "'").ToString() == "802") { - MachiensTcpClient[i].SendAsync("SC830"+ Selet_Machines(Machines, "SYSKEY", i).ToString()); - Updata_Machines(Machines, "State", i, "101"); + stringQueue.Enqueue(new QueueString + { + ID = i, + DAT = "SC830" + Selet_Machines(Machines, "SYSKEY", "ID='" + i + "'").ToString() + });//信息插入队列 + + Updata_Machines(Machines, "State", "ID='" + i + "'", "101"); } } for (int i = 0; i < Machinesdata_Count; i++) { - string mac_s = Selet_Machines(Machines, "State", i).ToString(); + string mac_s = Selet_Machines(Machines, "State", "ID='" + i + "'").ToString(); if ((mac_s == "101") || (mac_s == "201") || (mac_s == "202") || (mac_s == "309"))//获取信息 { - stringQueue.Enqueue(new QueueString { ID = i, DAT = "SC830" + Selet_Machines(Machines, "SYSKEY", i).ToString() });//信息插入队列 + stringQueue.Enqueue(new QueueString + { + ID = i, + DAT = "SC830" + Selet_Machines(Machines, "SYSKEY", "ID='" + i + "'").ToString() + });//信息插入队列 } } @@ -269,9 +271,13 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel { for (int i = 0; i < Machinesdata_Count; i++) { - if (Selet_Machines(Machines, "State", i).ToString() == "801") + if (Selet_Machines(Machines, "State", "ID='" + i + "'").ToString() == "801") { - MachiensTcpClient[i].SendAsync("SC800:SCCM[" + MachiensTcpClient[i].IP + ";" + MachiensTcpClient[i].Port + "]"); + stringQueue.Enqueue(new QueueString + { + ID = i, + DAT = "SC800:SCCM[" + MachiensTcpClient[i].IP + ";" + MachiensTcpClient[i].Port + "]" + });//信息插入队列 } }//发送800指令 } @@ -279,13 +285,13 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel { for (int i = 0; i < Machinesdata_Count; i++) { - if (Selet_Machines(Machines, "State", i).ToString() == "800") + if (Selet_Machines(Machines, "State", "ID='" + i + "'").ToString() == "800") { MachiensTcpClient[i] = new TcpClient(); DataRow dt = machinesdata[i]; _ = AsyncTcpClient.TcpClient(MachiensTcpClient[i] //建立tcp连接 - , Selet_Machines(Machines, "IP", Convert.ToInt16(dt["ID"])).ToString() - , Selet_Machines(Machines, "PORT", Convert.ToInt16(dt["ID"])).ToString()); + , Selet_Machines(Machines, "IP", "ID='" + Convert.ToInt16(dt["ID"]) + "'" ).ToString() + , Selet_Machines(Machines, "PORT", "ID='" + Convert.ToInt16(dt["ID"]) + "'").ToString()); } }//重连 } @@ -303,10 +309,10 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel { MachiensTcpClient[i] = new TcpClient(); DataRow dt = machinesdata[i]; - Updata_Machines(Machines, "State", Convert.ToInt16(dt["ID"]), "800"); + Updata_Machines(Machines, "State", "ID='" + Convert.ToInt16(dt["ID"]) + "'", "800"); _ = AsyncTcpClient.TcpClient(MachiensTcpClient[i] //建立tcp连接 - , Selet_Machines(Machines, "IP", Convert.ToInt16(dt["ID"])).ToString() - , Selet_Machines(Machines, "PORT", Convert.ToInt16(dt["ID"])).ToString()); + , Selet_Machines(Machines, "IP", "ID='" + Convert.ToInt16(dt["ID"]) + "'").ToString() + , Selet_Machines(Machines, "PORT", "ID='" + Convert.ToInt16(dt["ID"]) + "'").ToString()); } } @@ -329,13 +335,13 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel set { sys_machine = value; OnPropertyChanged("Sys_machine"); } } - public static object Selet_Machines(DataTable DB, string name, int key)//查询 + public static object Selet_Machines(DataTable DB, string name, string key)//查询 { try { lock (DB) { - DataRow drEmployee = DB.Select("ID='" + key + "'").First(); + DataRow drEmployee = DB.Select(key).First(); object index = drEmployee.Field(name); return index; } @@ -346,13 +352,13 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel return "ERR"; } } - public static void Updata_Machines(DataTable DB, string name, int key, string Value)//更新数据 + public static void Updata_Machines(DataTable DB, string name, string key, string Value)//更新数据 { try { lock (DB) { - DataRow drEmployee = DB.Select("ID='" + key + "'").First(); + DataRow drEmployee = DB.Select(key).First(); drEmployee.BeginEdit(); drEmployee[name] = Value; drEmployee.EndEdit(); @@ -365,6 +371,36 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel // LogGing.LogGingDATA("SDTD:" + ex.ToString()); } } + public static void UpdataMachines(string key, DataRow Value)//更新数据 + { + try + { + lock (Machines) + { + DataRow drEmployee = Machines.Select("IP='" + key + "'").First(); + drEmployee.BeginEdit(); + + if (Value["State"] != null) drEmployee["State"] = Value["State"]; + if (Value["WorkOrder"] != null) drEmployee["WorkOrder"] = Value["WorkOrder"]; + if (Value["Dyelot"] != null) drEmployee["Dyelot"] = Value["Dyelot"]; + if (Value["Temperature"] != null) drEmployee["Temperature"] = Value["WorkOrder"]; + if (Value["WaterLevel"] != null) drEmployee["WaterLevel"] = Value["WaterLevel"]; + if (Value["Process"] != null) drEmployee["Process"] = Value["Process"]; + if (Value["Step"] != null) drEmployee["Step"] = Value["Step"]; + if (Value["Message"] != null) drEmployee["Message"] = Value["Message"]; + if (Value["SYSKEY"] != null) drEmployee["SYSKEY"] = Value["SYSKEY"]; + if (Value["Groups"] != null) drEmployee["Groups"] = Value["Groups"]; + + drEmployee.EndEdit(); + drEmployee.AcceptChanges(); + drEmployee.ClearErrors(); + } + } + catch (Exception) + { + // LogGing.LogGingDATA("SDTD:" + ex.ToString()); + } + } public static DataTable dt_d = new DataTable("DIO"); public static DataTable dt_a = new DataTable("AIO");