diff --git a/EX/ManualDyelot.xaml.cs b/EX/ManualDyelot.xaml.cs index 6ca5da3..694bd80 100644 --- a/EX/ManualDyelot.xaml.cs +++ b/EX/ManualDyelot.xaml.cs @@ -34,9 +34,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.EX public partial class ManualDyelot : Window { - private SQLiteHelper SQLiteHelpers = null; //定义数据库 - private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db"; //数据库路径 - DataTable dyelotdat = new DataTable(); + DataTable dyelotdat = new DataTable(); public static string Machines; DataTable mach = new DataTable(); DataTable RRODUCTdataTable = new DataTable(); //建立RRODUCT缓存 @@ -125,8 +123,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.EX if (string.IsNullOrEmpty(comboBoxMachine.Text)) return;//未输入机台时返回 try { - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 Dictionary Dyelot_DAT = new Dictionary();//缓存函数 for (int x = 0; x < RRODUCTdataTable.Rows.Count; x++) { @@ -144,10 +140,9 @@ namespace SunlightCentralizedControlManagement_SCCM_.EX Dyelot_DAT.Add("DispenseStartTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); Dyelot_DAT.Add("Grams", RRODUCTdataTable.Rows[x]["TARGET_WT"]); Dyelot_DAT.Add("Amount", RRODUCTdataTable.Rows[x]["Amount"]); - SQLiteHelpers.InsertData("Dyelot", Dyelot_DAT);//行插入 + MainWindowViewModel.SQLiteHelpers.InsertData("Dyelot", Dyelot_DAT);//行插入 Dyelot_DAT.Clear(); } - SQLiteHelpers.Close(); //关闭连接 LogGing.ExchangeDATA("Dyelot=" + dyelot.Text + ";Machine=" + comboBoxMachine.Text + ";Program=------;User=" + MainWindowViewModel.USER_data + ";"); diff --git a/UserClass/AsyncSerialPortClient.cs b/UserClass/AsyncSerialPortClient.cs index fa478c0..451826d 100644 --- a/UserClass/AsyncSerialPortClient.cs +++ b/UserClass/AsyncSerialPortClient.cs @@ -1,7 +1,9 @@ -using System; +using ScottPlot.Plottables; +using System; using System.Collections.Generic; using System.Linq; using System.Text; +using System.Threading; using System.Threading.Tasks; using TouchSocket.Core; using TouchSocket.SerialPorts; @@ -18,10 +20,13 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass portclient.Connected = (client, e) => { return EasyTask.CompletedTask; };//成功连接到端口 portclient.Closing = (client, e) => { return EasyTask.CompletedTask; };//即将从端口断开连接。此处仅主动断开才有效。 portclient.Closed = (client, e) => { return EasyTask.CompletedTask; };//从端口断开连接,当连接不成功时不会触发。 - portclient.Received = async (c, e) => + portclient.Received = (client, e) => { - - await Console.Out.WriteLineAsync(e.ByteBlock.Span.ToString(Encoding.UTF8)); + _responseEvent.Set(); + string DAT = e.ByteBlock.Span.ToString(Encoding.UTF8); + //string DAT1 = CRCcheck16.ToCRC16(e.ByteBlock.Span.ToString(Encoding.UTF8)); + + return EasyTask.CompletedTask; ; }; await portclient.SetupAsync(new TouchSocketConfig() @@ -31,7 +36,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass DataBits = 8,//数据位 Parity = System.IO.Ports.Parity.None,//校验位 PortName = com,//COM - StopBits = System.IO.Ports.StopBits.One,//停止位 + StopBits = System.IO.Ports.StopBits.One,//停止位 }) .SetSerialDataHandlingAdapter(() => new PeriodPackageAdapter() { CacheTimeout = TimeSpan.FromMilliseconds(100) }) .ConfigurePlugins(a => @@ -41,5 +46,40 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass await portclient.ConnectAsync(); } + + + private static readonly ManualResetEventSlim _responseEvent = new ManualResetEventSlim(false); + private static byte[] _receivedData; + private static readonly object _sendLock = new object(); // 确保发送-等待过程原子性 + /// + /// 发送指令并等待响应,超时时间为500ms + /// + /// 要发送的指令字节数组 + /// 从机的响应数据,超时则为null + public static byte[] SendCommandAndWait(SerialPortClient serialPortClients, string command) + { + // lock (_sendLock) // 防止并发发送 + { + + _receivedData = null; + _responseEvent.Reset(); // 重置事件状态 + + serialPortClients.Send(command); // 发送指令 + + // 等待500毫秒或直到收到响应 + bool signaled = _responseEvent.Wait(TimeSpan.FromMilliseconds(1000)); + + if (signaled) + { + return _receivedData; // 返回收到的数据 + } + else + { + // 超时处理,记录日志或抛出异常 + //Console.WriteLine("警告: 等待从机响应超时 (500ms)。"); + return null; // 或者可以抛出 TimeoutException + } + } + } } } diff --git a/UserClass/AsyncTcpClient.cs b/UserClass/AsyncTcpClient.cs index 6644c51..3b88264 100644 --- a/UserClass/AsyncTcpClient.cs +++ b/UserClass/AsyncTcpClient.cs @@ -39,8 +39,8 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass /// public class AsyncTcpClient { - private static SQLiteHelper SQLiteHelpers = null; //定义数据库 - private static readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db"; //数据库路径 + + public static SQLiteHelper SQLiteChartAdress = null; //定义数据库 private static readonly string ChartAdress = Environment.CurrentDirectory + "\\DataBase\\Chart.db"; //数据库路径 public static async Task TcpClient(TcpClient tcpClient, string ip, string port) { @@ -149,12 +149,9 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass { try { - DAT = DAT.Substring(DAT.IndexOf("]") + 1); - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - SQLiteHelpers.Update("WorkOrder", new Dictionary { { "State", 111 } }, + DAT = DAT.Substring(DAT.IndexOf("]") + 1); + MainWindowViewModel.SQLiteHelpers.Update("WorkOrder", new Dictionary { { "State", 111 } }, "WorkOrder ='" + DAT + "'", null); - SQLiteHelpers.Close(); } catch (Exception ex) { @@ -166,11 +163,8 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass try { DAT = DAT.Substring(DAT.IndexOf("]") + 1); - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - SQLiteHelpers.Update("WorkOrder", new Dictionary { { "State", 113 } }, + MainWindowViewModel.SQLiteHelpers.Update("WorkOrder", new Dictionary { { "State", 113 } }, "WorkOrder ='" + DAT + "'", null); - SQLiteHelpers.Close(); } catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; } } @@ -178,12 +172,9 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass { try { - DAT = DAT.Substring(DAT.IndexOf("]") + 1); - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - SQLiteHelpers.Update("WorkOrder", new Dictionary { { "State", 101 } }, + DAT = DAT.Substring(DAT.IndexOf("]") + 1); + MainWindowViewModel.SQLiteHelpers.Update("WorkOrder", new Dictionary { { "State", 101 } }, "WorkOrder ='" + DAT + "'", null); - SQLiteHelpers.Close(); } catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; } } @@ -220,11 +211,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass newRow["State"] = 202; newRow.EndEdit(); - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - SQLiteHelpers.InsertData("DyelotHistory", SQLiteHelpers.ToDictionary(newRow));// 执行插入 - SQLiteHelpers.Close(); - + MainWindowViewModel.SQLiteHelpers.InsertData("DyelotHistory", MainWindowViewModel.SQLiteHelpers.ToDictionary(newRow));// 执行插入 MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString { ID = Convert.ToInt16(MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, @@ -281,10 +268,10 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass Chart_new.Add("STTC", _new.GetValue("STTC")); Chart_new.Add("STLC", _new.GetValue("STLC")); - SQLiteHelpers = new SQLiteHelper(ChartAdress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - SQLiteHelpers.InsertData("Chart", Chart_new);// 执行插入 - SQLiteHelpers.Close(); + SQLiteChartAdress = new SQLiteHelper(ChartAdress); //数据库连接路径 + SQLiteChartAdress.Open(); //打开数据库 + SQLiteChartAdress.InsertData("Chart", Chart_new);// 执行插入 + SQLiteChartAdress.Close(); } } @@ -367,10 +354,8 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass try { DAT = DAT.Substring(DAT.IndexOf("]") + 1); - SQLiteHelpers.Open(); //打开数据库 - SQLiteHelpers.Update("WorkOrder", new Dictionary { { "State", 109 } }, + MainWindowViewModel.SQLiteHelpers.Update("WorkOrder", new Dictionary { { "State", 109 } }, "WorkOrder ='" + DAT + "'", null); - SQLiteHelpers.Close(); } catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; } }//发布失败 @@ -379,10 +364,8 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass try { DAT = DAT.Substring(DAT.IndexOf("]") + 1); - SQLiteHelpers.Open(); //打开数据库 - SQLiteHelpers.Update("WorkOrder", new Dictionary { { "State", 119 } }, + MainWindowViewModel.SQLiteHelpers.Update("WorkOrder", new Dictionary { { "State", 119 } }, "WorkOrder ='" + DAT + "'", null); - SQLiteHelpers.Close(); } catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; } }//细节错误 diff --git a/View/CurveView.xaml.cs b/View/CurveView.xaml.cs index 34110c8..96cfa14 100644 --- a/View/CurveView.xaml.cs +++ b/View/CurveView.xaml.cs @@ -28,9 +28,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View /// public partial class CurveView : UserControl { - private SQLiteHelper SQLiteHelpers = null; //定义数据库 - private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db"; //数据库路径 - public static DataTable WorkOrder = new DataTable(); //物料缓存 + public static DataTable WorkOrder = new DataTable(); //物料缓存 public static string CurveDiagram; private readonly UserClass.IniFile.IniFiles Configini = new UserClass.IniFile.IniFiles(Convert.ToString(System.AppDomain.CurrentDomain.BaseDirectory) + "SCCM.ini"); private string SYS_machines =null; @@ -81,24 +79,18 @@ namespace SunlightCentralizedControlManagement_SCCM_.View Picture.Content = new View.CurveDiagram(false, SYS_machines, DateTime.Parse(Sdatepicker.Text).ToString("yyyy/MM/dd"), DateTime.Parse(Sdatepicker.Text).AddDays(1).ToString("yyyy/MM/dd"), CurveDiagram); - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - WorkOrder = SQLiteHelpers.ExecuteDataSet("select * from WorkOrder where StartTime<='" + + WorkOrder = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from WorkOrder where StartTime<='" + DateTime.Parse(Sdatepicker.Text).AddDays(1).ToString("yyyy/MM/dd") + "' and StartTime>='" + DateTime.Parse(Sdatepicker.Text).ToString("yyyy/MM/dd") + "'and Machines='" + SYS_machines + "'", null).Tables[0]; //读取表写入缓存 - SQLiteHelpers.Close(); GridWorkOrder.ItemsSource = WorkOrder.DefaultView; } else { - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - WorkOrder = SQLiteHelpers.ExecuteDataSet("select * from WorkOrder where StartTime<='" + + WorkOrder = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from WorkOrder where StartTime<='" + DateTime.Parse(Sdatepicker.Text).AddDays(1).ToString("yyyy/MM/dd") + "' and StartTime>='" + DateTime.Parse(Sdatepicker.Text).ToString("yyyy/MM/dd") + "'", null).Tables[0]; //读取表写入缓存 - SQLiteHelpers.Close(); GridWorkOrder.ItemsSource = WorkOrder.DefaultView; } @@ -112,24 +104,17 @@ namespace SunlightCentralizedControlManagement_SCCM_.View Picture.Content = new View.CurveDiagram(false, SYS_machines, DateTime.Parse(Sdatepicker.Text).ToString("yyyy/MM/dd"), DateTime.Parse(Sdatepicker.Text).AddDays(1).ToString("yyyy/MM/dd"), CurveDiagram);//刷新图表 - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - WorkOrder = SQLiteHelpers.ExecuteDataSet("select * from WorkOrder where StartTime<='" + + WorkOrder = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from WorkOrder where StartTime<='" + DateTime.Parse(Sdatepicker.Text).AddDays(1).ToString("yyyy/MM/dd") + "' and StartTime>='" + DateTime.Parse(Sdatepicker.Text).ToString("yyyy/MM/dd") + "'and Machines='" + SYS_machines + "'", null).Tables[0]; //读取表写入缓存 - SQLiteHelpers.Close(); - GridWorkOrder.ItemsSource = WorkOrder.DefaultView; - } + GridWorkOrder.ItemsSource = WorkOrder.DefaultView; } else { - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - WorkOrder = SQLiteHelpers.ExecuteDataSet("select * from WorkOrder where StartTime<='" + + WorkOrder = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from WorkOrder where StartTime<='" + DateTime.Parse(Sdatepicker.Text).AddDays(1).ToString("yyyy/MM/dd") + "' and StartTime>='" + DateTime.Parse(Sdatepicker.Text).ToString("yyyy/MM/dd") + "'", null).Tables[0]; //读取表写入缓存 - SQLiteHelpers.Close(); GridWorkOrder.ItemsSource = WorkOrder.DefaultView; } @@ -143,24 +128,18 @@ namespace SunlightCentralizedControlManagement_SCCM_.View Picture.Content = new View.CurveDiagram(false, SYS_machines, DateTime.Parse(Sdatepicker.Text).ToString("yyyy/MM/dd"), DateTime.Parse(Sdatepicker.Text).AddDays(1).ToString("yyyy/MM/dd"), CurveDiagram); - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - WorkOrder = SQLiteHelpers.ExecuteDataSet("select * from WorkOrder where StartTime<='" + + WorkOrder = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from WorkOrder where StartTime<='" + DateTime.Parse(Sdatepicker.Text).AddDays(1).ToString("yyyy/MM/dd") + "' and StartTime>='" + DateTime.Parse(Sdatepicker.Text).ToString("yyyy/MM/dd") + "'and Machines='" + SYS_machines + "'", null).Tables[0]; //读取表写入缓存 - SQLiteHelpers.Close(); GridWorkOrder.ItemsSource = WorkOrder.DefaultView; } else { - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - WorkOrder = SQLiteHelpers.ExecuteDataSet("select * from WorkOrder where StartTime<='" + + WorkOrder = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from WorkOrder where StartTime<='" + DateTime.Parse(Sdatepicker.Text).AddDays(1).ToString("yyyy/MM/dd") + "' and StartTime>='" + DateTime.Parse(Sdatepicker.Text).ToString("yyyy/MM/dd") + "'", null).Tables[0]; //读取表写入缓存 - SQLiteHelpers.Close(); GridWorkOrder.ItemsSource = WorkOrder.DefaultView; } @@ -174,13 +153,10 @@ namespace SunlightCentralizedControlManagement_SCCM_.View SYS_machines = (Griddata.Columns[1].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第1列, mac.Text = SYS_machines; - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - WorkOrder = SQLiteHelpers.ExecuteDataSet("select * from WorkOrder where StartTime<='" + + WorkOrder = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from WorkOrder where StartTime<='" + DateTime.Parse(Sdatepicker.Text).AddDays(1).ToString("yyyy/MM/dd") + "' and StartTime>='" + DateTime.Parse(Sdatepicker.Text).ToString("yyyy/MM/dd") + "'and Machines='" + SYS_machines + "'", null).Tables[0]; //读取表写入缓存 - SQLiteHelpers.Close(); GridWorkOrder.ItemsSource = WorkOrder.DefaultView; Picture.Content = new View.CurveDiagram(false, SYS_machines, DateTime.Parse(Sdatepicker.Text).ToString("yyyy/MM/dd"), @@ -204,10 +180,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View string SysTime = DateTime.Parse(sender.ToString()).ToString("yyyy/MM/dd"); string SysTimeDays = DateTime.Parse(sender.ToString()).AddDays(1).ToString("yyyy/MM/dd"); - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - WorkOrder = SQLiteHelpers.ExecuteDataSet("select * from WorkOrder where " + "StartTime>='" + SysTime + "'and StartTime<='" + SysTimeDays + "'", null).Tables[0]; //读取表写入缓存 - SQLiteHelpers.Close(); + WorkOrder = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from WorkOrder where " + "StartTime>='" + SysTime + "'and StartTime<='" + SysTimeDays + "'", null).Tables[0]; //读取表写入缓存 GridWorkOrder.ItemsSource = WorkOrder.DefaultView; } diff --git a/View/DispenseMachinesSet.xaml.cs b/View/DispenseMachinesSet.xaml.cs index a92034f..658842e 100644 --- a/View/DispenseMachinesSet.xaml.cs +++ b/View/DispenseMachinesSet.xaml.cs @@ -39,16 +39,11 @@ namespace SunlightCentralizedControlManagement_SCCM_.View TextMachineGroup.ItemsSource = Machine_; } - private SQLiteHelper SQLiteHelpers = null; //定义数据库 - private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db"; //数据库路径 - private readonly UserClass.IniFile.IniFiles Configini = new UserClass.IniFile.IniFiles(Convert.ToString(System.AppDomain.CurrentDomain.BaseDirectory) + "SCCM.ini"); + private readonly UserClass.IniFile.IniFiles Configini = new UserClass.IniFile.IniFiles(Convert.ToString(System.AppDomain.CurrentDomain.BaseDirectory) + "SCCM.ini"); //private string SYS_machines = null; private void UserControl_Loaded(object sender, RoutedEventArgs e) { - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - DataTable dataTable = SQLiteHelpers.ExecuteDataSet("select * from MachinesDispense Order by id", null).Tables[0]; - SQLiteHelpers.Close(); + DataTable dataTable = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from MachinesDispense Order by id", null).Tables[0]; Griddata.ItemsSource = dataTable.DefaultView; } @@ -88,25 +83,20 @@ namespace SunlightCentralizedControlManagement_SCCM_.View dr_new.Add("LOCK", dLICK.IsChecked.ToString()); dr_new.Add("DATA",imageData); - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - - if (SQLiteHelpers.ExecuteDataSet("select * from MachinesDispense where name ='" + comboBoxMachine.Text + "'", null).Tables[0].Rows.Count == 0) + if (MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from MachinesDispense where name ='" + comboBoxMachine.Text + "'", null).Tables[0].Rows.Count == 0) { - SQLiteHelpers.InsertData("MachinesDispense", dr_new); + MainWindowViewModel.SQLiteHelpers.InsertData("MachinesDispense", dr_new); } else { - SQLiteHelpers.Update("MachinesDispense", dr_new, "name='" + comboBoxMachine.Text + "'", null); + MainWindowViewModel.SQLiteHelpers.Update("MachinesDispense", dr_new, "name='" + comboBoxMachine.Text + "'", null); } - Griddata.ItemsSource = SQLiteHelpers.ExecuteDataSet("select Name,Groups,IP,PORT,DATA from MachinesDispense Order by id", null).Tables[0].DefaultView; - SQLiteHelpers.Close(); + Griddata.ItemsSource = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select Name,Groups,IP,PORT,DATA from MachinesDispense Order by id", null).Tables[0].DefaultView; MessageBox.Show(Properties.Resources.Save + comboBoxMachine.Text, "SCCM", MessageBoxButton.OK, MessageBoxImage.Information); } else { MessageBox.Show(Properties.Resources.ERR , "SCCM", MessageBoxButton.OK, MessageBoxImage.Error); - } } private void Delete_Click(object sender, RoutedEventArgs e) @@ -116,11 +106,8 @@ namespace SunlightCentralizedControlManagement_SCCM_.View MessageBoxResult vr = System.Windows.MessageBox.Show(Properties.Resources.Delete + comboBoxMachine.Text, "SCCM", MessageBoxButton.OKCancel, MessageBoxImage.Question); if (vr == MessageBoxResult.OK) // 如果是确定,就执行下面代码 { - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - SQLiteHelpers.Delete("MachinesDispense", "Name='" + comboBoxMachine.Text + "'", null); - Griddata.ItemsSource = SQLiteHelpers.ExecuteDataSet("select Name,Groups,IP,PORT,DATA from MachinesDispense Order by id", null).Tables[0].DefaultView; - SQLiteHelpers.Close(); + MainWindowViewModel.SQLiteHelpers.Delete("MachinesDispense", "Name='" + comboBoxMachine.Text + "'", null); + Griddata.ItemsSource = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select Name,Groups,IP,PORT,DATA from MachinesDispense Order by id", null).Tables[0].DefaultView; comboBoxMachine.Text = null; } } diff --git a/View/DispenseView.xaml.cs b/View/DispenseView.xaml.cs index 927e0ec..b7487c7 100644 --- a/View/DispenseView.xaml.cs +++ b/View/DispenseView.xaml.cs @@ -43,18 +43,13 @@ namespace SunlightCentralizedControlManagement_SCCM_.View InitializeComponent(); } - private SQLiteHelper SQLiteHelpers = null; //定义数据库 - private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db"; //数据库路径 private readonly UserClass.IniFile.IniFiles Configini = new UserClass.IniFile.IniFiles(Convert.ToString(System.AppDomain.CurrentDomain.BaseDirectory) + "SCCM.ini"); DataTable DispenseMac = new DataTable(); UserControls.DispenseMacInfo[] dispenseMacInfo = new UserControls.DispenseMacInfo[99]; //定义总览信息卡 //private string SYS_machines = null; private void UserControl_Loaded(object sender, RoutedEventArgs e) { - SQLiteHelpers = new SQLiteHelper(DBAddress); - SQLiteHelpers.Open(); //打开数据库 - DispenseMac = SQLiteHelpers.ExecuteDataSet("select * from MachinesDispense ", null).Tables[0];//缓存 - SQLiteHelpers.Close(); + DispenseMac = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from MachinesDispense ", null).Tables[0];//缓存 /// /// 生成总览信息卡 /// diff --git a/View/DyeingPlanView.xaml.cs b/View/DyeingPlanView.xaml.cs index cb5d008..ba1fb3b 100644 --- a/View/DyeingPlanView.xaml.cs +++ b/View/DyeingPlanView.xaml.cs @@ -34,9 +34,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View /// public partial class DyeingPlanView : UserControl { - private SQLiteHelper SQLiteHelpers = null; //定义数据库 - private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db"; //数据库路径 - DataTable ProgramName = new DataTable(); + DataTable ProgramName = new DataTable(); DataTable WorkOrder =new DataTable(); DataTable dat = new DataTable(); DataTable TEMPTable = new DataTable(); @@ -45,10 +43,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View public DyeingPlanView() { InitializeComponent(); - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - ProgramName = SQLiteHelpers.ExecuteDataSet("select * from ProgramName order by ProgramID desc", null).Tables[0];//缓存 - SQLiteHelpers.Close(); //关闭连接 + ProgramName = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from ProgramName order by ProgramID desc", null).Tables[0];//缓存 comboBoxMachine.ItemsSource = MainWindowViewModel.Machines.AsEnumerable().Select(rowdata => rowdata.Field("name")).ToList();//转换机台 comboBoxProgram.ItemsSource = ProgramName.AsEnumerable().Select(rowdata => rowdata.Field("ProgramName")).ToList();//转换工艺代码 TEXTUSER.Text = MainWindow.user_; @@ -66,10 +61,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View if (sArray.Length <= 1) { comboBoxDyelot.IsEnabled = true; - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - DataTable DatDyelot = SQLiteHelpers.ExecuteDataSet("select * from Dyelot where Machine='" + comboBoxMachine.Text + "' and State='101' order by Dyelot desc", null).Tables[0]; //读取计划表写入缓存 - SQLiteHelpers.Close(); //关闭连接 + DataTable DatDyelot = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from Dyelot where Machine='" + comboBoxMachine.Text + "' and State='101' order by Dyelot desc", null).Tables[0]; //读取计划表写入缓存 comboBoxDyelot.ItemsSource = DatDyelot.AsEnumerable().Select(rowdata => rowdata.Field("Dyelot")).ToList();//转换代码 } } @@ -119,11 +111,9 @@ namespace SunlightCentralizedControlManagement_SCCM_.View string State_ = "100"; string Dyelot_ = comboBoxDyelot.Text; string color_ = color.Background.ToString(); - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 try { - sTime = SQLiteHelpers.ExecuteDataSet( + sTime = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet( "select * from WorkOrder where Machines='" + comboBoxMachine.Text + "' order by EndTime desc", null). Tables[0].Select().First().Field("EndTime").ToString(); //读取计划表写入缓存 if (DateTime.Now < DateTime.Parse(sTime)) @@ -171,7 +161,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View WorkOrder_new.Add("Total", TEXTTotal.Text); WorkOrder_new.Add("USER", TEXTUSER.Text); WorkOrder_new.Add("ColorName", TEXTColorName.Text); - SQLiteHelpers.InsertData("WorkOrder", WorkOrder_new);// 执行插入 + MainWindowViewModel.SQLiteHelpers.InsertData("WorkOrder", WorkOrder_new);// 执行插入 //插入信息 Dictionary WorkOrder_set = new Dictionary();//缓存函数 @@ -181,7 +171,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View WorkOrder_set.Add("Swing", Swing.Text); WorkOrder_set.Add("ClothWheel", ClothWheel.Text); WorkOrder_set.Add("Nozzle", Nozzle.Text); - SQLiteHelpers.InsertData("WorkOrderSet", WorkOrder_set);// 执行插入 + MainWindowViewModel.SQLiteHelpers.InsertData("WorkOrderSet", WorkOrder_set);// 执行插入 Dictionary WorkOrder_DAT = new Dictionary();//缓存函数 for (int x = 0; x < dat.Rows.Count; x++) @@ -204,7 +194,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View WorkOrder_DAT.Add("Parameter8", dat.Rows[x]["Parameter8"]); WorkOrder_DAT.Add("Parameter9", dat.Rows[x]["Parameter9"]); WorkOrder_DAT.Add("Parameter10", dat.Rows[x]["Parameter10"]); - SQLiteHelpers.InsertData("WorkorderSteps", WorkOrder_DAT);//行插入 + MainWindowViewModel.SQLiteHelpers.InsertData("WorkorderSteps", WorkOrder_DAT);//行插入 WorkOrder_DAT.Clear(); } if (!String.IsNullOrEmpty(comboBoxDyelot.Text))//料单信息 @@ -229,11 +219,10 @@ namespace SunlightCentralizedControlManagement_SCCM_.View WorkOrder_DAT.Add("DispenseGrams", DyelotsBulkedRecipe.Rows[x]["DispenseGrams"]); WorkOrder_DAT.Add("Dispense", DyelotsBulkedRecipe.Rows[x]["Dispenser"]); WorkOrder_DAT.Add("UserAccount", DyelotsBulkedRecipe.Rows[x]["UserAccount"]); - SQLiteHelpers.InsertData("Dyelot", WorkOrder_DAT);//行插入 + MainWindowViewModel.SQLiteHelpers.InsertData("Dyelot", WorkOrder_DAT);//行插入 WorkOrder_DAT.Clear(); } } - SQLiteHelpers.Close(); //关闭连接 LogGing.ExchangeDATA("Dyelot=" + comboBoxWorkOrder.Text + ";Machine=" + comboBoxMachine.Text + ";Program=" + comboBoxProgram.Text + ";User=" + TEXTUSER.Text + ";"); @@ -261,11 +250,8 @@ namespace SunlightCentralizedControlManagement_SCCM_.View if (!string.IsNullOrEmpty(comboBoxProgram.Text)) { dat.Clear(); - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - dat = SQLiteHelpers.ExecuteDataSet( + dat = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet( "select * from ProgramSteps where Program='" + comboBoxProgram.SelectedValue + "' order by Step asc", null).Tables[0]; //读取计划表写入缓存 - SQLiteHelpers.Close(); //关闭连接 DatSteps(dat); Grid_data.ItemsSource = dat.DefaultView; } @@ -279,8 +265,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.View try { string[] sArray = Regex.Split(text, @"\+", RegexOptions.IgnoreCase); - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 /* if (!string.IsNullOrEmpty(WorkOrder_n)) { dat = SQLiteHelpers.ExecuteDataSet( @@ -288,7 +272,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View }//插入工单不为空时载入细节信息*/ for (int i = 0; i < sArray.Length; i++) { - DataTable temp = SQLiteHelpers.ExecuteDataSet( + DataTable temp = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet( "select * from ProgramSteps where Program='" + sArray[i] + "' order by Step asc", null).Tables[0]; //读取计划表写入缓存 if (dat.Columns.Count == 0) dat = temp.Clone(); foreach (DataRow drT in temp.Rows) @@ -297,7 +281,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.View } }//以工艺名组合工艺细节 - SQLiteHelpers.Close(); //关闭连接 DatSteps(dat); Grid_data.ItemsSource = dat.DefaultView; @@ -501,10 +484,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View { if (e.Key == Key.Enter && MainWindowViewModel.DyelotsDispenser) { - SQLiteHelpers = new SQLiteHelper(DBAddress); - SQLiteHelpers.Open(); //打开数据库 - int dat_c = SQLiteHelpers.ExecuteDataSet("select * from WorkOrder where WorkOrder = '" + comboBoxWorkOrder.Text + "'", null).Tables[0].Rows.Count;//缓存 - SQLiteHelpers.Close(); + int dat_c = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from WorkOrder where WorkOrder = '" + comboBoxWorkOrder.Text + "'", null).Tables[0].Rows.Count;//缓存 if (dat_c > 0)//查询料单是否可用 { @@ -578,10 +558,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View string DYELOTS_sql = "SELECT * FROM [dbo].[DYELOTS] WHERE Dyelot = '" + comboBoxDyelot.Text + "'";//单号查询语句 try { - SQLiteHelpers = new SQLiteHelper(DBAddress); - SQLiteHelpers.Open(); //打开数据库 - int dat_c = SQLiteHelpers.ExecuteDataSet("select * from Dyelot where Dyelot = '" + comboBoxDyelot.Text + "'", null).Tables[0].Rows.Count;//缓存 - SQLiteHelpers.Close(); + int dat_c = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from Dyelot where Dyelot = '" + comboBoxDyelot.Text + "'", null).Tables[0].Rows.Count;//缓存 if (dat_c > 0)//查询料单是否可用 { diff --git a/View/DyelotView.xaml.cs b/View/DyelotView.xaml.cs index 4125aa3..a9e5364 100644 --- a/View/DyelotView.xaml.cs +++ b/View/DyelotView.xaml.cs @@ -26,10 +26,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View /// Whole.xaml 的交互逻辑 /// public partial class DyelotView : UserControl - { - private SQLiteHelper SQLiteHelpers = null; //定义数据库 - private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db"; //数据库路径 - + { public DyelotView() { InitializeComponent(); @@ -41,10 +38,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View public void Dyelot(object dat) { - SQLiteHelpers = new SQLiteHelper(DBAddress); - SQLiteHelpers.Open(); //打开数据库 - DataTable dat_c = SQLiteHelpers.ExecuteDataSet("select * from Dyelot where WorkOrder = '" + dat + "'", null).Tables[0];//缓存 - SQLiteHelpers.Close(); + DataTable dat_c = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from Dyelot where WorkOrder = '" + dat + "'", null).Tables[0];//缓存 Grid_data.ItemsSource = dat_c.DefaultView; } diff --git a/View/EngineerSetView.xaml.cs b/View/EngineerSetView.xaml.cs index 773f378..d25aae4 100644 --- a/View/EngineerSetView.xaml.cs +++ b/View/EngineerSetView.xaml.cs @@ -64,21 +64,21 @@ namespace SunlightCentralizedControlManagement_SCCM_.View private void comboBoxCOM_SelectionChanged0(object sender, SelectionChangedEventArgs e) { - Configini.IniWritevalue("SYS", "COMP0", comboBoxCOM0.SelectedValue.ToString()); + Configini.IniWritevalue("SYS", "COMP1", comboBoxCOM0.SelectedValue.ToString()); // Configini.IniWritevalue("SYS", "COMP1", comboBoxCOM1.SelectedValue.ToString()); // Configini.IniWritevalue("SYS", "COMP2", comboBoxCOM2.SelectedValue.ToString()); } private void comboBoxCOM_SelectionChanged1(object sender, SelectionChangedEventArgs e) { //Configini.IniWritevalue("SYS", "COMP0", comboBoxCOM0.SelectedValue.ToString()); - Configini.IniWritevalue("SYS", "COMP1", comboBoxCOM1.SelectedValue.ToString()); + Configini.IniWritevalue("SYS", "COMP2", comboBoxCOM1.SelectedValue.ToString()); // Configini.IniWritevalue("SYS", "COMP2", comboBoxCOM2.SelectedValue.ToString()); } private void comboBoxCOM_SelectionChanged2(object sender, SelectionChangedEventArgs e) { //Configini.IniWritevalue("SYS", "COMP0", comboBoxCOM0.SelectedValue.ToString()); // Configini.IniWritevalue("SYS", "COMP1", comboBoxCOM1.SelectedValue.ToString()); - Configini.IniWritevalue("SYS", "COMP2", comboBoxCOM2.SelectedValue.ToString()); + Configini.IniWritevalue("SYS", "COMP3", comboBoxCOM2.SelectedValue.ToString()); } private void comboBoxLanguage_SelectionChanged(object sender, SelectionChangedEventArgs e) { diff --git a/View/MachinesSet.xaml.cs b/View/MachinesSet.xaml.cs index 8595d63..e001d28 100644 --- a/View/MachinesSet.xaml.cs +++ b/View/MachinesSet.xaml.cs @@ -36,7 +36,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View // 获取所有可用串口端口,并添加到comboBoxCOM // string[] ports = System.IO.Ports.SerialPort.GetPortNames(); - string[] ports = { "PORT1", "PORT2", "PORT3" }; + string[] ports = { "PORT1", "PORT2", "PORT3", "PORT4" }; comboBoxCOM0.ItemsSource = ports; comboBoxCOM0.Text = Configini.IniReadvalue("SYS", "COM"); comboBoxMachine.ItemsSource = MainWindowViewModel.Machines.AsEnumerable().Select(rowdata => rowdata.Field("name")).ToList();//转换机台 @@ -44,9 +44,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View comboBoxtype.ItemsSource = type_; } - private SQLiteHelper SQLiteHelpers = null; //定义数据库 - private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db"; //数据库路径 - private readonly UserClass.IniFile.IniFiles Configini = new UserClass.IniFile.IniFiles(Convert.ToString(System.AppDomain.CurrentDomain.BaseDirectory) + "SCCM.ini"); + private readonly UserClass.IniFile.IniFiles Configini = new UserClass.IniFile.IniFiles(Convert.ToString(System.AppDomain.CurrentDomain.BaseDirectory) + "SCCM.ini"); //private string SYS_machines = null; int ID_; private void UserControl_Loaded(object sender, RoutedEventArgs e) @@ -75,9 +73,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View if (!string.IsNullOrEmpty(comboBoxMachine.Text)) { Dictionary Machines_DAT = new Dictionary();//缓存函数 - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - if (SQLiteHelpers.ExecuteDataSet("select * from Machines where name ='" + comboBoxMachine.Text + "'", null).Tables[0].Rows.Count == 0) + if (MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from Machines where name ='" + comboBoxMachine.Text + "'", null).Tables[0].Rows.Count == 0) { DataRow dat_= MainWindowViewModel.Machines.NewRow(); dat_.BeginEdit(); @@ -93,13 +89,18 @@ namespace SunlightCentralizedControlManagement_SCCM_.View dat_["AUTO"] = false; dat_["CALL"] = false; dat_["LOCK"] = false; + dat_["State"] = 800; + dat_["Temperature"] = 0; + dat_["WaterLevel"] = 0; + dat_["WORK_RUN"] = -1; + dat_["UserInfoStart"] = 900; if (comboBoxtype.Text == "838") { dat_["Desktop"] = true; } else { dat_["Desktop"] = false; } dat_.EndEdit(); MainWindowViewModel.Machines.Rows.Add(dat_); DatSteps(MainWindowViewModel.Machines); - SQLiteHelpers.Delete("Machines", null, null);// + MainWindowViewModel.SQLiteHelpers.Delete("Machines", null, null);// for (int x = 0; x < MainWindowViewModel.Machines.Rows.Count; x++) { Machines_DAT.Add("ID", MainWindowViewModel.Machines.Rows[x]["ID"]); @@ -112,7 +113,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View Machines_DAT.Add("Desktop", MainWindowViewModel.Machines.Rows[x]["Desktop"]); Machines_DAT.Add("Dispense", MainWindowViewModel.Machines.Rows[x]["Dispense"]); Machines_DAT.Add("Type", MainWindowViewModel.Machines.Rows[x]["Type"]); - SQLiteHelpers.InsertData("Machines", Machines_DAT);//行插入 + MainWindowViewModel.SQLiteHelpers.InsertData("Machines", Machines_DAT);//行插入 Machines_DAT.Clear(); } } @@ -127,8 +128,18 @@ namespace SunlightCentralizedControlManagement_SCCM_.View dr["Serial"] = comboBoxCOM0.Text; dr["Type"] = comboBoxtype.Text; dr["Station"] = Station.Text; + dr["ID"] = 999; + dr["ERR"] = false; + dr["AUTO"] = false; + dr["CALL"] = false; + dr["LOCK"] = false; + dr["State"] = 800; + dr["Temperature"] = 0; + dr["WaterLevel"] = 0; + dr["WORK_RUN"] = -1; + dr["UserInfoStart"] = 900; dr.EndEdit(); - SQLiteHelpers.Delete("Machines", null, null);// + MainWindowViewModel.SQLiteHelpers.Delete("Machines", null, null);// for (int x = 0; x < MainWindowViewModel.Machines.Rows.Count; x++) { Machines_DAT.Add("ID", MainWindowViewModel.Machines.Rows[x]["ID"]); @@ -142,11 +153,10 @@ namespace SunlightCentralizedControlManagement_SCCM_.View Machines_DAT.Add("Dispense", MainWindowViewModel.Machines.Rows[x]["Dispense"]); Machines_DAT.Add("Type", MainWindowViewModel.Machines.Rows[x]["Type"]); Machines_DAT.Add("LOCK", "FALSE"); - SQLiteHelpers.InsertData("Machines", Machines_DAT);//行插入 + MainWindowViewModel.SQLiteHelpers.InsertData("Machines", Machines_DAT);//行插入 Machines_DAT.Clear(); } } - SQLiteHelpers.Close(); Griddata.ItemsSource = MainWindowViewModel.Machines.DefaultView; comboBoxMachine.Text = null; TextMachineGroup.Text = null; @@ -170,12 +180,10 @@ namespace SunlightCentralizedControlManagement_SCCM_.View { MainWindowViewModel.Machines.Rows.RemoveAt(ID_ - 1); DatSteps(MainWindowViewModel.Machines); - - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 + Dictionary Machines_DAT = new Dictionary();//缓存函数 - SQLiteHelpers.Delete("Machines", null, null);// + MainWindowViewModel.SQLiteHelpers.Delete("Machines", null, null);// for (int x = 0; x < MainWindowViewModel.Machines.Rows.Count; x++) { Machines_DAT.Add("ID", MainWindowViewModel.Machines.Rows[x]["ID"]); @@ -188,10 +196,9 @@ namespace SunlightCentralizedControlManagement_SCCM_.View Machines_DAT.Add("Desktop", MainWindowViewModel.Machines.Rows[x]["Desktop"]); Machines_DAT.Add("Dispense", MainWindowViewModel.Machines.Rows[x]["Dispense"]); Machines_DAT.Add("LOCK", "FALSE"); - SQLiteHelpers.InsertData("Machines", Machines_DAT);//行插入 + MainWindowViewModel.SQLiteHelpers.InsertData("Machines", Machines_DAT);//行插入 Machines_DAT.Clear(); } - SQLiteHelpers.Close(); //关闭连接 Griddata.ItemsSource = MainWindowViewModel.Machines.DefaultView; comboBoxMachine.Text = null; diff --git a/View/MachinesView.xaml.cs b/View/MachinesView.xaml.cs index ea4be47..410b2f3 100644 --- a/View/MachinesView.xaml.cs +++ b/View/MachinesView.xaml.cs @@ -58,10 +58,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.View CountDown(); } - private SQLiteHelper SQLiteHelpers = null; //定义数据库 - private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db"; //数据库路径 - private readonly UserClass.IniFile.IniFiles Configini = new UserClass.IniFile.IniFiles(Convert.ToString(System.AppDomain.CurrentDomain.BaseDirectory) + "SCCM.ini"); - //private string SYS_machines = null; private void UserControl_Loaded(object sender, RoutedEventArgs e) { @@ -131,10 +127,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View Dictionary datagrid_v = new Dictionary();//缓存函数 datagrid_v.Add("PLC", newValue); - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - SQLiteHelpers.Update("IOName", datagrid_v, "ID ='" + ID + "'", null);//更新 - SQLiteHelpers.Close();//关闭数据库 + MainWindowViewModel.SQLiteHelpers.Update("IOName", datagrid_v, "ID ='" + ID + "'", null);//更新 } IO_data();//重新获得io表 D_view = true; @@ -157,10 +150,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View Dictionary datagrid_v = new Dictionary();//缓存函数 datagrid_v.Add("PLC", newValue); - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - SQLiteHelpers.Update("IOName", datagrid_v, "ID ='" + ID + "'", null);//更新 - SQLiteHelpers.Close();//关闭数据库 + MainWindowViewModel.SQLiteHelpers.Update("IOName", datagrid_v, "ID ='" + ID + "'", null);//更新 } A_view = true; } diff --git a/View/ProductionPlanningEdit.xaml.cs b/View/ProductionPlanningEdit.xaml.cs index 838f7d2..6089076 100644 --- a/View/ProductionPlanningEdit.xaml.cs +++ b/View/ProductionPlanningEdit.xaml.cs @@ -31,9 +31,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View /// ProductionPlanningEdit.xaml 的交互逻辑 /// public partial class ProductionPlanningEdit : UserControl - { - private SQLiteHelper SQLiteHelpers = null; //定义数据库 - private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db"; //数据库路径 + { DataTable ProgramName = new DataTable(); DataTable WorkOrder =new DataTable(); DataTable dat = new DataTable(); @@ -41,15 +39,12 @@ namespace SunlightCentralizedControlManagement_SCCM_.View public ProductionPlanningEdit(string workOrder, bool save) { InitializeComponent(); - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - ProgramName = SQLiteHelpers.ExecuteDataSet("select * from ProgramName order by ProgramID desc", null).Tables[0]; //读取计划表写入缓存 + ProgramName = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from ProgramName order by ProgramID desc", null).Tables[0]; //读取计划表写入缓存 if (!string.IsNullOrEmpty(workOrder)) { - WorkOrder = SQLiteHelpers.ExecuteDataSet("select * from Workorder where Workorder='" + workOrder + "' order by EndTime desc", null).Tables[0]; + WorkOrder = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from Workorder where Workorder='" + workOrder + "' order by EndTime desc", null).Tables[0]; // dat = SQLiteHelpers.ExecuteDataSet("select * from WorkorderSteps order by Step asc", null).Tables[0]; } - SQLiteHelpers.Close(); //关闭连接 if (!string.IsNullOrEmpty(workOrder)) { @@ -83,10 +78,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View if (sArray.Length <= 1) { comboBoxDyelot.IsEnabled = true; - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - DataTable DatDyelot = SQLiteHelpers.ExecuteDataSet("select * from Dyelot where Machine='" + comboBoxMachine.Text + "' and State='101' order by Dyelot desc", null).Tables[0]; //读取计划表写入缓存 - SQLiteHelpers.Close(); //关闭连接 + DataTable DatDyelot = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from Dyelot where Machine='" + comboBoxMachine.Text + "' and State='101' order by Dyelot desc", null).Tables[0]; //读取计划表写入缓存 comboBoxDyelot.ItemsSource = DatDyelot.AsEnumerable().Select(rowdata => rowdata.Field("Dyelot")).ToList();//转换代码 } } @@ -153,11 +145,9 @@ namespace SunlightCentralizedControlManagement_SCCM_.View string State_ = "100"; string Dyelot_ = comboBoxDyelot.Text; string color_ = color_color.Background.ToString(); - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 try { - sTime = SQLiteHelpers.ExecuteDataSet( + sTime = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet( "select * from WorkOrder where Machines='" + comboBoxMachine.Text + "' order by EndTime desc", null). Tables[0].Select().First().Field("EndTime").ToString(); //读取计划表写入缓存 if (DateTime.Now < DateTime.Parse(sTime)) @@ -196,8 +186,8 @@ namespace SunlightCentralizedControlManagement_SCCM_.View WorkOrder_new.Add("Dyelot", Dyelot_); WorkOrder_new.Add("Remark", null); WorkOrder_new.Add("lock", 0); - WorkOrder_new.Add("color", color_); - SQLiteHelpers.InsertData("WorkOrder", WorkOrder_new);// 执行插入 + WorkOrder_new.Add("color", color_); + MainWindowViewModel.SQLiteHelpers.InsertData("WorkOrder", WorkOrder_new);// 执行插入 Dictionary WorkOrder_DAT = new Dictionary();//缓存函数 for (int x = 0; x < dat.Rows.Count; x++) @@ -219,11 +209,10 @@ namespace SunlightCentralizedControlManagement_SCCM_.View WorkOrder_DAT.Add("Parameter7", dat.Rows[x]["Parameter7"]); WorkOrder_DAT.Add("Parameter8", dat.Rows[x]["Parameter8"]); WorkOrder_DAT.Add("Parameter9", dat.Rows[x]["Parameter9"]); - WorkOrder_DAT.Add("Parameter10", dat.Rows[x]["Parameter10"]); - SQLiteHelpers.InsertData("WorkorderSteps", WorkOrder_DAT);//行插入 + WorkOrder_DAT.Add("Parameter10", dat.Rows[x]["Parameter10"]); + MainWindowViewModel.SQLiteHelpers.InsertData("WorkorderSteps", WorkOrder_DAT);//行插入 WorkOrder_DAT.Clear(); } - SQLiteHelpers.Close(); //关闭连接 } else {//多机器载入 @@ -260,11 +249,9 @@ namespace SunlightCentralizedControlManagement_SCCM_.View string State_ = "100"; string Dyelot_ = comboBoxDyelot.Text; string color_ = color_color.Background.ToString(); - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 try { - sTime = SQLiteHelpers.ExecuteDataSet( + sTime = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet( "select * from WorkOrder where Machines='" + sArray[i] + "' order by EndTime desc", null). Tables[0].Select().First().Field("EndTime").ToString(); //读取计划表写入缓存 if (DateTime.Now < DateTime.Parse(sTime)) @@ -306,7 +293,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View WorkOrder_new.Add("color", color_); //SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 //SQLiteHelpers.Open(); //打开数据库 - SQLiteHelpers.InsertData("WorkOrder", WorkOrder_new);// 执行插入 + MainWindowViewModel.SQLiteHelpers.InsertData("WorkOrder", WorkOrder_new);// 执行插入 Dictionary WorkOrder_DAT = new Dictionary();//缓存函数 for (int x = 0; x < dat.Rows.Count; x++) @@ -329,10 +316,9 @@ namespace SunlightCentralizedControlManagement_SCCM_.View WorkOrder_DAT.Add("Parameter8", dat.Rows[x]["Parameter8"]); WorkOrder_DAT.Add("Parameter9", dat.Rows[x]["Parameter9"]); WorkOrder_DAT.Add("Parameter10", dat.Rows[x]["Parameter10"]); - SQLiteHelpers.InsertData("WorkorderSteps", WorkOrder_DAT);//行插入 + MainWindowViewModel.SQLiteHelpers.InsertData("WorkorderSteps", WorkOrder_DAT);//行插入 WorkOrder_DAT.Clear(); } - SQLiteHelpers.Close(); //关闭连接 } } this.Visibility = Visibility.Collapsed; @@ -359,11 +345,8 @@ namespace SunlightCentralizedControlManagement_SCCM_.View if (!string.IsNullOrEmpty(comboBoxProgram.Text)) { dat.Clear(); - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - dat = SQLiteHelpers.ExecuteDataSet( + dat = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet( "select * from ProgramSteps where Program='" + comboBoxProgram.SelectedValue + "' order by Step asc", null).Tables[0]; //读取计划表写入缓存 - SQLiteHelpers.Close(); //关闭连接 DatSteps(dat); Grid_data.ItemsSource = dat.DefaultView; } @@ -378,11 +361,9 @@ namespace SunlightCentralizedControlManagement_SCCM_.View try { string[] sArray = Regex.Split(text, @"\+", RegexOptions.IgnoreCase); - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 for (int i = 0; i < sArray.Length; i++) { - DataTable temp = SQLiteHelpers.ExecuteDataSet( + DataTable temp = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet( "select * from ProgramSteps where Program='" + sArray[i] + "' order by Step asc", null).Tables[0]; //读取计划表写入缓存 if (dat.Columns.Count == 0) dat = temp.Clone(); foreach (DataRow drT in temp.Rows) @@ -392,10 +373,9 @@ namespace SunlightCentralizedControlManagement_SCCM_.View }//以工艺名组合工艺细节 if (!string.IsNullOrEmpty(WorkOrder_n)) { - dat = SQLiteHelpers.ExecuteDataSet( + dat = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet( "select * from WorkorderSteps where WorkOrder='" + WorkOrder_n + "' order by Step asc", null).Tables[0]; //读取计划表写入缓存 }//插入工单不为空时载入细节信息 - SQLiteHelpers.Close(); //关闭连接 DatSteps(dat); Grid_data.ItemsSource = dat.DefaultView;//显示 } diff --git a/View/ProductionPlanningView.xaml.cs b/View/ProductionPlanningView.xaml.cs index 40b4f8b..668cddb 100644 --- a/View/ProductionPlanningView.xaml.cs +++ b/View/ProductionPlanningView.xaml.cs @@ -60,8 +60,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.View } private readonly UserClass.IniFile.IniFiles Configini = new UserClass.IniFile.IniFiles(Convert.ToString(System.AppDomain.CurrentDomain.BaseDirectory) + "SCCM.ini"); - private SQLiteHelper SQLiteHelpers = null; //定义数据库 - private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db"; //数据库路径 DataTable WorkOrder; private DateTime minDate; private DateTime maxDate; @@ -83,13 +81,10 @@ namespace SunlightCentralizedControlManagement_SCCM_.View private ObservableCollection ganttTaskContextMenuItems = new ObservableCollection(); public void GanttChartNEW() - { - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - WorkOrder = SQLiteHelpers.ExecuteDataSet( + { + WorkOrder = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet( "select * from WorkOrder where StartTime>'" + DateTime.Parse(Sdatepicker.Text).ToString("yyyy/MM/dd HH:mm:ss") + "'or EndTime>'" + DateTime.Parse(Sdatepicker.Text).ToString("yyyy/MM/dd HH:mm:ss") + "'Order by StartTime", null).Tables[0]; //读取表写入缓存 - SQLiteHelpers.Close(); //生成表 GanttChart.ClearGantt(); @@ -162,12 +157,9 @@ namespace SunlightCentralizedControlManagement_SCCM_.View private void EditClicked(GanttTask ganttTask) { if (MainWindowViewModel.USER_Capacity[6]) - { - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - DataTable WorkOrder_dt = SQLiteHelpers.ExecuteDataSet( + { + DataTable WorkOrder_dt = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet( "select * from WorkOrder where WorkOrder='" + ganttTask.WorkOrder + "'Order by StartTime", null).Tables[0]; //读取表写入缓存 - SQLiteHelpers.Close(); if (DateTime.Now > DateTime.Parse(WorkOrder_dt.Select().First().Field("EndTime").ToString())) { @@ -196,12 +188,9 @@ namespace SunlightCentralizedControlManagement_SCCM_.View if (System.Windows.Forms.MessageBox.Show(Properties.Resources.Confirm + Properties.Resources.Delete + ganttTask.Name, "Delete ", System.Windows.Forms.MessageBoxButtons.OKCancel, System.Windows.Forms.MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK) { - ///执行删除 - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - SQLiteHelpers.Delete("WorkOrder", "WorkOrder='" + ganttTask.WorkOrder + "'", null); - SQLiteHelpers.Delete("WorkOrderSteps", "WorkOrder='" + ganttTask.WorkOrder + "'", null); - SQLiteHelpers.Close(); + ///执行删除 + MainWindowViewModel.SQLiteHelpers.Delete("WorkOrder", "WorkOrder='" + ganttTask.WorkOrder + "'", null); + MainWindowViewModel.SQLiteHelpers.Delete("WorkOrderSteps", "WorkOrder='" + ganttTask.WorkOrder + "'", null); GanttChartNEW(); } } @@ -247,13 +236,10 @@ namespace SunlightCentralizedControlManagement_SCCM_.View } private void WorkOrderNumder_Click(object sender, RoutedEventArgs e) { - Picture.Content = null; - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - int con = SQLiteHelpers.ExecuteDataSet( + Picture.Content = null; + int con = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet( "select * from WorkOrder where WorkOrder='" + Select_WorkOrderNumder.Text + "'Order by StartTime", null).Tables[0].Rows.Count; - SQLiteHelpers.Close(); if (con > 0) { diff --git a/View/ProgramgroupView.xaml.cs b/View/ProgramgroupView.xaml.cs index c4e0806..5319de8 100644 --- a/View/ProgramgroupView.xaml.cs +++ b/View/ProgramgroupView.xaml.cs @@ -1,4 +1,5 @@ -using SunlightCentralizedControlManagement_SCCM_.WindowsView; +using SunlightCentralizedControlManagement_SCCM_.ViewModel; +using SunlightCentralizedControlManagement_SCCM_.WindowsView; using System; using System.Collections.Generic; using System.Data; @@ -21,23 +22,18 @@ namespace SunlightCentralizedControlManagement_SCCM_.View Group.Text = "ALL"; } - private SQLiteHelper SQLiteHelpers = null; //定义数据库 - private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db"; //数据库路径 DataSet sql; //内存数据缓存 public void Programgroup_sql() { - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - string sql_script = "select * from ProgramName order by ProgramID desc"; string sql_ProgramGroup = "select * from ProgramGroup order by ID desc"; if (sql != null) sql.Clear(); //清空缓存 - sql = SQLiteHelpers.ExecuteDataSet(sql_script, null); //读取计划表写入缓存 + sql = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet(sql_script, null); //读取计划表写入缓存 if (sql != null) Grid.ItemsSource = sql.Tables[0].DefaultView; //转换显示计划表 - DataTable GROUP = SQLiteHelpers.ExecuteDataSet(sql_ProgramGroup, null).Tables[0]; //获得程序组 + DataTable GROUP = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet(sql_ProgramGroup, null).Tables[0]; //获得程序组 List result = new List(); result.Add("ALL"); for (int i =0; i Program_new = new Dictionary();//缓存函数 - Program_new.Add("ProgramName", VALUE); - Program_new.Add("ProgramID", ID); - Program_new.Add("Groups", Group.Text); - Program_new.Add("Step", "0"); - Program_new.Add("Time", "0:00"); - Program_new.Add("Notes", null); - - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - SQLiteHelpers.InsertData("ProgramName", Program_new);// 执行插入 - SQLiteHelpers.Close(); //关闭连接 - - Programgroup_Numder = VALUE; - Programgroup_ID = ID; - - Programgroup_sql(); + InputBox frm = (InputBox)sender; + //接收到InputBox的TextBox值 + string VALUE = frm.InputValue; + string ID = DateTime.Now.ToString("yyMMddHHmmss"); //id为时间合 + Dictionary Program_new = new Dictionary();//缓存函数 + Program_new.Add("ProgramName", VALUE); + Program_new.Add("ProgramID", ID); + Program_new.Add("Groups", Group.Text); + Program_new.Add("Step", "0"); + Program_new.Add("Time", "0:00"); + Program_new.Add("Notes", null); + + MainWindowViewModel.SQLiteHelpers.InsertData("ProgramName", Program_new);// 执行插入 + + Programgroup_Numder = VALUE; + Programgroup_ID = ID; + + Programgroup_sql(); } private void ListViewItem_edit(object sender, System.Windows.Input.MouseButtonEventArgs e)//编辑事件 @@ -140,10 +131,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View Program_Rename.Add("ProgramName", VALUE); Program_Rename.Add("Groups", Group.Text); - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - SQLiteHelpers.Update("ProgramName", Program_Rename, "ProgramID='" + Programgroup_ID + "'", null); - SQLiteHelpers.Close(); //关闭连接 + MainWindowViewModel.SQLiteHelpers.Update("ProgramName", Program_Rename, "ProgramID='" + Programgroup_ID + "'", null); Programgroup_sql(); Programgroup_Numder = null; @@ -170,10 +158,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View Dictionary Program_Remark = new Dictionary();//缓存函数 Program_Remark.Add("Notes", VALUE); - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - SQLiteHelpers.Update("ProgramName", Program_Remark, "ProgramID='" + Programgroup_ID + "'", null); - SQLiteHelpers.Close(); //关闭连接 + MainWindowViewModel.SQLiteHelpers.Update("ProgramName", Program_Remark, "ProgramID='" + Programgroup_ID + "'", null); Programgroup_sql(); Programgroup_Numder = null; @@ -192,11 +177,8 @@ namespace SunlightCentralizedControlManagement_SCCM_.View System.Windows.Forms.MessageBoxButtons.OKCancel, System.Windows.Forms.MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK) { ///执行删除 - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - SQLiteHelpers.Delete("ProgramName", "ProgramID='" + Programgroup_ID + "'", null); - SQLiteHelpers.Delete("ProgramSteps", "ProgramID='" + Programgroup_ID + "'", null); - SQLiteHelpers.Close(); + MainWindowViewModel.SQLiteHelpers.Delete("ProgramName", "ProgramID='" + Programgroup_ID + "'", null); + MainWindowViewModel.SQLiteHelpers.Delete("ProgramSteps", "ProgramID='" + Programgroup_ID + "'", null); Programgroup_sql(); } Programgroup_Numder = null; diff --git a/View/ProgramstepsView .xaml.cs b/View/ProgramstepsView .xaml.cs index e88306b..48f9af2 100644 --- a/View/ProgramstepsView .xaml.cs +++ b/View/ProgramstepsView .xaml.cs @@ -1,4 +1,5 @@ using SunlightCentralizedControlManagement_SCCM_.UserClass; +using SunlightCentralizedControlManagement_SCCM_.ViewModel; using SunlightCentralizedControlManagement_SCCM_.WindowsView; using System; using System.Collections.Generic; @@ -46,9 +47,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View Programgroup_sql(); } - private SQLiteHelper SQLiteHelpers = null; //定义数据库 - private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db"; //数据库路径 - DataSet sql; //内存数据缓存 + DataSet sql; //内存数据缓存 string ProgramID; string ProgramNAME; @@ -58,13 +57,10 @@ namespace SunlightCentralizedControlManagement_SCCM_.View string StepTime = null; public void Programgroup_sql() { - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - string sql_script = "select * from ProgramSteps where ProgramID='" + ProgramID + "' order by Step asc"; if (sql != null) sql.Clear(); //清空缓存 - sql = SQLiteHelpers.ExecuteDataSet(sql_script, null); //读取计划表写入缓存 + sql = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet(sql_script, null); //读取计划表写入缓存 //sql.Tables[0].Rows.Add(datatable_t); DataRow dr = sql.Tables[0].NewRow();//添加表数据 dr["ProgramID"] = ProgramID; @@ -72,7 +68,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.View sql.Tables[0].Rows.Add(dr); Dat(); if (sql != null) Grid.ItemsSource = sql.Tables[0].DefaultView; //转换显示计划表 - SQLiteHelpers.Close(); //关闭连接 } public void Dat()//行号刷新 @@ -256,11 +251,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View Insert.IsEnabled = false; Delete.IsEnabled = false; int r = 0; - - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - SQLiteHelpers.Delete("ProgramSteps", "ProgramID = '" + ProgramID + "'", null); - + MainWindowViewModel.SQLiteHelpers.Delete("ProgramSteps", "ProgramID = '" + ProgramID + "'", null); DataTable data_t = new DataTable(); data_t = sql.Tables[0].Clone(); @@ -274,7 +265,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View dr.ItemArray = dt.ItemArray; data_t.Rows.InsertAt(dr, 0); - r = SQLiteHelpers.InsertData("ProgramSteps", SQLiteHelpers.DataTableToDictionary(data_t));//行插入 + r = MainWindowViewModel.SQLiteHelpers.InsertData("ProgramSteps", MainWindowViewModel.SQLiteHelpers.DataTableToDictionary(data_t));//行插入 } int time =Convert.ToUInt16( sql.Tables[0].Compute("sum(StepTime)", ""))/60; @@ -282,9 +273,8 @@ namespace SunlightCentralizedControlManagement_SCCM_.View Dictionary Program_Step = new Dictionary();//缓存函数 Program_Step.Add("Step", a - 1); Program_Step.Add("Time", time_); - SQLiteHelpers.Update("ProgramName", Program_Step, "ProgramID='" + ProgramID + "'", null); + MainWindowViewModel.SQLiteHelpers.Update("ProgramName", Program_Step, "ProgramID='" + ProgramID + "'", null); - SQLiteHelpers.Close(); //关闭连接 if (r != 0) { System.Windows.Forms.MessageBox.Show(ProgramNAME, Properties.Resources.Save); diff --git a/ViewModel/MainWindowViewModel.cs b/ViewModel/MainWindowViewModel.cs index 56ef4e5..eb3d3db 100644 --- a/ViewModel/MainWindowViewModel.cs +++ b/ViewModel/MainWindowViewModel.cs @@ -4,6 +4,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Linq; using OpenTK.Graphics.ES11; using ScottPlot.Palettes; +using ScottPlot.TickGenerators.TimeUnits; using SunlightCentralizedControlManagement_SCCM_.EX.Exchange; using SunlightCentralizedControlManagement_SCCM_.Properties; using SunlightCentralizedControlManagement_SCCM_.UserClass; @@ -26,6 +27,7 @@ using System.Threading; using System.Threading.Tasks; using System.Timers; using System.Windows.Controls; +using System.Windows.Documents; using System.Windows.Forms; using System.Windows.Markup; using System.Windows.Media; @@ -38,8 +40,6 @@ using static MaterialDesignThemes.Wpf.Theme; using static SunlightCentralizedControlManagement_SCCM_.UserClass.SqliteHelper; using static SunlightCentralizedControlManagement_SCCM_.View.MachinesView; using static SunlightCentralizedControlManagement_SCCM_.ViewModel.ManualDyelotModel; -using static System.Net.WebRequestMethods; -using static System.Windows.Forms.AxHost; namespace SunlightCentralizedControlManagement_SCCM_.ViewModel { @@ -78,7 +78,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel public static string SN_KEY; public static bool DyelotsDispenser; public static SqlConnection conn_SC =new SqlConnection();//数据库 - private SQLiteHelper SQLiteHelpers = null; //定义数据库 + public static SQLiteHelper SQLiteHelpers = null; //定义数据库 private BDC_SQL.BDCSqlHelper bDCSqlHelper = new BDC_SQL.BDCSqlHelper(); private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db"; //数据库路径 public static DataTable Machines = new DataTable(); //设备表缓存 @@ -86,7 +86,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel public static DataTable USER_data = new DataTable(); public static DataTable Dyelot_CALL = new DataTable(); public static DataTable Whole_dat = new DataTable(); - public static UserControls.info[] inf = new UserControls.info[999]; //定义总览信息卡 + public static UserControls.info[] inf = new UserControls.info[200]; //定义总览信息卡 public static int ERR_c = 0;//错误计数器 public bool UPort1, UPort2, UPort3; public static bool[] USER_Capacity { set; get; } = new bool[99]; @@ -111,19 +111,17 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel Machines = SQLiteHelpers.ExecuteDataSet("select * from Machines Order by id", null).Tables[0]; //读取表写入缓存 USER_data = SQLiteHelpers.ExecuteDataSet("select * from USER order by Name desc", null).Tables[0]; Dyelot_CALL = SQLiteHelpers.ExecuteDataSet("select * from Dyelot", null).Tables[0].Clone(); - SQLiteHelpers.Close(); Whole_dat.Columns.Add("Machine", Type.GetType("System.String")); Whole_dat.Columns.Add("DateTime", Type.GetType("System.DateTime")); Whole_dat.Columns.Add("DAT", Type.GetType("System.Double")); - USERCapacity(App.USER_Purview);//App.USER_Purview); - UPort();//启动串口 - CountDown(); + USERCapacity(App.USER_Purview);//App.USER_Purview); ClientNEW(); TcpClientNEW(); PortClientNEW(); SQL_LINK(); + CountDown(); } public static void USERCapacity(string user) //权限 { @@ -150,148 +148,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel } } } - - public static SerialPort port1 = new SerialPort();//创建串口 - public static SerialPort port2 = new SerialPort();//创建串口 - public static SerialPort port3 = new SerialPort();//创建串口 - void UPort() - { - try - { - int Ba = 9600; - try { Ba = Convert.ToInt32(Configini.IniReadvalue("SYS", "BAUD1")); } - catch (Exception) { Ba = 9600; } - port1.PortName = Configini.IniReadvalue("SYS", "COMP1"); - port1.BaudRate = Ba;//配置 - port1.DataBits = 8; - port1.Parity = Parity.Even; - port1.StopBits = StopBits.One; - port1.ReadTimeout = 500; - port1.WriteTimeout = 500; - port1.Encoding = Encoding.GetEncoding("ASCII"); - port1.Open();//打开串口 - port1.DataReceived += new SerialDataReceivedEventHandler(SerialPort1_DataReceived); - UPort1 = true; - } - catch (Exception e) - { - UPort1 = false; - LogGing.LogGingDATA(e.Message); - } - try - { - int Ba2 = 9600; - try { Ba2 = Convert.ToInt32(Configini.IniReadvalue("SYS", "BAUD1")); } - catch (Exception) { Ba2 = 9600; } - port2.PortName = Configini.IniReadvalue("SYS", "COMP2"); - port2.BaudRate = Ba2;//配置 - port2.DataBits = 8; - port2.Parity = Parity.Even; - port2.StopBits = StopBits.One; - port2.ReadTimeout = 500; - port2.WriteTimeout = 500; - port2.Encoding = Encoding.GetEncoding("ASCII"); - port2.Open();//打开串口 - port2.DataReceived += new SerialDataReceivedEventHandler(SerialPort2_DataReceived); - UPort2 = true; - } - catch (Exception e) - { - UPort2 = false; - LogGing.LogGingDATA(e.Message); - } - try - { - int Ba3 = 9600; - try { Ba3 = Convert.ToInt32(Configini.IniReadvalue("SYS", "BAUD1")); } - catch (Exception) { Ba3 = 9600; } - port3.PortName = Configini.IniReadvalue("SYS", "COMP3"); - port3.BaudRate = Ba3;//配置 - port3.DataBits = 8; - port3.Parity = Parity.Even; - port3.StopBits = StopBits.One; - port3.ReadTimeout = 500; - port3.WriteTimeout = 500; - port3.Encoding = Encoding.GetEncoding("ASCII"); - port3.Open();//打开串口 - port3.DataReceived += new SerialDataReceivedEventHandler(SerialPort3_DataReceived); - UPort3 = true; - } - catch (Exception e) - { - UPort3 = false; - LogGing.LogGingDATA(e.Message); - } - }//ck - // 事件处理函数 - private void SerialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) - { - int bytesToRead = port1.BytesToRead; - byte[] buffer = new byte[bytesToRead]; - port1.Read(buffer, 0, bytesToRead); // 读取数据 - - // 将字节数据转换为字符串(注意编码方式) - string receivedData = Encoding.ASCII.GetString(buffer); // 根据实际情况调整编码 - }// 事件处理函数 - private void SerialPort2_DataReceived(object sender, SerialDataReceivedEventArgs e) - { - int bytesToRead = port2.BytesToRead; - byte[] buffer = new byte[bytesToRead]; - port2.Read(buffer, 0, bytesToRead); // 读取数据 - - // 将字节数据转换为字符串(注意编码方式) - string receivedData = Encoding.ASCII.GetString(buffer); // 根据实际情况调整编码 - }// 事件处理函数 - private void SerialPort3_DataReceived(object sender, SerialDataReceivedEventArgs e) - { - int bytesToRead = port3.BytesToRead; - byte[] buffer = new byte[bytesToRead]; - port3.Read(buffer, 0, bytesToRead); // 读取数据 - - // 将字节数据转换为字符串(注意编码方式) - string receivedData = Encoding.ASCII.GetString(buffer); // 根据实际情况调整编码 - } - private async void Port_link() - { - await Task.Run(() => - { - try - { - if (stringQueueSerial.Count > 0) //信息发送队列 - { - QueueSerial t = stringQueueSerial.Dequeue(); - if (t.ID == "PORT1") - { - if (UPort1) - { - port1.Write(t.DAT); - } - } - else if (t.ID == "PORT2") - { - if (UPort2) - { - port2.Write(t.DAT); - } - } - else if (t.ID == "PORT3") - { - if (UPort3) - { - port3.Write(t.DAT); - } - } - } - } - catch (Exception ex) - { - } - finally - { - Port_link(); - } - }); - }//发送 + public async void SQL_LINK()//连接dbc数据库 { if (conn_SC.State == ConnectionState.Open) conn_SC.Close(); @@ -342,7 +199,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel int Time5 = 0, Time30 = 0; void DisTimer_50MS(object sender, EventArgs e)//Tick_Event周期执行事件50MS { - int _id=-1; + int _id = -1; if (stringQueue.Count > 0) //信息发送队列 { QueueString t = stringQueue.Dequeue(); @@ -354,13 +211,16 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel QueueString inf = stringQueueinf.Dequeue(); if (_id != inf.ID) MachiensTcpClient[inf.ID].SendAsync(inf.DAT); } + /*if (stringQueueSerial.Count > 0) //ck信息发送队列 + { + QueueSerial t = stringQueueSerial.Dequeue(); + MachiensPortClient[t.ID].Send(t.DAT); + }*/ } void Tick_Main_1S(object sender, EventArgs e)//Tick_Event周期执行事件1S { /*下传工单信息*/ - SQLiteHelper WorkOrderSQL = new SQLiteHelper(DBAddress); //数据库连接路径 - WorkOrderSQL.Open(); //打开数据库 - DataTable WorkOrderstepdata = WorkOrderSQL.ExecuteDataSet("select * from WorkOrder where (State='111' or State='112') AND EndTime >'" + + DataTable WorkOrderstepdata = SQLiteHelpers.ExecuteDataSet("select * from WorkOrder where (State='111' or State='112') AND EndTime >'" + DateTime.Now.AddHours(-8).ToString("yyyy/MM/dd HH:mm:ss") + "'", null).Tables[0]; //读取表写入缓存 for (int k = 0; k < WorkOrderstepdata.Rows.Count; k++) {//网络 @@ -369,7 +229,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel if (Convert.ToBoolean(Selet_Machines(Machines, "Type", "Name='" + WorkOrderdata_m + "'"))) { //string WorkOrderdata_m = WorkOrderstepdata.Select()[k].Field("Machines").ToString(); - DataTable dataTable = WorkOrderSQL.ExecuteDataSet("select * from WorkorderSteps where WorkOrder='" + + DataTable dataTable = SQLiteHelpers.ExecuteDataSet("select * from WorkorderSteps where WorkOrder='" + WorkOrderstepdata.Select()[k].Field("WorkOrder").ToString() + "'", null).Tables[0]; int index = Convert.ToInt16(Selet_Machines(Machines, "ID", "Name='" + WorkOrderdata_m + "'").ToString()); stringQueue.Enqueue(new QueueString @@ -377,7 +237,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel ID = index, DAT = "SC811" + Selet_Machines(Machines, "SYSKEY", "ID='" + index + "'") + dataTable.ToJsonString() }); - WorkOrderSQL.Update("WorkOrder", new Dictionary { { "State", 112 } }, + SQLiteHelpers.Update("WorkOrder", new Dictionary { { "State", 112 } }, "WorkOrder ='" + WorkOrderstepdata.Select()[k].Field("WorkOrder").ToString() + "'", null); } else @@ -386,7 +246,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel } } /*下传工单总览*/ - DataTable WorkOrderdata = WorkOrderSQL.ExecuteDataSet("select * from WorkOrder where (State='100' or State='110') AND EndTime >'" + + DataTable WorkOrderdata = SQLiteHelpers.ExecuteDataSet("select * from WorkOrder where (State='100' or State='110') AND EndTime >'" + DateTime.Now.AddHours(-8).ToString("yyyy/MM/dd HH:mm:ss") + "'", null).Tables[0]; //读取表写入缓存 for (int k = 0; k < WorkOrderdata.Rows.Count; k++) { @@ -412,8 +272,8 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel { ID = index, DAT = "SC810" + Selet_Machines(Machines, "SYSKEY", "ID='" + index + "'") + DataTableToDictionary(dataTable).ToJsonString() - }); - WorkOrderSQL.Update("WorkOrder", new Dictionary { { "State", 110 } }, + }); + SQLiteHelpers.Update("WorkOrder", new Dictionary { { "State", 110 } }, "WorkOrder ='" + WorkOrderdata.Select()[k].Field("WorkOrder").ToString() + "'", null); } } @@ -421,7 +281,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel {//串口 //string WorkOrderdata_m = WorkOrderdata.Select()[k].Field("Machines").ToString(); string State = Selet_Machines(Machines, "State", "Name='" + WorkOrderdata_m + "'").ToString(); - string POR = Selet_Machines(Machines, "Serial", "ID='" + k + "'").ToString(); if ((State == "101") || (State == "201") || (State == "202") || (State == "309")) { @@ -434,18 +293,46 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel dataTable.Rows.Add(dt_temp.ItemArray); int index = Convert.ToInt16(Selet_Machines(Machines, "ID", "Name='" + WorkOrderdata_m + "'").ToString()); - stringQueueSerial.Enqueue(new QueueSerial + if (Selet_Machines(Machines, "Serial", "Name='" + WorkOrderdata_m + "'").ToString() == "PORT1") { - ID = POR, - 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); + stringQueueSerial_1.Enqueue(new QueueSerial + { + ID = index, + DAT = "SC810" + Selet_Machines(Machines, "SYSKEY", "ID='" + index + "'") + DataTableToDictionary(dataTable).ToJsonString() + }); + } + else if (Selet_Machines(Machines, "Serial", "Name='" + WorkOrderdata_m + "'").ToString() == "PORT2") + { + stringQueueSerial_2.Enqueue(new QueueSerial + { + ID = index, + DAT = "SC810" + Selet_Machines(Machines, "SYSKEY", "ID='" + index + "'") + DataTableToDictionary(dataTable).ToJsonString() + }); + } + else if (Selet_Machines(Machines, "Serial", "Name='" + WorkOrderdata_m + "'").ToString() == "PORT3") + { + stringQueueSerial_3.Enqueue(new QueueSerial + { + ID = index, + DAT = "SC810" + Selet_Machines(Machines, "SYSKEY", "ID='" + index + "'") + DataTableToDictionary(dataTable).ToJsonString() + }); + } + else if (Selet_Machines(Machines, "Serial", "Name='" + WorkOrderdata_m + "'").ToString() == "PORT4") + { + stringQueueSerial_4.Enqueue(new QueueSerial + { + ID = index, + DAT = "SC810" + Selet_Machines(Machines, "SYSKEY", "ID='" + index + "'") + DataTableToDictionary(dataTable).ToJsonString() + }); + } + + SQLiteHelpers.Update("WorkOrder", new Dictionary { { "State", 110 } }, + "WorkOrder ='" + WorkOrderdata.Select()[k].Field("WorkOrder").ToString() + "'", null); } } } /*下传工单设置*/ - DataTable WorkOrderset_ = WorkOrderSQL.ExecuteDataSet("select * from WorkOrder where State='113' AND EndTime >'" + + DataTable WorkOrderset_ = SQLiteHelpers.ExecuteDataSet("select * from WorkOrder where State='113' AND EndTime >'" + DateTime.Now.AddHours(-8).ToString("yyyy/MM/dd HH:mm:ss") + "'", null).Tables[0]; //读取表写入缓存 for (int k = 0; k < WorkOrderset_.Rows.Count; k++) { @@ -457,7 +344,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel string WorkOrderset_w = WorkOrderset_.Select()[k].Field("WorkOrder").ToString(); int index = Convert.ToInt16(Selet_Machines(Machines, "ID", "Name='" + WorkOrderset_m + "'").ToString()); - DataTable WorkOrder_set = WorkOrderSQL.ExecuteDataSet("select * from WorkOrderSet where WorkOrder='" + + DataTable WorkOrder_set = SQLiteHelpers.ExecuteDataSet("select * from WorkOrderSet where WorkOrder='" + WorkOrderset_w + "'", null).Tables[0]; //读取表写入缓存 if (WorkOrder_set.Rows.Count > 0) { @@ -468,33 +355,65 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel }); } - WorkOrderSQL.Update("WorkOrder", new Dictionary { { "State", 110 } }, + SQLiteHelpers.Update("WorkOrder", new Dictionary { { "State", 110 } }, "WorkOrder ='" + WorkOrderdata.Select()[k].Field("WorkOrder").ToString() + "'", null); } else {//串口 //string WorkOrderset_m = WorkOrderset_.Select()[k].Field("Machines").ToString(); string WorkOrderset_w = WorkOrderset_.Select()[k].Field("WorkOrder").ToString(); - string POR = Selet_Machines(Machines, "Serial", "ID='" + k + "'").ToString(); - - DataTable WorkOrder_set = WorkOrderSQL.ExecuteDataSet("select * from WorkOrderSet where WorkOrder='" + + + DataTable WorkOrder_set = SQLiteHelpers.ExecuteDataSet("select * from WorkOrderSet where WorkOrder='" + WorkOrderset_w + "'", null).Tables[0]; //读取表写入缓存 if (WorkOrder_set.Rows.Count > 0) { - stringQueueSerial.Enqueue(new QueueSerial + int index = Convert.ToInt16(Selet_Machines(Machines, "ID", "Name='" + WorkOrderset_m + "'").ToString()); + if (Selet_Machines(Machines, "Serial", "Name='" + WorkOrderset_m + "'").ToString() == "PORT1") + { + stringQueueSerial_1.Enqueue(new QueueSerial + { + ID = index, + DAT = "SC812[" + + Selet_Machines(Machines, "Station", "ID='" + k + "'") + "]" + + DataTableToDictionary(WorkOrder_set).ToJsonString() + }); + } + else if (Selet_Machines(Machines, "Serial", "Name='" + WorkOrderset_m + "'").ToString() == "PORT2") { - ID = POR, - DAT = "SC812[" + + stringQueueSerial_2.Enqueue(new QueueSerial + { + ID = index, + DAT = "SC812[" + Selet_Machines(Machines, "Station", "ID='" + k + "'") + "]" + DataTableToDictionary(WorkOrder_set).ToJsonString() - }); + }); + } + else if (Selet_Machines(Machines, "Serial", "Name='" + WorkOrderset_m + "'").ToString() == "PORT3") + { + stringQueueSerial_3.Enqueue(new QueueSerial + { + ID = index, + DAT = "SC812[" + + Selet_Machines(Machines, "Station", "ID='" + k + "'") + "]" + + DataTableToDictionary(WorkOrder_set).ToJsonString() + }); + } + else if (Selet_Machines(Machines, "Serial", "Name='" + WorkOrderset_m + "'").ToString() == "PORT4") + { + stringQueueSerial_4.Enqueue(new QueueSerial + { + ID = index, + DAT = "SC812[" + + Selet_Machines(Machines, "Station", "ID='" + k + "'") + "]" + + DataTableToDictionary(WorkOrder_set).ToJsonString() + }); + } } - WorkOrderSQL.Update("WorkOrder", new Dictionary { { "State", 110 } }, + SQLiteHelpers.Update("WorkOrder", new Dictionary { { "State", 110 } }, "WorkOrder ='" + WorkOrderdata.Select()[k].Field("WorkOrder").ToString() + "'", null); } } - WorkOrderSQL.Close(); //系统时间 Sys_Time = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"); @@ -559,34 +478,98 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel } } else - { - if (MachinesRow["State"].ToString() == "800") - {//串口发送 - string POR = MachinesRow["Serial"].ToString(); + {//串口发送 + if (MachinesRow["State"].ToString() == "802") + { + if (MachinesRow["Serial"].ToString() == "PORT1") + { + stringQueueSerial_1.Enqueue(new QueueSerial + { + ID = Convert.ToInt16(MachinesRow["ID"]), + DAT = "SC830[" + MachinesRow["Station"] + "]" + }); - stringQueueSerial.Enqueue(new QueueSerial + bool mode = Convert.ToBoolean(MachinesRow["LOCK"]);//发送锁定状态 + if (mode) + { + Dictionary dat_829 = new Dictionary(); + dat_829.Clear(); + dat_829.Add("NAME", "LOCK"); + dat_829.Add("VALUE", "True"); + stringQueueSerial_1.Enqueue(new QueueSerial + { + ID = Convert.ToInt16(MachinesRow["ID"]), + DAT = "SC829[" + MachinesRow["Station"] + "]" + dat_829.ToJsonString() + }); + } + } + else if (MachinesRow["Serial"].ToString() == "PORT2") { - ID = POR, - DAT = "SC830[" + MachinesRow["Station"] + "]" - }); + stringQueueSerial_2.Enqueue(new QueueSerial + { + ID = Convert.ToInt16(MachinesRow["ID"]), + DAT = "SC830[" + MachinesRow["Station"] + "]" + }); - bool mode =Convert.ToBoolean( MachinesRow["LOCK"]);//发送锁定状态 - if (mode) + bool mode = Convert.ToBoolean(MachinesRow["LOCK"]);//发送锁定状态 + if (mode) + { + Dictionary dat_829 = new Dictionary(); + dat_829.Clear(); + dat_829.Add("NAME", "LOCK"); + dat_829.Add("VALUE", "True"); + stringQueueSerial_2.Enqueue(new QueueSerial + { + ID = Convert.ToInt16(MachinesRow["ID"]), + DAT = "SC829[" + MachinesRow["Station"] + "]" + dat_829.ToJsonString() + }); + } + } + else if (MachinesRow["Serial"].ToString() == "PORT3") { - Dictionary dat_829 = new Dictionary(); - dat_829.Clear(); - dat_829.Add("NAME", "LOCK"); - dat_829.Add("VALUE", "True"); - stringQueueSerial.Enqueue(new QueueSerial + stringQueueSerial_3.Enqueue(new QueueSerial { - ID = POR, - DAT = "SC829[" + MachinesRow["Station"] + "]" + dat_829.ToJsonString() + ID = Convert.ToInt16(MachinesRow["ID"]), + DAT = "SC830[" + MachinesRow["Station"] + "]" }); + + bool mode = Convert.ToBoolean(MachinesRow["LOCK"]);//发送锁定状态 + if (mode) + { + Dictionary dat_829 = new Dictionary(); + dat_829.Clear(); + dat_829.Add("NAME", "LOCK"); + dat_829.Add("VALUE", "True"); + stringQueueSerial_3.Enqueue(new QueueSerial + { + ID = Convert.ToInt16(MachinesRow["ID"]), + DAT = "SC829[" + MachinesRow["Station"] + "]" + dat_829.ToJsonString() + }); + } } + else if (MachinesRow["Serial"].ToString() == "PORT4") + { + stringQueueSerial_4.Enqueue(new QueueSerial + { + ID = Convert.ToInt16(MachinesRow["ID"]), + DAT = "SC830[" + MachinesRow["Station"] + "]" + }); - // Updata_Machines(Machines, "State", "ID='" + MachinesRow["ID"] + "'", "800"); + bool mode = Convert.ToBoolean(MachinesRow["LOCK"]);//发送锁定状态 + if (mode) + { + Dictionary dat_829 = new Dictionary(); + dat_829.Clear(); + dat_829.Add("NAME", "LOCK"); + dat_829.Add("VALUE", "True"); + stringQueueSerial_4.Enqueue(new QueueSerial + { + ID = Convert.ToInt16(MachinesRow["ID"]), + DAT = "SC829[" + MachinesRow["Station"] + "]" + dat_829.ToJsonString() + }); + } + } } - int m_run =Convert.ToInt16( MachinesRow["WORK_RUN"]); if (m_run == 0) { @@ -609,12 +592,38 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel string mac_s = MachinesRow["State"].ToString(); if ((mac_s == "101") || (mac_s == "201") || (mac_s == "202") || (mac_s == "301") || (mac_s == "309"))//获取信息 { - string POR = MachinesRow["Serial"].ToString(); - stringQueueSerial.Enqueue(new QueueSerial + if (MachinesRow["Serial"].ToString() == "PORT1") { - ID = POR, - DAT = "SC830[" + MachinesRow["Station"] + "]" - }); + stringQueueSerial_1.Enqueue(new QueueSerial + { + ID = Convert.ToInt16(MachinesRow["ID"]), + DAT = "SC830[" + MachinesRow["Station"] + "]" + }); + } + else if (MachinesRow["Serial"].ToString() == "PORT2") + { + stringQueueSerial_2.Enqueue(new QueueSerial + { + ID = Convert.ToInt16(MachinesRow["ID"]), + DAT = "SC830[" + MachinesRow["Station"] + "]" + }); + } + else if (MachinesRow["Serial"].ToString() == "PORT3") + { + stringQueueSerial_3.Enqueue(new QueueSerial + { + ID = Convert.ToInt16(MachinesRow["ID"]), + DAT = "SC830[" + MachinesRow["Station"] + "]" + }); + } + else if (MachinesRow["Serial"].ToString() == "PORT4") + { + stringQueueSerial_4.Enqueue(new QueueSerial + { + ID = Convert.ToInt16(MachinesRow["ID"]), + DAT = "SC830[" + MachinesRow["Station"] + "]" + }); + } } } } @@ -678,14 +687,38 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel } else {//串口 - string POR = MachinesRow["Serial"].ToString(); - - stringQueueSerial.Enqueue(new QueueSerial + if (MachinesRow["Serial"].ToString() == "PORT1") { - ID = POR, - DAT = "SC827[" + MachinesRow["Station"]+"]" - }); - + stringQueueSerial_1.Enqueue(new QueueSerial + { + ID = Convert.ToInt16(MachinesRow["ID"]), + DAT = "SC827[" + MachinesRow["Station"] + "]" + }); + } + else if (MachinesRow["Serial"].ToString() == "PORT2") + { + stringQueueSerial_2.Enqueue(new QueueSerial + { + ID = Convert.ToInt16(MachinesRow["ID"]), + DAT = "SC827[" + MachinesRow["Station"] + "]" + }); + } + else if (MachinesRow["Serial"].ToString() == "PORT3") + { + stringQueueSerial_3.Enqueue(new QueueSerial + { + ID = Convert.ToInt16(MachinesRow["ID"]), + DAT = "SC827[" + MachinesRow["Station"] + "]" + }); + } + else if (MachinesRow["Serial"].ToString() == "PORT4") + { + stringQueueSerial_4.Enqueue(new QueueSerial + { + ID = Convert.ToInt16(MachinesRow["ID"]), + DAT = "SC827[" + MachinesRow["Station"] + "]" + }); + } } } } @@ -709,13 +742,10 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel } Dictionary dat_ = new Dictionary();//缓存函数 dat_.Add("State", 203); - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 SQLiteHelpers.Update("DyelotHistory", dat_, "Dyelot='" + row.Field("Dyelot") + "' and Redye='" + row.Field("Redye") + - "' and Step='" + row.Field("Step") + "'", null);// 执行插入 - SQLiteHelpers.Close(); + "' and Step='" + row.Field("Step") + "'", null);// 执行插入 } } } @@ -893,42 +923,72 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel {//301列表发送完成至染机(203=>301) foreach (DataRow row in Dyelot_CALL.Select("State='301' OR State='309'")) { - if (Convert.ToBoolean(MachinesRow["Type"])) - {//网络 - Dictionary Product_ = new Dictionary();//缓存函数 - Product_.Add("State", row.Field("State")); - Product_.Add("Step", row.Field("Step")); - Product_.Add("Dyelot", row.Field("Dyelot")); - Product_.Add("ProductCode", row.Field("ProductCode")); - Product_.Add("Amount", row.Field("Amount")); - Product_.Add("DispenseEndTime", row.Field("DispenseEndTime")); + Dictionary Product_ = new Dictionary();//缓存函数 + Product_.Add("State", row.Field("State")); + Product_.Add("Step", row.Field("Step")); + Product_.Add("Dyelot", row.Field("Dyelot")); + Product_.Add("ProductCode", row.Field("ProductCode")); + Product_.Add("Amount", row.Field("Amount")); + Product_.Add("DispenseEndTime", row.Field("DispenseEndTime")); + if (Convert.ToBoolean(MachinesRow["Type"])) + {//网络 stringQueue.Enqueue(new QueueString { ID = Convert.ToInt16(Selet_Machines(Machines, "ID", "Name='" + row.Field("Machine") + "'")), DAT = "SC828" + Selet_Machines(Machines, "SYSKEY", "Name='" + row.Field("Machine") + "'") + Product_.ToJsonString() - }); - if (row["State"].ToString() == "309") + }); + } + else + {//串口 + if (MachinesRow["Serial"].ToString() == "PORT1") + { + stringQueueSerial_1.Enqueue(new QueueSerial + { + ID = Convert.ToInt16(MachinesRow["ID"]), + DAT = "SC828[" + MachinesRow["Station"] + "]" + Product_.ToJsonString() + }); + } + else if (MachinesRow["Serial"].ToString() == "PORT2") + { + stringQueueSerial_2.Enqueue(new QueueSerial + { + ID = Convert.ToInt16(MachinesRow["ID"]), + DAT = "SC828[" + MachinesRow["Station"] + "]" + Product_.ToJsonString() + }); + } + else if (MachinesRow["Serial"].ToString() == "PORT3") { - MainWindow.InfData.Rows.Add(new object[] { row["Machine"], + stringQueueSerial_3.Enqueue(new QueueSerial + { + ID = Convert.ToInt16(MachinesRow["ID"]), + DAT = "SC828[" + MachinesRow["Station"] + "]" + Product_.ToJsonString() + }); + } + else if (MachinesRow["Serial"].ToString() == "PORT4") + { + stringQueueSerial_4.Enqueue(new QueueSerial + { + ID = Convert.ToInt16(MachinesRow["ID"]), + DAT = "SC828[" + MachinesRow["Station"] + "]" + Product_.ToJsonString() + }); + } + } + + if (row["State"].ToString() == "309") + { + MainWindow.InfData.Rows.Add(new object[] { row["Machine"], Resources.Step + row["Step"]+ Resources.DispenseException, Selet_Machines(Machines, "SYSKEY", "Name='" + row["Machine"] + "'"), Selet_Machines(Machines, "ID", "Name='" + row["Machine"] + "'")}); - } - Dyelot_CALL.Rows.Remove(row); } - else - {//串口 - } + Dyelot_CALL.Rows.Remove(row); } } catch (Exception EX) { LogGing.ERRDATA(EX); } - - - } } void Tick_Event_30S() @@ -948,7 +1008,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel } public static TcpClient[] MachiensTcpClient = new TcpClient[99]; - public static SerialPortClient[] MachiensPortClient = new SerialPortClient[99]; + public static SerialPortClient[] MachiensPortClient = new SerialPortClient[4]; //public static DataRow[] machinesdata = new DataRow[999]; public void ClientNEW() { @@ -980,38 +1040,175 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel } } } - public void PortClientNEW() + public async void PortClientNEW() { - foreach (DataRow dataRow in Machines.Rows) + if (Machines.Select("Type='false' AND Serial='PORT1'").Length > 0) { - if (!Convert.ToBoolean(dataRow["Type"])) + MachiensPortClient[0] = new SerialPortClient(); + await AsyncSerialPortClient.PortClient(MachiensPortClient[0] //建立连接 + , Configini.IniReadvalue("SYS", "COMP1") + , Convert.ToInt32(Configini.IniReadvalue("SYS", "BAUD1"))); + Port1_link(); + } + if (Machines.Select("Type='false' AND Serial='PORT2'").Length > 0) + { + MachiensPortClient[1] = new SerialPortClient(); + await AsyncSerialPortClient.PortClient(MachiensPortClient[1] //建立连接 + , Configini.IniReadvalue("SYS", "COMP2") + , Convert.ToInt32(Configini.IniReadvalue("SYS", "BAUD2"))); + Port2_link(); + } + if (Machines.Select("Type='false' AND Serial='PORT3'").Length > 0) + { + MachiensPortClient[2] = new SerialPortClient(); + await AsyncSerialPortClient.PortClient(MachiensPortClient[2] //建立连接 + , Configini.IniReadvalue("SYS", "COMP3") + , Convert.ToInt32(Configini.IniReadvalue("SYS", "BAUD3"))); + Port3_link(); + } + if (Machines.Select("Type='false' AND Serial='PORT4'").Length > 0) + { + MachiensPortClient[3] = new SerialPortClient(); + await AsyncSerialPortClient.PortClient(MachiensPortClient[3] //建立连接 + , Configini.IniReadvalue("SYS", "COMP4") + , Convert.ToInt32(Configini.IniReadvalue("SYS", "BAUD4"))); + Port4_link(); + } + } + private void Port1_link() + { + Task.Run(() => + { + try { - string Serial_ = dataRow["Serial"].ToString(); + foreach (DataRow MachinesRow in Machines.Select("Type='false' AND Serial='PORT1'")) + { + if (stringQueueSerial_1.Count > 0) //信息发送队列 + { + QueueSerial t = stringQueueSerial_1.Dequeue(); - if (Serial_ == "PORT1") + AsyncSerialPortClient.SendCommandAndWait(MachiensPortClient[0], t.DAT); + //MachiensPortClient[t.ID].Send(t.DAT); + } + if (MachinesRow["State"].ToString() == "800") + { + AsyncSerialPortClient.SendCommandAndWait( + MachiensPortClient[0], + "SC800[" + MachinesRow["Station"] + "]"); + } + } + } + catch (Exception) + { + } + finally + { + // if (stringQueueSerial.Count == 0) return; + Port1_link();//回调 + } + }); + }//发送 + private void Port2_link() + { + Task.Run(() => + { + try + { + foreach (DataRow MachinesRow in Machines.Select("Type='false' AND Serial='PORT2'")) { - MachiensPortClient[Convert.ToInt16(dataRow["ID"])] = new SerialPortClient(); - _ = AsyncSerialPortClient.PortClient(MachiensPortClient[Convert.ToInt16(dataRow["ID"])] //建立连接 - , Configini.IniReadvalue("SYS", "COMP1") - , Convert.ToInt32(Configini.IniReadvalue("SYS", "BAUD1"))); + if (stringQueueSerial_2.Count > 0) //信息发送队列 + { + QueueSerial t = stringQueueSerial_2.Dequeue(); + + AsyncSerialPortClient.SendCommandAndWait(MachiensPortClient[1], t.DAT); + //MachiensPortClient[t.ID].Send(t.DAT); + } + if (MachinesRow["State"].ToString() == "800") + { + AsyncSerialPortClient.SendCommandAndWait( + MachiensPortClient[1], + "SC800[" + MachinesRow["Station"] + "]"); + } } - else if (Serial_ == "PORT2") + } + catch (Exception) + { + } + finally + { + // if (stringQueueSerial.Count == 0) return; + Port2_link();//回调 + } + }); + }//发送 + private void Port3_link() + { + Task.Run(() => + { + try + { + foreach (DataRow MachinesRow in Machines.Select("Type='false' AND Serial='PORT3'")) { - MachiensPortClient[Convert.ToInt16(dataRow["ID"])] = new SerialPortClient(); - _ = AsyncSerialPortClient.PortClient(MachiensPortClient[Convert.ToInt16(dataRow["ID"])] //建立连接 - , Configini.IniReadvalue("SYS", "COMP2") - , Convert.ToInt32(Configini.IniReadvalue("SYS", "BAUD2"))); + if (stringQueueSerial_3.Count > 0) //信息发送队列 + { + QueueSerial t = stringQueueSerial_3.Dequeue(); + + AsyncSerialPortClient.SendCommandAndWait(MachiensPortClient[2], t.DAT); + //MachiensPortClient[t.ID].Send(t.DAT); + } + if (MachinesRow["State"].ToString() == "800") + { + DataTable Workorddr = SQLiteHelpers.ExecuteDataSet("select * from Dyelot ", null).Tables[0]; //读取表写入缓存 + + AsyncSerialPortClient.SendCommandAndWait( + MachiensPortClient[2], + "SC800[" + MachinesRow["Station"] + "]"+Workorddr.ToJsonString()); + } } - else if (Serial_ == "PORT3") + } + catch (Exception) + { + } + finally + { + // if (stringQueueSerial.Count == 0) return; + Port3_link();//回调 + } + }); + }//发送 + private void Port4_link() + { + Task.Run(() => + { + try + { + foreach (DataRow MachinesRow in Machines.Select("Type='false' AND Serial='PORT4'")) { - MachiensPortClient[Convert.ToInt16(dataRow["ID"])] = new SerialPortClient(); - _ = AsyncSerialPortClient.PortClient(MachiensPortClient[Convert.ToInt16(dataRow["ID"])] //建立连接 - , Configini.IniReadvalue("SYS", "COMP3") - , Convert.ToInt32(Configini.IniReadvalue("SYS", "BAUD3"))); + if (stringQueueSerial_4.Count > 0) //信息发送队列 + { + QueueSerial t = stringQueueSerial_4.Dequeue(); + + AsyncSerialPortClient.SendCommandAndWait(MachiensPortClient[3], t.DAT); + //MachiensPortClient[t.ID].Send(t.DAT); + } + if (MachinesRow["State"].ToString() == "800") + { + AsyncSerialPortClient.SendCommandAndWait( + MachiensPortClient[3], + "SC800[" + MachinesRow["Station"] + "]"); + } } } - } - } + catch (Exception) + { + } + finally + { + // if (stringQueueSerial.Count == 0) return; + Port4_link();//回调 + } + }); + }//发送 public static string SYS_WorkNumder; //工单号 public static int SYS_AT1; //附缸1-3 @@ -1092,7 +1289,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel public static UInt32 TX=0; public class QueueSerial { - public string ID { get; set; } + public int ID { get; set; } public string DAT { get; set; } } public class QueueString @@ -1100,15 +1297,13 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel public int ID { get; set; } public string DAT { get; set; } } - public static class Queue - { - public static int ID { get; set; } - public static string DAT { get; set; } - } // 创建一个字符串类型的队列 public static Queue stringQueue = new Queue(); public static Queue stringQueueinf = new Queue(); - public static Queue stringQueueSerial = new Queue(); + public static Queue stringQueueSerial_1 = new Queue(); + public static Queue stringQueueSerial_2 = new Queue(); + public static Queue stringQueueSerial_3 = new Queue(); + public static Queue stringQueueSerial_4 = new Queue(); /// /// 将 DataTable 转换为 Dictionary 类型数据 diff --git a/WindowsView/MachineSelection.xaml.cs b/WindowsView/MachineSelection.xaml.cs index 91cbd4c..41f02a1 100644 --- a/WindowsView/MachineSelection.xaml.cs +++ b/WindowsView/MachineSelection.xaml.cs @@ -28,9 +28,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.WindowsView //声明一个更新Address的委托 public delegate void AddressUpdateHandler(object sender, AddressUpdateEventArgs e); //声明一个更新Address的事件 - public event AddressUpdateHandler AddressUpdated; - private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db"; //数据库路径 - private SQLiteHelper SQLiteHelpers = null; //定义数据库 + public event AddressUpdateHandler AddressUpdated; private string MACHINEDATA; DataTable machine_table; private List machine; @@ -39,13 +37,10 @@ namespace SunlightCentralizedControlManagement_SCCM_.WindowsView public MachineSelection() { InitializeComponent(); - - SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - comboBoxMachine.ItemsSource = SQLiteHelpers.ExecuteDataSet("select * from MachinesGroups order by Name desc", null).Tables[0]. + + comboBoxMachine.ItemsSource = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from MachinesGroups order by Name desc", null).Tables[0]. AsEnumerable().Select(rowdata => rowdata.Field("Name")).ToList();//转换代码 - machine_table = SQLiteHelpers.ExecuteDataSet("select * from Machines order by Name desc", null).Tables[0]; - SQLiteHelpers.Close(); //关闭连接 + machine_table = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from Machines order by Name desc", null).Tables[0]; machine = machine_table.AsEnumerable().Select(rowdata => rowdata.Field("Name")).ToList();//转换代码 diff --git a/WindowsView/User.xaml.cs b/WindowsView/User.xaml.cs index ba182d0..a117e49 100644 --- a/WindowsView/User.xaml.cs +++ b/WindowsView/User.xaml.cs @@ -1,5 +1,6 @@ using nGantt.GanttChart; using SunlightCentralizedControlManagement_SCCM_.View; +using SunlightCentralizedControlManagement_SCCM_.ViewModel; using System; using System.Collections.Generic; using System.Data; @@ -16,9 +17,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.WindowsView /// Machine.xaml 的交互逻辑 /// public partial class User : Window - { - private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db"; //数据库路径 - private UserClass.SqliteHelper.SQLiteHelper SQLiteHelpers = null; //定义数据库 + { CheckBox[] checkBoxes = new CheckBox[99]; string[] strings = new string[13] {"修改系统设置", "修改用户设置", "单机监控","单机控制","单机设置","新建排程","排程编辑","排程删除", @@ -40,10 +39,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.WindowsView checkBoxes[i].Height = 50; Capacity.Children.Add(checkBoxes[i]); } - SQLiteHelpers = new UserClass.SqliteHelper.SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - DataGriduser.ItemsSource = SQLiteHelpers.ExecuteDataSet("select * from USER order by Name desc", null).Tables[0].DefaultView; - SQLiteHelpers.Close(); + DataGriduser.ItemsSource = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from USER order by Name desc", null).Tables[0].DefaultView; } private void Tb_KeyFloating(object sender, TextCompositionEventArgs e)//输入事件 @@ -105,22 +101,16 @@ namespace SunlightCentralizedControlManagement_SCCM_.WindowsView USER_new.Add("Groups", Group); USER_new.Add("Capacity", Cap); USER_new.Add("Note", note); - SQLiteHelpers = new UserClass.SqliteHelper.SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - SQLiteHelpers.Delete("USER", "Name='" + name + "'", null); - SQLiteHelpers.InsertData("USER", USER_new);// 执行插入 - DataGriduser.ItemsSource = SQLiteHelpers.ExecuteDataSet("select * from USER order by Name desc", null).Tables[0].DefaultView; - SQLiteHelpers.Close(); + MainWindowViewModel.SQLiteHelpers.Delete("USER", "Name='" + name + "'", null); + MainWindowViewModel.SQLiteHelpers.InsertData("USER", USER_new);// 执行插入 + DataGriduser.ItemsSource = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from USER order by Name desc", null).Tables[0].DefaultView; _Name.Text = null; } private void Button_Delete(object sender, RoutedEventArgs e)//删除按钮事件 { - SQLiteHelpers = new UserClass.SqliteHelper.SQLiteHelper(DBAddress); //数据库连接路径 - SQLiteHelpers.Open(); //打开数据库 - SQLiteHelpers.Delete("USER", "Name='" + _Name.Text + "'", null); - DataGriduser.ItemsSource = SQLiteHelpers.ExecuteDataSet("select * from USER order by Name desc", null).Tables[0].DefaultView; - SQLiteHelpers.Close(); + MainWindowViewModel.SQLiteHelpers.Delete("USER", "Name='" + _Name.Text + "'", null); + DataGriduser.ItemsSource = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from USER order by Name desc", null).Tables[0].DefaultView; _Name.Text = null; } }