Browse Source

串口逻辑,数据库读写逻辑修改

master
sc 1 month ago
parent
commit
4af9042d5f
  1. 9
      EX/ManualDyelot.xaml.cs
  2. 50
      UserClass/AsyncSerialPortClient.cs
  3. 45
      UserClass/AsyncTcpClient.cs
  4. 47
      View/CurveView.xaml.cs
  5. 29
      View/DispenseMachinesSet.xaml.cs
  6. 7
      View/DispenseView.xaml.cs
  7. 47
      View/DyeingPlanView.xaml.cs
  8. 10
      View/DyelotView.xaml.cs
  9. 6
      View/EngineerSetView.xaml.cs
  10. 43
      View/MachinesSet.xaml.cs
  11. 14
      View/MachinesView.xaml.cs
  12. 50
      View/ProductionPlanningEdit.xaml.cs
  13. 32
      View/ProductionPlanningView.xaml.cs
  14. 70
      View/ProgramgroupView.xaml.cs
  15. 22
      View/ProgramstepsView .xaml.cs
  16. 719
      ViewModel/MainWindowViewModel.cs
  17. 13
      WindowsView/MachineSelection.xaml.cs
  18. 26
      WindowsView/User.xaml.cs

9
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<string, object> Dyelot_DAT = new Dictionary<string, object>();//缓存函数
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 + ";");

50
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(); // 确保发送-等待过程原子性
/// <summary>
/// 发送指令并等待响应,超时时间为500ms
/// </summary>
/// <param name="command">要发送的指令字节数组</param>
/// <returns>从机的响应数据,超时则为null</returns>
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
}
}
}
}
}

45
UserClass/AsyncTcpClient.cs

