diff --git a/SunlightCentralizedControlManagement_SCCM_.csproj b/SunlightCentralizedControlManagement_SCCM_.csproj
index 0f1999d..2239189 100644
--- a/SunlightCentralizedControlManagement_SCCM_.csproj
+++ b/SunlightCentralizedControlManagement_SCCM_.csproj
@@ -135,6 +135,7 @@
+
diff --git a/UserClass/AsyncSerialPortClient.cs b/UserClass/AsyncSerialPortClient.cs
index c803d65..04ec44d 100644
--- a/UserClass/AsyncSerialPortClient.cs
+++ b/UserClass/AsyncSerialPortClient.cs
@@ -6,6 +6,7 @@ using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
+using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
@@ -67,7 +68,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass
{
if (sArray[i].Length>5)
{
- return EasyTask.CompletedTask; ;
string SYSAPI = sArray[i].Substring(0, 5);
string Station = ClipBetween(sArray[i], '[', ']');
string DAT = sArray[i].Substring(sArray[i].IndexOf("]") + 1);
@@ -77,12 +77,14 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass
{
Dictionary _new = new Dictionary();//缓存函数
_new = JsonConvert.DeserializeObject>(DAT);//反序列化
- DataRow drEmployee = MainWindowViewModel.Machines.Select("Station='" +
- Station + "' AND Serial = 'PORT1'").First();
- drEmployee.BeginEdit();
- drEmployee["State"] = "802";
- drEmployee.EndEdit();
- drEmployee.AcceptChanges();
+ lock (MainWindowViewModel.Machines.Rows.SyncRoot)
+ {
+ DataRow drEmployee = MainWindowViewModel.Machines.Select("Station='" + Station + "' AND Serial = 'PORT1'").First();
+ drEmployee.BeginEdit();
+ drEmployee["State"] = "802";
+ drEmployee.EndEdit();
+ drEmployee.AcceptChanges();
+ }
}
catch (Exception ex)
{
@@ -132,32 +134,36 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass
{
Dictionary _new = new Dictionary();//缓存函数
_new = JsonConvert.DeserializeObject>(DAT);//反序列化
- DataRow drEmployee = MainWindowViewModel.Machines.Select("Station='" +
- Station + "' AND Serial = 'PORT1'").First();
- drEmployee.BeginEdit();
- drEmployee["ERR"] = _new.GetValue("ERR");
- drEmployee["LOCK"] = _new.GetValue("LOCK");
- drEmployee["Message"] = _new.GetValue("Status");
- drEmployee["WorkOrder"] = _new.GetValue("WorkNumder");
- drEmployee["Temperature"] = _new.GetValue("MTT");
- drEmployee["WaterLevel"] = _new.GetValue("MTL");
- drEmployee["Process"] = _new.GetValue("Process");
- drEmployee["Step"] = _new.GetValue("Step");
- drEmployee["UserButton"] = _new.GetValue("UserButton");
- if (_new.GetValue("UserInfoStart").ToString() != "900")
- { drEmployee["UserInfoStart"] = _new.GetValue("UserInfoStart"); }
- drEmployee["UserInfo"] = _new.GetValue("UserInfo");
- drEmployee["WORK_RUN"] = _new.GetValue("WORK_RUN");
- drEmployee["RUN_STEPID"] = _new.GetValue("RUN_STEPID");
- drEmployee["CALL"] = _new.GetValue("CALL");
- drEmployee.EndEdit();
- drEmployee.AcceptChanges();
-
+ string mac;
+ lock (MainWindowViewModel.Machines.Rows.SyncRoot)
+ {
+ DataRow drEmployee = MainWindowViewModel.Machines.Select("Station='" + Station + "' AND Serial = 'PORT1'").First();
+ mac = drEmployee["Name"].ToString();
+ drEmployee.BeginEdit();
+ drEmployee["ERR"] = _new.GetValue("ERR");
+ drEmployee["LOCK"] = _new.GetValue("LOCK");
+ drEmployee["Message"] = _new.GetValue("Status");
+ drEmployee["WorkOrder"] = _new.GetValue("WorkNumder");
+ drEmployee["Temperature"] = _new.GetValue("MTT");
+ drEmployee["WaterLevel"] = _new.GetValue("MTL");
+ drEmployee["Process"] = _new.GetValue("Process");
+ drEmployee["Step"] = _new.GetValue("Step");
+ drEmployee["UserButton"] = _new.GetValue("UserButton");
+ if (_new.GetValue("UserInfoStart").ToString() != "900")
+ { drEmployee["UserInfoStart"] = _new.GetValue("UserInfoStart"); }
+ drEmployee["UserInfo"] = _new.GetValue("UserInfo");
+ drEmployee["WORK_RUN"] = _new.GetValue("WORK_RUN");
+ drEmployee["RUN_STEPID"] = _new.GetValue("RUN_STEPID");
+ drEmployee["CALL"] = _new.GetValue("CALL");
+ drEmployee.EndEdit();
+ drEmployee.AcceptChanges();
+ }
+
if (_new.GetValue("Status").ToString() != "----------")
{
Dictionary Chart_new = new Dictionary();//缓存函数
Chart_new.Add("WorkOrder", _new.GetValue("WorkNumder"));
- Chart_new.Add("Machine", _new.GetValue("Machine"));
+ Chart_new.Add("Machine", mac);
Chart_new.Add("Time", _new.GetValue("Time"));
Chart_new.Add("MST", _new.GetValue("MST"));
Chart_new.Add("MTT", _new.GetValue("MTT"));
@@ -174,7 +180,8 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass
MainWindowViewModel.SQLiteChartAdress.InsertData("Chart", Chart_new);// 执行插入
}
}
- 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 == "SC831")
{
@@ -416,13 +423,38 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass
{
try
{
- var t= CRCcheck16.ToCRC16(command);
+ var t = CRCcheck16.ToCRC16(command);
_responseEvent.Reset();
serialPortClients.Send(command); // 发送指令
// 等待500毫秒或直到收到响应
_responseEvent.Wait(TimeSpan.FromMilliseconds(1000));
// 重置事件状态
_responseEvent.Set();
+ //清楚了解状态
+ string Station = ClipBetween(command, '[', ']');
+ lock (MainWindowViewModel.Machines.Rows.SyncRoot)
+ {
+ DataRow drEmployee = MainWindowViewModel.Machines.Select("Station='" +
+ Station + "' AND Serial = 'PORT1'").First();
+ if (drEmployee.Field("State") != 800)
+ {
+ drEmployee.BeginEdit();
+ drEmployee["State"] = "800";
+ drEmployee["WorkOrder"] = "------";
+ drEmployee["Dyelot"] = "";
+ drEmployee["Temperature"] = 0.0;
+ drEmployee["WaterLevel"] = 0.0;
+ drEmployee["Process"] = "";
+ drEmployee["Step"] = "";
+ drEmployee["Message"] = "";
+ drEmployee["SYSKEY"] = "";
+ drEmployee["WORK_RUN"] = "-1";
+ drEmployee["ERR"] = false;
+ drEmployee.EndEdit();
+ drEmployee.AcceptChanges();
+ }
+ }
+
}
catch (Exception) { }
}
diff --git a/UserClass/AsyncTcpClient.cs b/UserClass/AsyncTcpClient.cs
index 395a360..1a02dd7 100644
--- a/UserClass/AsyncTcpClient.cs
+++ b/UserClass/AsyncTcpClient.cs
@@ -49,12 +49,14 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass
{
try
{
- DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "'").First();
- drEmployee.BeginEdit();
- drEmployee["State"] = "801";
- drEmployee.EndEdit();
- drEmployee.AcceptChanges();
-
+ lock (MainWindowViewModel.Machines.Rows.SyncRoot)
+ {
+ 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)
@@ -68,21 +70,24 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass
{
try
{
- DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "'").First();
- drEmployee.BeginEdit();
- drEmployee["State"] = "800";
- drEmployee["WorkOrder"] = "------";
- drEmployee["Dyelot"] = "";
- drEmployee["Temperature"] = 0.0;
- drEmployee["WaterLevel"] = "----";
- drEmployee["Process"] = "";
- drEmployee["Step"] = "";
- drEmployee["Message"] = "";
- drEmployee["SYSKEY"] = "";
- drEmployee["WORK_RUN"] = "-1";
- drEmployee["ERR"] = false;
- drEmployee.EndEdit();
- drEmployee.AcceptChanges();
+ lock (MainWindowViewModel.Machines.Rows.SyncRoot)
+ {
+ DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "'").First();
+ drEmployee.BeginEdit();
+ drEmployee["State"] = "800";
+ drEmployee["WorkOrder"] = "------";
+ drEmployee["Dyelot"] = "";
+ drEmployee["Temperature"] = 0.0;
+ drEmployee["WaterLevel"] = 0.0;
+ drEmployee["Process"] = "";
+ drEmployee["Step"] = "";
+ drEmployee["Message"] = "";
+ drEmployee["SYSKEY"] = "";
+ drEmployee["WORK_RUN"] = "-1";
+ drEmployee["ERR"] = false;
+ drEmployee.EndEdit();
+ drEmployee.AcceptChanges();
+ }
LogGing.LogGingDATA("[IP='" + client.IP + "' AND port='" + client.Port + "']=Link_STOP");
}
catch (Exception ex)
@@ -95,21 +100,24 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass
{
try
{
- DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "'").First();
- drEmployee.BeginEdit();
- drEmployee["State"] = "800";
- drEmployee["WorkOrder"] = "------";
- drEmployee["Dyelot"] = "";
- drEmployee["Temperature"] = 0.0;
- drEmployee["WaterLevel"] = "----";
- drEmployee["Process"] = "";
- drEmployee["Step"] = "";
- drEmployee["Message"] = "";
- drEmployee["SYSKEY"] = "";
- drEmployee["WORK_RUN"] = "-1";
- drEmployee["ERR"] = false;
- drEmployee.EndEdit();
- drEmployee.AcceptChanges();
+ lock (MainWindowViewModel.Machines.Rows.SyncRoot)
+ {
+ DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "'").First();
+ drEmployee.BeginEdit();
+ drEmployee["State"] = "800";
+ drEmployee["WorkOrder"] = "------";
+ drEmployee["Dyelot"] = "";
+ drEmployee["Temperature"] = 0.0;
+ drEmployee["WaterLevel"] = 0.0;
+ drEmployee["Process"] = "";
+ drEmployee["Step"] = "";
+ drEmployee["Message"] = "";
+ drEmployee["SYSKEY"] = "";
+ drEmployee["WORK_RUN"] = "-1";
+ drEmployee["ERR"] = false;
+ drEmployee.EndEdit();
+ drEmployee.AcceptChanges();
+ }
LogGing.LogGingDATA("[IP='" + client.IP + "' AND port='" + client.Port + "']=Link_INTERRUPT");
}
catch (Exception ex)
@@ -130,14 +138,17 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass
DAT = DAT.Substring(DAT.IndexOf("]") + 1);
Dictionary Chart_new = new Dictionary();//缓存函数
Chart_new = JsonConvert.DeserializeObject>(DAT);//反序列化
- DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "'").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();
+ lock (MainWindowViewModel.Machines.Rows.SyncRoot)
+ {
+ DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "'").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)
{
@@ -213,38 +224,41 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass
foreach (DataRow sourceRow in dataTable.Rows)
{
- // 创建新行(基于目标表结构)
- DataRow newRow = MainWindowViewModel.Dyelot_CALL.NewRow();
- // 复制源表中存在的列数据
- foreach (DataColumn column in dataTable.Columns)
+ lock (MainWindowViewModel.Dyelot_CALL.Rows.SyncRoot)
{
- if (MainWindowViewModel.Dyelot_CALL.Columns.Contains(column.ColumnName))
+ // 创建新行(基于目标表结构)
+ DataRow newRow = MainWindowViewModel.Dyelot_CALL.NewRow();
+ // 复制源表中存在的列数据
+ foreach (DataColumn column in dataTable.Columns)
{
- newRow[column.ColumnName] = sourceRow[column.ColumnName];
+ if (MainWindowViewModel.Dyelot_CALL.Columns.Contains(column.ColumnName))
+ {
+ newRow[column.ColumnName] = sourceRow[column.ColumnName];
+ }
}
- }
- MainWindowViewModel.Dyelot_CALL.Rows.Add(newRow);
+ MainWindowViewModel.Dyelot_CALL.Rows.Add(newRow);
- Dictionary Product_ = new Dictionary();//缓存函数
- Product_.Add("State", 202);
- Product_.Add("Dyelot", newRow.Field("Dyelot"));
- Product_.Add("Step", newRow.Field("Step"));
- Product_.Add("ProductCode", newRow.Field("ProductCode"));
- Product_.Add("Amount", newRow.Field