@ -39,8 +39,8 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass
/// </summary>
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<string, object> { { "State", 111 } },
DAT = DAT.Substring(DAT.IndexOf("]") + 1);
MainWindowViewModel.SQLiteHelpers.Update("WorkOrder", new Dictionary<string, object> { { "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<string, object> { { "State", 113 } },
MainWindowViewModel.SQLiteHelpers.Update("WorkOrder", new Dictionary<string, object> { { "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<string, object> { { "State", 101 } },
DAT = DAT.Substring(DAT.IndexOf("]") + 1);
MainWindowViewModel.SQLiteHelpers.Update("WorkOrder", new Dictionary<string, object> { { "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<string, object> { { "State", 109 } },
MainWindowViewModel.SQLiteHelpers.Update("WorkOrder", new Dictionary<string, object> { { "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<string, object> { { "State", 119 } },
MainWindowViewModel.SQLiteHelpers.Update("WorkOrder", new Dictionary<string, object> { { "State", 119 } },
"WorkOrder ='" + DAT + "'", null);
SQLiteHelpers.Close();
}
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
}//细节错误

47
View/CurveView.xaml.cs

@ -28,9 +28,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
/// </summary>
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;
}

29
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;
}
}

7
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];//缓存
/// <summary>
/// 生成总览信息卡
/// </summary>

47
View/DyeingPlanView.xaml.cs

@ -34,9 +34,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
/// </summary>
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<string>("name")).ToList();//转换机台
comboBoxProgram.ItemsSource = ProgramName.AsEnumerable().Select(rowdata => rowdata.Field<string>("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<string>("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<object>("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<string, object> WorkOrder_set = new Dictionary<string, object>();//缓存函数
@ -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<string, object> WorkOrder_DAT = new Dictionary<string, object>();//缓存函数
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)//查询料单是否可用
{

10
View/DyelotView.xaml.cs

@ -26,10 +26,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
/// Whole.xaml 的交互逻辑
/// </summary>
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;
}

6
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)
{

43
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<string>("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<string, object> Machines_DAT = new Dictionary<string, object>();//缓存函数
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<string, object> Machines_DAT = new Dictionary<string, object>();//缓存函数
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;

14
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<string, object> datagrid_v = new Dictionary<string, object>();//缓存函数
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<string, object> datagrid_v = new Dictionary<string, object>();//缓存函数
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;
}

50
View/ProductionPlanningEdit.xaml.cs

@ -31,9 +31,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
/// ProductionPlanningEdit.xaml 的交互逻辑
/// </summary>
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<string>("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<object>("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<string, object> WorkOrder_DAT = new Dictionary<string, object>();//缓存函数
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<object>("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<string, object> WorkOrder_DAT = new Dictionary<string, object>();//缓存函数
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;//显示
}

32
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<ContextMenuItem> ganttTaskContextMenuItems = new ObservableCollection<ContextMenuItem>();
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<object>("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)
{

70
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<string> result = new List<string>();
result.Add("ALL");
for (int i =0; i<GROUP.Rows.Count;i++)
@ -45,8 +41,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
result.Add (GROUP.Rows[i][1].ToString());
}
Group.ItemsSource = result.ToArray();
SQLiteHelpers.Close(); //关闭连接
}
public static string Programgroup_Numder { get; set; }
@ -86,27 +80,24 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
void InputBox_new_accept(object sender, EventArgs e)//新建按钮窗口返回
{
//事件的接收者通过一个简单的类型转换得到InputBox的引用
InputBox frm = (InputBox)sender;
//接收到InputBox的TextBox值
string VALUE = frm.InputValue;
string ID = DateTime.Now.ToString("yyMMddHHmmss"); //id为时间合
Dictionary<string, object> Program_new = new Dictionary<string, object>();//缓存函数
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<string, object> Program_new = new Dictionary<string, object>();//缓存函数
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<string, object> Program_Remark = new Dictionary<string, object>();//缓存函数
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;

22
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<string, object> Program_Step = new Dictionary<string, object>();//缓存函数
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);

719
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<object>("Machines").ToString();
DataTable dataTable = WorkOrderSQL.ExecuteDataSet("select * from WorkorderSteps where WorkOrder='" +
DataTable dataTable = SQLiteHelpers.ExecuteDataSet("select * from WorkorderSteps where WorkOrder='" +
WorkOrderstepdata.Select()[k].Field<object>("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<string, object> { { "State", 112 } },
SQLiteHelpers.Update("WorkOrder", new Dictionary<string, object> { { "State", 112 } },
"WorkOrder ='" + WorkOrderstepdata.Select()[k].Field<object>("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<string, object> { { "State", 110 } },
});
SQLiteHelpers.Update("WorkOrder", new Dictionary<string, object> { { "State", 110 } },
"WorkOrder ='" + WorkOrderdata.Select()[k].Field<object>("WorkOrder").ToString() + "'", null);
}
}
@ -421,7 +281,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel
{//串口
//string WorkOrderdata_m = WorkOrderdata.Select()[k].Field<object>("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<string, object> { { "State", 110 } },
"WorkOrder ='" + WorkOrderdata.Select()[k].Field<object>("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<string, object> { { "State", 110 } },
"WorkOrder ='" + WorkOrderdata.Select()[k].Field<object>("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<object>("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<string, object> { { "State", 110 } },
SQLiteHelpers.Update("WorkOrder", new Dictionary<string, object> { { "State", 110 } },
"WorkOrder ='" + WorkOrderdata.Select()[k].Field<object>("WorkOrder").ToString() + "'", null);
}
else
{//串口
//string WorkOrderset_m = WorkOrderset_.Select()[k].Field<object>("Machines").ToString();
string WorkOrderset_w = WorkOrderset_.Select()[k].Field<object>("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<string, object> { { "State", 110 } },
SQLiteHelpers.Update("WorkOrder", new Dictionary<string, object> { { "State", 110 } },
"WorkOrder ='" + WorkOrderdata.Select()[k].Field<object>("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<string, object> dat_829 = new Dictionary<string, object>();
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<string, object> dat_829 = new Dictionary<string, object>();
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<string, object> dat_829 = new Dictionary<string, object>();
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<string, object> dat_829 = new Dictionary<string, object>();
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<string, object> dat_829 = new Dictionary<string, object>();
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<string, object> dat_ = new Dictionary<string, object>();//缓存函数
dat_.Add("State", 203);
SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
SQLiteHelpers.Open(); //打开数据库
SQLiteHelpers.Update("DyelotHistory", dat_,
"Dyelot='" + row.Field<string>("Dyelot") +
"' and Redye='" + row.Field<int>("Redye") +
"' and Step='" + row.Field<int>("Step") + "'", null);// 执行插入
SQLiteHelpers.Close();
"' and Step='" + row.Field<int>("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<string, object> Product_ = new Dictionary<string, object>();//缓存函数
Product_.Add("State", row.Field<int>("State"));
Product_.Add("Step", row.Field<int>("Step"));
Product_.Add("Dyelot", row.Field<string>("Dyelot"));
Product_.Add("ProductCode", row.Field<string>("ProductCode"));
Product_.Add("Amount", row.Field<object>("Amount"));
Product_.Add("DispenseEndTime", row.Field<object>("DispenseEndTime"));
Dictionary<string, object> Product_ = new Dictionary<string, object>();//缓存函数
Product_.Add("State", row.Field<int>("State"));
Product_.Add("Step", row.Field<int>("Step"));
Product_.Add("Dyelot", row.Field<string>("Dyelot"));
Product_.Add("ProductCode", row.Field<string>("ProductCode"));
Product_.Add("Amount", row.Field<object>("Amount"));
Product_.Add("DispenseEndTime", row.Field<object>("DispenseEndTime"));
if (Convert.ToBoolean(MachinesRow["Type"]))
{//网络
stringQueue.Enqueue(new QueueString
{
ID = Convert.ToInt16(Selet_Machines(Machines,
"ID", "Name='" + row.Field<string>("Machine") + "'")),
DAT = "SC828" + Selet_Machines(Machines,
"SYSKEY", "Name='" + row.Field<string>("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<QueueString> stringQueue = new Queue<QueueString>();
public static Queue<QueueString> stringQueueinf = new Queue<QueueString>();
public static Queue<QueueSerial> stringQueueSerial = new Queue<QueueSerial>();
public static Queue<QueueSerial> stringQueueSerial_1 = new Queue<QueueSerial>();
public static Queue<QueueSerial> stringQueueSerial_2 = new Queue<QueueSerial>();
public static Queue<QueueSerial> stringQueueSerial_3 = new Queue<QueueSerial>();
public static Queue<QueueSerial> stringQueueSerial_4 = new Queue<QueueSerial>();
/// <summary>
/// 将 DataTable 转换为 Dictionary 类型数据

13
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<string> 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<string>("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<string>("Name")).ToList();//转换代码

26
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 的交互逻辑
/// </summary>
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;
}
}

Loading…
Cancel
Save