Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eb2828aab0 | ||
|
|
33b970eff9 | ||
|
|
5caf92be59 | ||
|
|
437b8957ce | ||
|
|
a68fb9ae01 | ||
|
|
68b98ac7e4 | ||
|
|
2329ac9abc | ||
|
|
b062420be1 | ||
|
|
a248c41163 | ||
|
|
2b676adbba | ||
|
|
00a5cd3ec7 | ||
|
|
abfcf6e36a | ||
|
|
1df7212414 | ||
|
|
751a2b092f | ||
|
|
8a5e0ecfd9 | ||
|
|
ebcd5b7182 | ||
|
|
7f905617fa | ||
|
|
54d8cc7266 | ||
|
|
33e83fa5d6 | ||
|
|
927c38853d | ||
|
|
552d45485d | ||
|
|
17a5d6b718 | ||
|
|
34d3e6c292 | ||
|
|
5b60ea4765 | ||
|
|
b2817d1b01 | ||
|
|
7403914ba5 | ||
|
|
878d49c4a0 | ||
|
|
e457b0ab21 | ||
|
|
b0ce5bc8f9 | ||
|
|
d3375fd6ac | ||
|
|
7671f0ef08 | ||
|
|
25e6ae1563 | ||
|
|
e020333b82 | ||
|
|
8914ea3660 | ||
|
|
c1da97611d | ||
|
|
daaa2b5514 | ||
|
|
2c40ac5be0 | ||
|
|
21500886f0 | ||
|
|
c5e1978f6a | ||
|
|
9a374a0a87 | ||
|
|
f9949c5ec5 | ||
|
|
91212f03d2 | ||
|
|
31a84a640d | ||
|
|
9bdf575674 | ||
|
|
8adea70012 | ||
|
|
3f9730507e | ||
|
|
7fad98f58b | ||
|
|
61dbaa3c33 | ||
|
|
5e063092cf | ||
|
|
574f468a5e | ||
|
|
e9f83ea182 | ||
|
|
ab5dfa85e1 | ||
|
|
8512e720dd | ||
|
|
81ab1623ba | ||
|
|
6cbed8fa62 | ||
|
|
60baf3554a | ||
|
|
1ef9b8517c | ||
|
|
d5042d92ff | ||
|
|
4a1c5b7eac | ||
|
|
896c2bdf9c | ||
|
|
99217977ec | ||
|
|
8d0b37f0e2 | ||
|
|
898cde7329 | ||
|
|
4cf411dc10 | ||
|
|
3c5e8cd129 | ||
|
|
818d0e5a3a | ||
|
|
e2b48ecc84 | ||
|
|
2c0f06a83a | ||
|
|
a1b128757d | ||
|
|
7c744f72f6 | ||
|
|
7177673a4c | ||
|
|
a0ac4e094c | ||
|
|
d85d458edb | ||
|
|
4f9195c552 | ||
|
|
ec6bab3b56 | ||
|
|
11b9b99d3e | ||
|
|
13c64092a0 | ||
|
|
48eb8a0ad1 | ||
|
|
9c10e1c2cc | ||
|
|
baa921ea20 | ||
|
|
0c5666ddd4 | ||
|
|
157666d836 | ||
|
|
ab655a94e0 | ||
|
|
4af9042d5f | ||
|
|
fc799a2510 | ||
|
|
22c061db9e | ||
|
|
737c5e7e71 | ||
|
|
6120fe283a | ||
|
|
cedd2c189b | ||
|
|
379db4b738 | ||
|
|
908a7ce56e | ||
|
|
243cb6126b | ||
|
|
963f514bac | ||
|
|
2120a1e1ea | ||
|
|
5b8aa656e4 | ||
|
|
0311582679 | ||
|
|
951765de9a | ||
|
|
70b04e0892 | ||
|
|
151251586c | ||
|
|
8ade983214 | ||
|
|
e3370c0b63 | ||
|
|
8091b3dcc4 | ||
|
|
ff4ab5b349 | ||
|
|
206204711b | ||
|
|
aeaba92942 | ||
|
|
6e690b78b7 | ||
|
|
4d6619944c | ||
|
|
acdfc68def | ||
|
|
b307aa433c | ||
|
|
c235d91a8b | ||
|
|
72d513fdfe | ||
|
|
7ba38facc2 | ||
|
|
d3583311e2 | ||
|
|
8b7593dceb | ||
|
|
3ba1a7e6c4 | ||
|
|
4449530bb7 | ||
|
|
6bfef306be | ||
|
|
e4e7853624 | ||
|
|
7416bc332b | ||
|
|
435a54a61a | ||
|
|
54d6ddd918 | ||
|
|
2659b01329 | ||
|
|
2866dddbd9 | ||
|
|
1fff37ad63 | ||
|
|
2e6d18b719 | ||
|
|
bfba0f15d3 | ||
|
|
539d2763ee | ||
|
|
ce84169794 | ||
|
|
1d2c749642 | ||
|
|
d13edd4070 | ||
|
|
52b09f4a8f | ||
|
|
c32e34df73 | ||
|
|
dc4161337b | ||
|
|
ce603a9afd | ||
|
|
a1c16815d1 | ||
|
|
3d501babf9 | ||
|
|
f29817be05 | ||
|
|
1d2d97bd65 | ||
|
|
b14643bc31 | ||
|
|
9a0a60793e | ||
|
|
6556e469cd | ||
|
|
9ce3d975b4 | ||
|
|
76c0f41fde | ||
|
|
993d43951e | ||
|
|
b08e53ee04 | ||
|
|
cd74fb8103 | ||
|
|
4ac748f002 | ||
|
|
cdc7b896d9 | ||
|
|
7e61d7bd9d | ||
|
|
ac86200576 | ||
|
|
c9d576bf99 | ||
|
|
9bcffdc6df | ||
|
|
c30a2e7a01 | ||
|
|
8d5631a651 | ||
|
|
ab324d65bb | ||
|
|
3d64a4474d | ||
|
|
6d18349fc7 | ||
|
|
d047a4f23e | ||
|
|
91584c0d8c | ||
|
|
7d7ed08f96 | ||
|
|
ea3073eae0 | ||
|
|
586e5cb69e | ||
|
|
5b09426c59 | ||
|
|
37435ca60c | ||
|
|
bb736e2c0d | ||
|
|
85ec4fdbc4 | ||
|
|
a5e46708b6 | ||
|
|
60e8a5699b | ||
|
|
dd58e05c35 | ||
|
|
3c4761aed4 | ||
|
|
707850a551 | ||
|
|
7242195f45 | ||
|
|
4442397069 | ||
|
|
ce2a80c50b | ||
|
|
734649fa57 | ||
|
|
3c3b608bfb | ||
|
|
6b82f3b3ce | ||
|
|
6eae137bd1 | ||
|
|
74225cea5f | ||
|
|
54addaff17 | ||
|
|
35ca13ded3 | ||
|
|
5f7c6bee47 | ||
|
|
0345229416 | ||
|
|
de843f4e90 | ||
|
|
98afe7a263 | ||
|
|
76178b40b4 | ||
|
|
115449a736 | ||
|
|
7fa6f2c53b | ||
|
|
14ae9d34a7 | ||
|
|
b7df741f08 | ||
|
|
79833989b5 | ||
|
|
db1ac43edb | ||
|
|
bfc15cca8b | ||
|
|
224a97cba4 | ||
|
|
51510fd83a | ||
|
|
b3d2884ffa | ||
|
|
30de321875 | ||
|
|
4d2a10a870 | ||
|
|
cfc64511f8 | ||
|
|
4d7fccc878 | ||
|
|
786c770914 | ||
|
|
49a3da7967 | ||
|
|
26c41a0c10 | ||
|
|
7f0b030f13 | ||
|
|
3b6ab69a71 | ||
|
|
195389db98 | ||
|
|
a9f505e960 | ||
|
|
f253d11902 | ||
|
|
41350cbd12 | ||
|
|
122f548e9c | ||
|
|
0a80ae9db4 | ||
|
|
144cb73d26 | ||
|
|
2cf6b0ab6a | ||
|
|
23e461b85d | ||
|
|
24c4daf4f7 | ||
|
|
7cc54d8e33 | ||
|
|
18d6aa3e87 | ||
|
|
feaaa47e86 | ||
|
|
e11373d5f8 | ||
|
|
fd669617d8 | ||
|
|
289a9fbf81 | ||
|
|
1fb7986213 | ||
|
|
982b9a8f28 | ||
|
|
5f73676b92 | ||
|
|
2d4cba6cc4 | ||
|
|
0297cd7136 | ||
|
|
35852e08a9 | ||
|
|
7fbc98f832 | ||
|
|
65d0504c68 | ||
|
|
17ae98aa02 | ||
|
|
9001efee9c | ||
|
|
fbf01a04fe | ||
|
|
acd37a8245 | ||
|
|
c375c05d6b | ||
|
|
ea95535612 | ||
|
|
33a92747ed | ||
|
|
ed94ddb180 | ||
|
|
63ee0e68af | ||
|
|
f9ba766711 | ||
|
|
e477d6de59 | ||
|
|
a2bb445e1d | ||
|
|
797d7e0123 | ||
|
|
4ea3785f05 | ||
|
|
c568c45c01 | ||
|
|
ba202dcd61 | ||
|
|
e2b112b049 | ||
|
|
3f2fb3d2e8 | ||
|
|
ebf24d5895 | ||
|
|
4ec1505bc5 | ||
|
|
8f6f5edf14 | ||
|
|
1eb54327db | ||
|
|
a43f871946 | ||
|
|
6188bfb6ef | ||
|
|
083278d7bf | ||
|
|
5e64b1a3cb | ||
|
|
11a064dd23 | ||
|
|
81f05cec06 | ||
|
|
4a270b87b6 | ||
|
|
cd5a2f0541 | ||
|
|
fa8777f9a7 | ||
|
|
0cf31e6a3c | ||
|
|
32b0050b4f | ||
|
|
d33ba004bb | ||
|
|
6e6809b020 | ||
|
|
c42fe16a7e | ||
|
|
f4127b1510 | ||
|
|
89c7868ad0 | ||
|
|
280df807d1 | ||
|
|
0b6e394a61 | ||
|
|
20edc08763 | ||
|
|
78b5ebafdb | ||
|
|
194dc40515 | ||
|
|
e2267d7e38 | ||
|
|
09cb79fb14 | ||
|
|
1cccf3efc4 | ||
|
|
b373c452c0 | ||
|
|
b6f065a19d | ||
|
|
c20c095bf8 | ||
|
|
e2c76d7780 | ||
|
|
e911eb2e0e |
No files matched your search
@@ -0,0 +1,27 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.ConvertMoels
|
||||
{
|
||||
internal class BoolToVisidilityConvert : IValueConverter
|
||||
{
|
||||
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
|
||||
{
|
||||
return (value is bool boolvalue && boolvalue) ?
|
||||
Visibility.Visible:
|
||||
Visibility.Collapsed;
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -21,16 +21,17 @@ namespace SunlightCentralizedControlManagement_SCCM_.ConvertMoels
|
||||
{
|
||||
string i = value.ToString();
|
||||
|
||||
if (i == "101") return "Gray";
|
||||
else if (i == "201") return "green";
|
||||
else if (i == "202") return "yellow";
|
||||
else return "Red";
|
||||
if (i == "201") return "#FF00FF00";
|
||||
else if (i == "202") return "Green";
|
||||
else if (i == "309") return "#FF000000";
|
||||
else if (i == "800") return "Red";
|
||||
else return "#FF000000";
|
||||
}
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
return "Gray";
|
||||
return "#FFF0F0F0";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.ConvertMoels
|
||||
{
|
||||
internal class StatenClassConvert
|
||||
{
|
||||
public static string Convert(object value)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
string Staten = null;
|
||||
string i = value.ToString();
|
||||
|
||||
if (i == "100") Staten = Properties.Resources.NotSent;//等待
|
||||
else if (i == "101") Staten = Properties.Resources.Ready;//准备
|
||||
else if (i == "102") Staten = Properties.Resources.Measure;//计量
|
||||
else if (i == "109") Staten = Properties.Resources.ERR;//错误
|
||||
else if (i == "110") Staten = Properties.Resources.NotSent;//未发送
|
||||
else if (i == "111") Staten = Properties.Resources.LtemizedSending;//发送明细
|
||||
else if (i == "112") Staten = Properties.Resources.DNotSent;//未发送明细
|
||||
else if (i == "119") Staten = Properties.Resources.Fail;//失败
|
||||
else if (i == "201") Staten = Properties.Resources.Auto;//自动
|
||||
else if (i == "202") Staten = Properties.Resources.LineUp;//排队
|
||||
else if (i == "203") Staten = Properties.Resources.Await;//等待
|
||||
else if (i == "301") Staten = Properties.Resources.Finish;//完成
|
||||
else if (i == "309") Staten = Properties.Resources.Abnormal;//错误
|
||||
else if (i == "800") Staten = Properties.Resources.Notimplementation;//未连接
|
||||
else if (i == "801") Staten = Properties.Resources.Implementation;//连接成功
|
||||
else if (i == "802") Staten = Properties.Resources.Online;//在线
|
||||
else if (i == "899") Staten = Properties.Resources.CloseTheConnection;//关闭连接
|
||||
else if (i == "1") Staten = Properties.Resources.dye;//染料
|
||||
else if (i == "2") Staten = Properties.Resources.chemicals;//助剂
|
||||
else if (i == "3") Staten = Properties.Resources.powder;//粉体
|
||||
else Staten = "null";
|
||||
|
||||
return Staten;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -21,16 +21,27 @@ namespace SunlightCentralizedControlManagement_SCCM_.ConvertMoels
|
||||
string Staten = null;
|
||||
string i = value.ToString();
|
||||
|
||||
if (i == "101") Staten = Properties.Resources.Ready;
|
||||
else if (i == "102") Staten = Properties.Resources.Measure;
|
||||
else if (i == "201") Staten = Properties.Resources.Auto;
|
||||
else if (i == "202") Staten = Properties.Resources.LineUp;
|
||||
else if (i == "203") Staten = Properties.Resources.Await;
|
||||
else if (i == "301") Staten = Properties.Resources.Finish;
|
||||
else if (i == "309") Staten = Properties.Resources.Abnormal;
|
||||
else if (i == "800") Staten = Properties.Resources.Notimplementation;
|
||||
else if (i == "801") Staten = Properties.Resources.Implementation;
|
||||
else Staten = "null";
|
||||
if (i == "100") Staten = Properties.Resources.Await;//等待
|
||||
else if (i == "101") Staten = Properties.Resources.Ready;//准备
|
||||
else if (i == "102") Staten = Properties.Resources.Measure;//计量
|
||||
else if (i == "109") Staten = Properties.Resources.ERR;//错误
|
||||
else if (i == "110") Staten = Properties.Resources.NotSent;//未发送
|
||||
else if (i == "111") Staten = Properties.Resources.LtemizedSending;//发送明细
|
||||
else if (i == "112") Staten = Properties.Resources.DNotSent;//未发送明细
|
||||
else if (i == "119") Staten = Properties.Resources.Fail;//失败
|
||||
else if (i == "201") Staten = Properties.Resources.Auto;//自动
|
||||
else if (i == "202") Staten = Properties.Resources.LineUp;//排队
|
||||
else if (i == "203") Staten = Properties.Resources.Await;//等待
|
||||
else if (i == "301") Staten = Properties.Resources.Finish;//完成
|
||||
else if (i == "309") Staten = Properties.Resources.Abnormal;//错误
|
||||
else if (i == "800") Staten = Properties.Resources.Notimplementation;//未连接
|
||||
else if (i == "801") Staten = Properties.Resources.Implementation;//连接成功
|
||||
else if (i == "801") Staten = Properties.Resources.Online;//在线
|
||||
else if (i == "899") Staten = Properties.Resources.CloseTheConnection;//关闭连接
|
||||
else if (i == "1") Staten = Properties.Resources.dye;//染料
|
||||
else if (i == "2") Staten = Properties.Resources.chemicals;//助剂
|
||||
else if (i == "3") Staten = Properties.Resources.powder;//粉体
|
||||
else Staten = "";
|
||||
|
||||
return Staten;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Media.Imaging;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.ConvertMoels
|
||||
{
|
||||
internal class StatenToImageConvert : IValueConverter
|
||||
{
|
||||
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
|
||||
{
|
||||
switch (value)
|
||||
{
|
||||
case "001":
|
||||
return new BitmapImage(new Uri("/Lmage/ID001.png", UriKind.Relative));//功能模块001温度控制
|
||||
case "007":
|
||||
return new BitmapImage(new Uri("/Lmage/ID007.png", UriKind.Relative));//液位入水
|
||||
case "008":
|
||||
return new BitmapImage(new Uri("/Lmage/ID008.png", UriKind.Relative));//流量入水
|
||||
case "013":
|
||||
return new BitmapImage(new Uri("/Lmage/ID013.png", UriKind.Relative));//批次水位水洗
|
||||
case "015":
|
||||
return new BitmapImage(new Uri("/Lmage/ID015.png", UriKind.Relative));//溢流水洗
|
||||
case "017":
|
||||
return new BitmapImage(new Uri("/Lmage/ID017.png", UriKind.Relative));//降温水洗
|
||||
case "020":
|
||||
return new BitmapImage(new Uri("/Lmage/ID020.png", UriKind.Relative));//排水
|
||||
case "022":
|
||||
return new BitmapImage(new Uri("/Lmage/ID022.png", UriKind.Relative));//动力排水
|
||||
case "031":
|
||||
return new BitmapImage(new Uri("/Lmage/ID031.png", UriKind.Relative));//运转时间
|
||||
case "035":
|
||||
return new BitmapImage(new Uri("/Lmage/ID035.png", UriKind.Relative));//准备入布
|
||||
case "036":
|
||||
return new BitmapImage(new Uri("/Lmage/ID036.png", UriKind.Relative));//准备出布
|
||||
case "039":
|
||||
return new BitmapImage(new Uri("/Lmage/ID039.png", UriKind.Relative));//呼叫人工
|
||||
case "040":
|
||||
return new BitmapImage(new Uri("/Lmage/ID040.png", UriKind.Relative));//取样
|
||||
case "041":
|
||||
return new BitmapImage(new Uri("/Lmage/ID041.png", UriKind.Relative));//结束
|
||||
case "049":
|
||||
return new BitmapImage(new Uri("/Lmage/ID049.png", UriKind.Relative));//等待
|
||||
case "050":
|
||||
return new BitmapImage(new Uri("/Lmage/ID050.png", UriKind.Relative));//主缸加压
|
||||
case "051":
|
||||
return new BitmapImage(new Uri("/Lmage/ID051.png", UriKind.Relative));//主缸减压
|
||||
case "054":
|
||||
return new BitmapImage(new Uri("/Lmage/ID054.png", UriKind.Relative));//主泵/风机速度
|
||||
case "055":
|
||||
return new BitmapImage(new Uri("/Lmage/ID055.png", UriKind.Relative));//主泵启动
|
||||
case "056":
|
||||
return new BitmapImage(new Uri("/Lmage/ID056.png", UriKind.Relative));//
|
||||
case "064":
|
||||
return new BitmapImage(new Uri("/Lmage/ID064.png", UriKind.Relative));//
|
||||
case "065":
|
||||
return new BitmapImage(new Uri("/Lmage/ID065.png", UriKind.Relative));//
|
||||
case "066":
|
||||
return new BitmapImage(new Uri("/Lmage/ID066.png", UriKind.Relative));//
|
||||
case "067":
|
||||
return new BitmapImage(new Uri("/Lmage/ID067.png", UriKind.Relative));//
|
||||
case "090":
|
||||
return new BitmapImage(new Uri("/Lmage/ID090.png", UriKind.Relative));//
|
||||
case "091":
|
||||
return new BitmapImage(new Uri("/Lmage/ID091.png", UriKind.Relative));//
|
||||
case "093":
|
||||
return new BitmapImage(new Uri("/Lmage/ID093.png", UriKind.Relative));//
|
||||
case "094":
|
||||
return new BitmapImage(new Uri("/Lmage/ID094.png", UriKind.Relative));//
|
||||
default:
|
||||
return new BitmapImage(new Uri("", UriKind.Relative));
|
||||
}
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
using ScottPlot.TickGenerators.Financial;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.ConvertMoels
|
||||
{
|
||||
internal class StatexmlConvert : IValueConverter
|
||||
{
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
string Staten = "None";
|
||||
string i = value.ToString();
|
||||
if (i == "101") Staten = "Walk";//运行
|
||||
else if (i == "202") Staten = "RunFast";//运行
|
||||
else if (i == "301") Staten = "Stop";//完成
|
||||
else if (i == "309") Staten = "ErrorOutline";//错误
|
||||
else if (i == "800") Staten = "LinkOff";//未连接
|
||||
else if (i == "801") Staten = "Link";//连接成功
|
||||
else if (i == "899") Staten = "LinkOff";//关闭连接
|
||||
else if (i == "True") Staten = "Visible";//
|
||||
else if (i == "False") Staten = "Collapsed";//
|
||||
|
||||
return Staten;
|
||||
}
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
[SYS]
|
||||
Language=zh-CN
|
||||
DyelotsDispenser=True
|
||||
COMP1=COM7
|
||||
COMP2=COM8
|
||||
COMP3=COM9
|
||||
COMP4=COM10
|
||||
BAUD1 = 57600
|
||||
BAUD2= 57600
|
||||
BAUD3 =57600
|
||||
BAUD4 =57600
|
||||
[SQL_SERVER]
|
||||
SQL1=www.scserverddns.top\EXPRESS ,21344
|
||||
SQL2=BatchDyeingCentral
|
||||
SQL3=SQL SERVER
|
||||
SQL4=sa
|
||||
SQL5=SC971216@server
|
||||
[SN]
|
||||
SN3=5BEE2D9CF3E1A8DD
|
||||
SN2=BED2E58B6EBB4BD4
|
||||
SN1=5BEE2D9CF3E1A8DD
|
||||
[VOICE]
|
||||
V1=-2
|
||||
V2=100
|
||||
@@ -0,0 +1,59 @@
|
||||
[2025-07-02 21:49:42];[Error] ||
|
||||
|
||||
[2025-07-02 21:49:42];[Error source] ||.Net SqlClient Data Provider
|
||||
|
||||
[2025-07-02 21:49:42];[Error message] ||在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: Named Pipes Provider, error: 40 - 无法打开到 SQL Server 的连接)
|
||||
|
||||
[2025-07-02 21:49:42];[Error area] || 在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling, SqlAuthenticationProviderManager sqlAuthProviderManager)
|
||||
在 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
|
||||
在 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
|
||||
在 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
|
||||
在 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
|
||||
在 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
|
||||
在 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
|
||||
在 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
|
||||
在 System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
|
||||
在 System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
|
||||
在 System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
|
||||
在 System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
|
||||
在 System.Data.SqlClient.SqlConnection.Open()
|
||||
在 SunlightCentralizedControlManagement_SCCM_.ViewModel.ManualDyelotModel..ctor() 位置 C:\Users\Administrator\source\repos\SunlightCentralizedControlManagement(SCCM)\ViewModel\ManualDyelotModel.cs:行号 35
|
||||
[2025-07-02 21:50:08];[Error] ||
|
||||
|
||||
[2025-07-02 21:50:08];[Error source] ||System.Data.SqlClient.SqlException (0x80131904): 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: Named Pipes Provider, error: 40 - 无法打开到 SQL Server 的连接) ---> System.ComponentModel.Win32Exception (0x80004005): 系统找不到指定的文件。
|
||||
在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling, SqlAuthenticationProviderManager sqlAuthProviderManager)
|
||||
在 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
|
||||
在 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
|
||||
在 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
|
||||
在 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
|
||||
在 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
|
||||
在 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
|
||||
在 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
|
||||
在 System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
|
||||
在 System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
|
||||
在 System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
|
||||
在 System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
|
||||
在 System.Data.SqlClient.SqlConnection.Open()
|
||||
在 SunlightCentralizedControlManagement_SCCM_.ViewModel.ManualDyelotModel..ctor() 位置 C:\Users\Administrator\source\repos\SunlightCentralizedControlManagement(SCCM)\ViewModel\ManualDyelotModel.cs:行号 35
|
||||
ClientConnectionId:00000000-0000-0000-0000-000000000000
|
||||
Error Number:2,State:0,Class:20
|
||||
|
||||
[2025-07-02 21:50:08];[Error message] ||在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: Named Pipes Provider, error: 40 - 无法打开到 SQL Server 的连接)
|
||||
|
||||
[2025-07-02 21:50:08];[Error area] ||System.Data.SqlClient.SqlException (0x80131904): 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: Named Pipes Provider, error: 40 - 无法打开到 SQL Server 的连接) ---> System.ComponentModel.Win32Exception (0x80004005): 系统找不到指定的文件。
|
||||
在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling, SqlAuthenticationProviderManager sqlAuthProviderManager)
|
||||
在 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
|
||||
在 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
|
||||
在 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
|
||||
在 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
|
||||
在 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
|
||||
在 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
|
||||
在 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
|
||||
在 System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
|
||||
在 System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
|
||||
在 System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
|
||||
在 System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
|
||||
在 System.Data.SqlClient.SqlConnection.Open()
|
||||
在 SunlightCentralizedControlManagement_SCCM_.ViewModel.ManualDyelotModel..ctor() 位置 C:\Users\Administrator\source\repos\SunlightCentralizedControlManagement(SCCM)\ViewModel\ManualDyelotModel.cs:行号 35
|
||||
ClientConnectionId:00000000-0000-0000-0000-000000000000
|
||||
Error Number:2,State:0,Class:20
|
||||
@@ -0,0 +1,20 @@
|
||||
[2025-07-24 21:48:12];[Error] ||
|
||||
|
||||
[2025-07-24 21:48:12];[Error source] ||.Net SqlClient Data Provider
|
||||
|
||||
[2025-07-24 21:48:12];[Error message] ||在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: Named Pipes Provider, error: 40 - 无法打开到 SQL Server 的连接)
|
||||
|
||||
[2025-07-24 21:48:12];[Error area] || 在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling, SqlAuthenticationProviderManager sqlAuthProviderManager)
|
||||
在 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
|
||||
在 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
|
||||
在 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
|
||||
在 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
|
||||
在 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
|
||||
在 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
|
||||
在 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
|
||||
在 System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
|
||||
在 System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
|
||||
在 System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
|
||||
在 System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
|
||||
在 System.Data.SqlClient.SqlConnection.Open()
|
||||
在 SunlightCentralizedControlManagement_SCCM_.ViewModel.ManualDyelotModel..ctor() 位置 C:\Users\Administrator\source\repos\SunlightCentralizedControlManagement(SCCM)\ViewModel\ManualDyelotModel.cs:行号 35
|
||||
@@ -0,0 +1,20 @@
|
||||
[2025-08-28 17:45:02];[Error] ||
|
||||
|
||||
[2025-08-28 17:45:02];[Error source] ||.Net SqlClient Data Provider
|
||||
|
||||
[2025-08-28 17:45:02];[Error message] ||在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: Named Pipes Provider, error: 40 - 无法打开到 SQL Server 的连接)
|
||||
|
||||
[2025-08-28 17:45:02];[Error area] || 在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling, SqlAuthenticationProviderManager sqlAuthProviderManager)
|
||||
在 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
|
||||
在 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
|
||||
在 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
|
||||
在 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
|
||||
在 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
|
||||
在 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
|
||||
在 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
|
||||
在 System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
|
||||
在 System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
|
||||
在 System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
|
||||
在 System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
|
||||
在 System.Data.SqlClient.SqlConnection.Open()
|
||||
在 SunlightCentralizedControlManagement_SCCM_.ViewModel.ManualDyelotModel..ctor() 位置 C:\Users\Administrator\source\repos\SunlightCentralizedControlManagement(SCCM)\ViewModel\ManualDyelotModel.cs:行号 35
|
||||
@@ -0,0 +1,64 @@
|
||||
<UserControl x:Class="SunlightCentralizedControlManagement_SCCM_.EX.DispenseState"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:SunlightCentralizedControlManagement_SCCM_.EX"
|
||||
xmlns:lang="clr-namespace:SunlightCentralizedControlManagement_SCCM_.Properties"
|
||||
xmlns:viewmodel="clr-namespace:SunlightCentralizedControlManagement_SCCM_.ViewModel"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="450" d:DesignWidth="800">
|
||||
<Grid>
|
||||
<DataGrid x:Name="Grid_data" AlternationCount="2" IsReadOnly="True" d:ItemsSource="{d:SampleData ItemCount=99}"
|
||||
Background="White" HorizontalGridLinesBrush="#FFC9C9C9" VerticalGridLinesBrush="#FFC9C9C9"
|
||||
GridLinesVisibility="All" ColumnHeaderHeight="40"
|
||||
Grid.ColumnSpan="2" CanUserResizeRows="False" AutoGenerateColumns="False" MinColumnWidth="30"
|
||||
CanUserAddRows="False" CanUserDeleteRows="False" HeadersVisibility ="Column" SelectionMode="Single" BorderBrush="#FFC9C9C9" FontSize="16" BorderThickness="5,5,5,5" >
|
||||
<DataGrid.RowStyle >
|
||||
<Style TargetType="{x:Type DataGridRow}">
|
||||
<Setter Property="Height" Value="25" />
|
||||
<Setter Property="FontSize" Value="15" />
|
||||
<Style.Triggers>
|
||||
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
|
||||
<Setter Property="Background" Value="#FFFFFFFF" />
|
||||
</Trigger>
|
||||
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
|
||||
<Setter Property="Background" Value="#FFF0F0F0" />
|
||||
</Trigger>
|
||||
<Trigger Property="IsMouseOver" Value="False"/>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</DataGrid.RowStyle>
|
||||
<DataGrid.CellStyle>
|
||||
<Style TargetType="DataGridCell">
|
||||
<Setter Property="BorderThickness" Value="0"/>
|
||||
<Setter Property="MinWidth" Value="20"/>
|
||||
<Style.Triggers>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Setter Property="Background" Value="#FFC0C0C0"/>
|
||||
<Setter Property="BorderBrush" Value="#FFC0C0C0"/>
|
||||
<Setter Property="Foreground" Value="Black"/>
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</DataGrid.CellStyle>
|
||||
<DataGrid.Columns>
|
||||
<!--列信息绑定-->
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.ID}" Binding="{Binding ID}" Width="80" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Machine}" Binding="{Binding Machine}" Width="100" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Dyelot}" Binding="{Binding Dyelot}" Width="200" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Redye}" Binding="{Binding ReDye}" Width="80" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Step}" Binding="{Binding StepNumber}" Width="80" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Time}" Binding="{Binding CreationTime}" Width="200" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.ProductCode}" Binding="{Binding ProductCode}" Width="200" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.ProductName}" Binding="{Binding ProductName}" Width="200" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Grams}" Binding="{Binding Weight}" Width="200" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.State}" Binding="{Binding State}" Width="100" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Volume}" Binding="{Binding Volume}" Width="100" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.DispenseModule}" Binding="{Binding DispenseModule}" Width="100" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.StartTime}" Binding="{Binding DispenseStartTime}" Width="200" IsReadOnly="True" />
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,69 @@
|
||||
using SunlightCentralizedControlManagement_SCCM_.UserClass;
|
||||
using SunlightCentralizedControlManagement_SCCM_.ViewModel;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlClient;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.EX
|
||||
{
|
||||
/// <summary>
|
||||
/// DispenseState.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class DispenseState : UserControl
|
||||
{
|
||||
public DispenseState()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
public async void State(object dat,string mac)
|
||||
{
|
||||
string Connstr_SC;
|
||||
string WaitChemical_WaitDispenseDyestuff;
|
||||
string DAT = mac.Substring(0,3);
|
||||
if (DAT == "252")
|
||||
{
|
||||
WaitChemical_WaitDispenseDyestuff = "SELECT * FROM [dbo].[WaitDispenseDyestuff] WHERE DispenseMachine = '" + dat + "'";
|
||||
}
|
||||
else
|
||||
{
|
||||
WaitChemical_WaitDispenseDyestuff = "SELECT * FROM [dbo].[WaitChemical] WHERE DispenseMachine = '" + dat + "'";
|
||||
}
|
||||
try
|
||||
{
|
||||
if (MainWindowViewModel.SQMOD == "Windows Authentication")
|
||||
{
|
||||
Connstr_SC = "server=" + MainWindowViewModel.SQLIP + ";database=" + MainWindowViewModel.SQLNAME + ";Trusted_Connection=SSPI";
|
||||
}
|
||||
else
|
||||
{
|
||||
Connstr_SC = "server=" + MainWindowViewModel.SQLIP + ";database=" + MainWindowViewModel.SQLNAME + ";User ID=" + MainWindowViewModel.SQLUSER + ";Password=" + MainWindowViewModel.SQLPASWORD;
|
||||
}
|
||||
SqlConnection conn_SC = new SqlConnection(Connstr_SC);
|
||||
await conn_SC.OpenAsync(); //连接数据库
|
||||
SqlDataAdapter WaitChemical_data = new SqlDataAdapter(WaitChemical_WaitDispenseDyestuff, Connstr_SC); //查询
|
||||
conn_SC.Close();
|
||||
|
||||
DataTable ds = new DataTable();//载入信息
|
||||
WaitChemical_data.Fill(ds);
|
||||
Grid_data.ItemsSource = ds.DefaultView;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogGing.ERRDATA(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
using LiveChartsCore.Kernel;
|
||||
using SunlightCentralizedControlManagement_SCCM_.UserClass;
|
||||
using SunlightCentralizedControlManagement_SCCM_.ViewModel;
|
||||
using SunlightCentralizedControlManagement_SCCM_.WindowsView;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.IO;
|
||||
using System.Runtime.Remoting;
|
||||
using System.Runtime.Remoting.Contexts;
|
||||
using System.Security.Principal;
|
||||
using System.Threading.Tasks;
|
||||
using TouchSocket.Core;
|
||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement.TaskbarClock;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.EX.Exchange
|
||||
{
|
||||
public class BDC_SQL
|
||||
{
|
||||
public class BDCSqlHelper
|
||||
{
|
||||
// SqlConnection conn_SC = new SqlConnection();//数据库
|
||||
string db;
|
||||
public void Config(string IP, string DATABASE, string USER, string PAWSSD, bool MODE)//连接dbc数据库
|
||||
{
|
||||
if (MODE) //连接数据库测试
|
||||
{
|
||||
db="server=" + IP + ";database=" + DATABASE + ";Trusted_Connection=SSPI";
|
||||
}
|
||||
else
|
||||
{
|
||||
db="server=" + IP + ";database=" + DATABASE + ";User ID=" + USER + ";Password=" + PAWSSD;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<int> UPDATA(string name,string where,DataRow entity)//dbc数据库
|
||||
{
|
||||
string DAT = null;
|
||||
int rowsAffected = 0;
|
||||
int type = 0;
|
||||
try { type = entity.Field<int>("Type"); } catch { }
|
||||
try
|
||||
{
|
||||
|
||||
DAT = "DispenseDyelot='" + entity.Field<string>("Dyelot") + "',DispenseReDye='" + entity.Field<int>("Redye")+"',";
|
||||
if (type == 2)
|
||||
{
|
||||
DAT = DAT+"DyeCallOff=" + entity.Field<int>("Step") + ",DyeState = 201,DyeTank=" +
|
||||
entity.Field<int>("Tank");
|
||||
}
|
||||
else if (type == 3)
|
||||
{
|
||||
DAT = DAT+"PowderCallOff=" + entity.Field<int>("Step") +",PowderState=201,PowderTank=" +
|
||||
entity.Field<int>("Tank");
|
||||
}
|
||||
else
|
||||
{
|
||||
DAT = DAT+"ChemicalCallOff=" + entity.Field<int>("Step") +",ChemicalState=201,ChemicalTank=" +
|
||||
entity.Field<int>("Tank");
|
||||
}
|
||||
|
||||
using (var connection = new SqlConnection(db))
|
||||
{
|
||||
await connection.OpenAsync();
|
||||
var command = connection.CreateCommand();
|
||||
command.CommandText = "UPDATE "+ name + " SET "+ DAT + " WHERE "+ where;
|
||||
// command.Parameters.AddWithValue("@table", name);
|
||||
// command.Parameters.AddWithValue("@Id", where);
|
||||
// command.Parameters.AddWithValue("@data", DAT);
|
||||
rowsAffected = await command.ExecuteNonQueryAsync();
|
||||
|
||||
LogGing.ExchangeDATA( command.CommandText.ToString());
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogGing.ERRDATA(ex);
|
||||
}
|
||||
return rowsAffected;
|
||||
}
|
||||
|
||||
public async Task<DataTable> SELECT(string name, string where)//dbc数据库
|
||||
{
|
||||
DataTable rowsAffected = new DataTable();
|
||||
try
|
||||
{
|
||||
using (var connection = new SqlConnection(db))
|
||||
{
|
||||
await connection.OpenAsync();
|
||||
var command = connection.CreateCommand();
|
||||
command.CommandText = "SELECT * FROM " + name + " WHERE " + where;
|
||||
var dat = await command.ExecuteReaderAsync();
|
||||
rowsAffected.Load(dat);
|
||||
|
||||
LogGing.ExchangeDATA(command.CommandText.ToString());
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogGing.ERRDATA(ex);
|
||||
}
|
||||
return rowsAffected;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,124 @@
|
||||
<Window x:Class="SunlightCentralizedControlManagement_SCCM_.EX.ManualDyelot"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:SunlightCentralizedControlManagement_SCCM_.EX"
|
||||
xmlns:lang="clr-namespace:SunlightCentralizedControlManagement_SCCM_.Properties"
|
||||
xmlns:viewmodel="clr-namespace:SunlightCentralizedControlManagement_SCCM_.ViewModel"
|
||||
xmlns:System="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:core="clr-namespace:System;assembly=netstandard"
|
||||
d:DataContext="{d:DesignInstance Type=viewmodel:ManualDyelotModel}"
|
||||
mc:Ignorable="d" ResizeMode="NoResize" WindowStyle="None" WindowStartupLocation="CenterScreen"
|
||||
Title="ManualDyelot" Height="960" Width="1280">
|
||||
<Window.Resources>
|
||||
<viewmodel:ManualDyelotModel x:Key="ManualDyelotModel"/>
|
||||
</Window.Resources>
|
||||
<Grid Background="#FFC9C9C9">
|
||||
<Grid Margin="5,5,5,5" Background="White">
|
||||
<DataGrid x:Name="Grid_data" AlternationCount="2" d:ItemsSource="{d:SampleData ItemCount=99}"
|
||||
Background="White" HorizontalGridLinesBrush="#FFC9C9C9" VerticalGridLinesBrush="#FFC9C9C9"
|
||||
GridLinesVisibility="All" ColumnHeaderHeight="50" BorderThickness="0,0,5,0"
|
||||
Grid.ColumnSpan="2" CanUserResizeRows="False" AutoGenerateColumns="False" MinColumnWidth="30"
|
||||
CanUserAddRows="False" CanUserDeleteRows="False" HeadersVisibility ="Column"
|
||||
SelectionMode="Single" FontSize="20" Margin="5,5,500,5">
|
||||
<DataGrid.RowStyle >
|
||||
<Style TargetType="{x:Type DataGridRow}">
|
||||
<Setter Property="Height" Value="35" />
|
||||
<Setter Property="FontSize" Value="20" />
|
||||
<Style.Triggers>
|
||||
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
|
||||
<Setter Property="Background" Value="#FFFFFFFF" />
|
||||
</Trigger>
|
||||
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
|
||||
<Setter Property="Background" Value="#FFF0F0F0" />
|
||||
</Trigger>
|
||||
<Trigger Property="IsMouseOver" Value="False"/>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</DataGrid.RowStyle>
|
||||
<DataGrid.CellStyle>
|
||||
<Style TargetType="DataGridCell">
|
||||
<Setter Property="BorderThickness" Value="0"/>
|
||||
<Setter Property="MinWidth" Value="20"/>
|
||||
<Style.Triggers>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Setter Property="Background" Value="#FFC0C0C0"/>
|
||||
<Setter Property="BorderBrush" Value="#FFC0C0C0"/>
|
||||
<Setter Property="Foreground" Value="Black"/>
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</DataGrid.CellStyle>
|
||||
<DataGrid.Columns>
|
||||
<!--列信息绑定-->
|
||||
<DataGridTemplateColumn Header="{x:Static lang:Resources.ProductCode}" Width="200" MaxWidth="400" MinWidth="100" IsReadOnly="False">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<ComboBox x:Name="CP_PRODUCT_CODE" BorderThickness="0,0,0,0"
|
||||
ItemsSource="{Binding stuff_Product, Source={StaticResource ManualDyelotModel}}"
|
||||
DisplayMemberPath="ProductCode"
|
||||
Text="{Binding PRODUCT_CODE}" IsTextSearchEnabled="True" StaysOpenOnEdit="True"
|
||||
BorderBrush="{x:Null}" Background="{x:Null}"
|
||||
DropDownClosed="CP_PRODUCT_CODE_DropDownClosed">
|
||||
</ComboBox>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
<DataGridTemplateColumn Header="{x:Static lang:Resources.ProcessName}" Width="200" MaxWidth="400" MinWidth="100" >
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<ComboBox x:Name="CP_PRODUCT_NAME" BorderThickness="0,0,0,0"
|
||||
ItemsSource="{Binding stuff_Product, Source={StaticResource ManualDyelotModel}}"
|
||||
DisplayMemberPath="ProductName"
|
||||
Text="{Binding PRODUCT_NAME}"
|
||||
DropDownClosed="CP_PRODUCT_NAME_DropDownClosed"
|
||||
BorderBrush="{x:Null}" Background="{x:Null}" Focusable="True" IsTabStop="False"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="{x:Static lang:Resources.Grams}" Width="200" MaxWidth="400" MinWidth="100" >
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBox x:Name="CP_CONC" BorderThickness="0,0,0,0" Text="{Binding CONC}"
|
||||
BorderBrush="{x:Null}" Background="{x:Null}"
|
||||
KeyDown="CP_CONC_KeyDown" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
|
||||
<Button x:Name="State" Content="{x:Static lang:Resources.YES}" HorizontalAlignment="Right" Height="55" Margin="0,0,280,10" VerticalAlignment="Bottom" Width="200" Click="State_Click" Padding="0,4,0,4" FontSize="20"/>
|
||||
<Button x:Name="Cancel" Content="{x:Static lang:Resources.Cancel}" HorizontalAlignment="Right" Height="55" Margin="0,0,15,10" VerticalAlignment="Bottom" Width="200" Click="Cancel_Click" Padding="0,4,0,4" FontSize="20"/>
|
||||
|
||||
<TextBlock HorizontalAlignment="Right" Height="50" Margin="10,100,365,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.orders}"
|
||||
VerticalAlignment="Top" Width="130" FontSize="35" Background="#FFEAEAEA"/>
|
||||
<TextBlock HorizontalAlignment="Right" Height="50" Margin="10,100,15,0" TextWrapping="Wrap" x:Name="orders"
|
||||
VerticalAlignment="Top" Width="350" FontSize="35"/>
|
||||
<TextBlock HorizontalAlignment="Right" Height="50" Margin="10,150,365,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.Dyelot}"
|
||||
VerticalAlignment="Top" Width="130" FontSize="35" Background="#FFEAEAEA"/>
|
||||
<TextBlock HorizontalAlignment="Right" Height="50" Margin="10,150,15,0" TextWrapping="Wrap" x:Name="dyelot"
|
||||
VerticalAlignment="Top" Width="350" FontSize="35"/>
|
||||
<Border BorderBrush="#FFE0E0E0" BorderThickness="1" Height="50" VerticalAlignment="Top" Margin="150,200,15,0" HorizontalAlignment="Right" Width="350">
|
||||
<ComboBox Height="50" x:Name="comboBoxMachine" VerticalAlignment="Stretch"
|
||||
FontSize="35" DropDownClosed="comboBoxMachine_DropDownClosed" />
|
||||
</Border>
|
||||
<TextBlock HorizontalAlignment="Right" Height="50" Margin="10,200,365,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.Machine}"
|
||||
VerticalAlignment="Top" Width="130" FontSize="35" Background="#FFEAEAEA"/>
|
||||
<Border BorderBrush="#FFE0E0E0" BorderThickness="1" Height="50" VerticalAlignment="Top" Margin="150,250,15,0" HorizontalAlignment="Right" Width="350">
|
||||
<ComboBox Height="50" x:Name="comboBoxtank" VerticalAlignment="Stretch" FontSize="35" />
|
||||
</Border>
|
||||
<TextBlock HorizontalAlignment="Right" Height="50" Margin="10,250,365,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.Tank}"
|
||||
VerticalAlignment="Top" Width="130" FontSize="35" Background="#FFEAEAEA"/>
|
||||
<Border BorderBrush="#FFE0E0E0" BorderThickness="1" Height="50" VerticalAlignment="Top" Margin="150,300,15,0" HorizontalAlignment="Right" Width="350">
|
||||
<TextBox Height="50" x:Name="comboBoxTotal" VerticalAlignment="Stretch" FontSize="35" />
|
||||
</Border>
|
||||
<TextBlock HorizontalAlignment="Right" Height="50" Margin="10,300,365,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.Total}"
|
||||
VerticalAlignment="Top" Width="130" FontSize="35" Background="#FFEAEAEA"/>
|
||||
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Window>
|
||||
@@ -0,0 +1,334 @@
|
||||
using SunlightCentralizedControlManagement_SCCM_.UserClass;
|
||||
using SunlightCentralizedControlManagement_SCCM_.ViewModel;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlClient;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Reflection;
|
||||
using System.Xml.Linq;
|
||||
using DyeingComputer.UserClass;
|
||||
using System.Windows.Forms;
|
||||
using SunlightCentralizedControlManagement_SCCM_.WindowsView;
|
||||
using OpenTK.Graphics.OpenGL;
|
||||
using ScottPlot.TickGenerators.TimeUnits;
|
||||
using static SunlightCentralizedControlManagement_SCCM_.UserClass.SqliteHelper;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.EX
|
||||
{
|
||||
/// <summary>
|
||||
/// ManualDyelot.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class ManualDyelot : Window
|
||||
{
|
||||
|
||||
DataTable dyelotdat = new DataTable();
|
||||
public static string Machines;
|
||||
DataTable mach = new DataTable();
|
||||
DataTable RRODUCTdataTable = new DataTable(); //建立RRODUCT缓存
|
||||
int ID_N = 1;
|
||||
int type_;
|
||||
DateTime time = DateTime.Now;
|
||||
public ManualDyelot()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
State.IsEnabled = false;
|
||||
string[] strings = { "0", "1", "2", "3" };
|
||||
comboBoxtank.ItemsSource = strings;
|
||||
comboBoxtank.Text = "0";
|
||||
comboBoxTotal.Text = "0";
|
||||
int mrc = MainWindowViewModel.Machines.Rows.Count;
|
||||
string[] stringsM = new string[mrc];
|
||||
for (int i = 0; i < mrc; i++)
|
||||
{
|
||||
stringsM[i] = MainWindowViewModel.Machines.Rows[i]["name"].ToString();
|
||||
}
|
||||
comboBoxMachine.ItemsSource = stringsM;
|
||||
dyelot.Text = "00_" + DateTime.Now.ToString("yyMMddHHmmss");
|
||||
RRODUCTdataTable.Columns.Add("ID", typeof(int));
|
||||
RRODUCTdataTable.Columns.Add("DYELOT", typeof(string));
|
||||
RRODUCTdataTable.Columns.Add("ReDye", typeof(int));
|
||||
RRODUCTdataTable.Columns.Add("STEP", typeof(int));
|
||||
RRODUCTdataTable.Columns.Add("ProductType", typeof(int));
|
||||
RRODUCTdataTable.Columns.Add("Created", typeof(string));
|
||||
RRODUCTdataTable.Columns.Add("PRODUCT_CODE", typeof(string));
|
||||
RRODUCTdataTable.Columns.Add("PRODUCT_NAME", typeof(string));
|
||||
RRODUCTdataTable.Columns.Add("TARGET_WT", typeof(float));
|
||||
RRODUCTdataTable.Columns.Add("Amount", typeof(string));
|
||||
RRODUCTdataTable.Columns.Add("UNIT", typeof(string));
|
||||
DataRow row = RRODUCTdataTable.NewRow(); //ID列
|
||||
row["ID"] = ID_N;
|
||||
row["DYELOT"] = dyelot.Text;
|
||||
row["ReDye"] = 0;
|
||||
row["STEP"] = "1";
|
||||
row["ProductType"] = type_;
|
||||
row["Created"] = time;
|
||||
row["UNIT"] = "g";
|
||||
RRODUCTdataTable.Rows.Add(row);
|
||||
Grid_data.ItemsSource = RRODUCTdataTable.DefaultView;
|
||||
}
|
||||
public void MAC(object Mac,int t)
|
||||
{
|
||||
Machines = Mac.ToString();
|
||||
type_ = t;
|
||||
/* string Connstr_SC;
|
||||
string sql = "SELECT * FROM [dbo].[Pipes] WHERE Dispenser = '" + Machines + "'";
|
||||
|
||||
try
|
||||
{
|
||||
if (MainWindowViewModel.SQMOD == "Windows Authentication")
|
||||
{
|
||||
Connstr_SC = "server=" + MainWindowViewModel.SQLIP + ";database=" + MainWindowViewModel.SQLNAME + ";Trusted_Connection=SSPI";
|
||||
}
|
||||
else
|
||||
{
|
||||
Connstr_SC = "server=" + MainWindowViewModel.SQLIP + ";database=" + MainWindowViewModel.SQLNAME + ";User ID=" + MainWindowViewModel.SQLUSER + ";Password=" + MainWindowViewModel.SQLPASWORD;
|
||||
}
|
||||
SqlConnection conn_SC = new SqlConnection(Connstr_SC);
|
||||
await conn_SC.OpenAsync(); //连接数据库
|
||||
new SqlDataAdapter(sql, Connstr_SC).Fill(dyelotdat);
|
||||
// SqlDataAdapter _data = new SqlDataAdapter(sql, Connstr_SC); //查询
|
||||
conn_SC.Close();
|
||||
|
||||
for (int i = 0; i < dyelotdat.Rows.Count; i++)
|
||||
{
|
||||
SelectProductCode.Add(dyelotdat.Rows[i].Field<string>("ProductCode"));
|
||||
SelectProductName.Add(dyelotdat.Rows[i].Field<string>("ProductName"));
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogGing.ERRDATA(ex);
|
||||
}*/
|
||||
}
|
||||
|
||||
private async void State_Click(object sender, RoutedEventArgs e)//确认按键
|
||||
{
|
||||
int t = RRODUCTdataTable.Rows.Count; //获取数据行包含空白行
|
||||
RRODUCTdataTable.Rows[t - 1].Delete();
|
||||
RRODUCTdataTable.AcceptChanges();
|
||||
if (string.IsNullOrEmpty(comboBoxMachine.Text)) return;//未输入机台时返回
|
||||
try
|
||||
{
|
||||
Dictionary<string, object> Dyelot_DAT = new Dictionary<string, object>();//缓存函数
|
||||
for (int x = 0; x < RRODUCTdataTable.Rows.Count; x++)
|
||||
{
|
||||
Dyelot_DAT.Add("WorkOrder", orders.Text);
|
||||
Dyelot_DAT.Add("Dyelot", RRODUCTdataTable.Rows[x]["Dyelot"]);
|
||||
Dyelot_DAT.Add("Redye", RRODUCTdataTable.Rows[x]["Redye"]);
|
||||
Dyelot_DAT.Add("Step", RRODUCTdataTable.Rows[x]["Step"]);
|
||||
Dyelot_DAT.Add("TIME", RRODUCTdataTable.Rows[x]["Created"]);
|
||||
Dyelot_DAT.Add("Tank", comboBoxtank.Text);
|
||||
Dyelot_DAT.Add("State", "201");
|
||||
Dyelot_DAT.Add("Machine", comboBoxMachine.Text);
|
||||
Dyelot_DAT.Add("ProductCode", RRODUCTdataTable.Rows[x]["PRODUCT_CODE"]);
|
||||
Dyelot_DAT.Add("ProductName", RRODUCTdataTable.Rows[x]["PRODUCT_NAME"]);
|
||||
Dyelot_DAT.Add("ProductType", RRODUCTdataTable.Rows[x]["ProductType"]);
|
||||
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"]);
|
||||
MainWindowViewModel.SQLiteHelpers.InsertData("Dyelot", Dyelot_DAT);//行插入
|
||||
Dyelot_DAT.Clear();
|
||||
}
|
||||
|
||||
LogGing.ExchangeDATA("Dyelot=" + dyelot.Text + ";Machine=" + comboBoxMachine.Text +
|
||||
";Program=------;User=" + MainWindowViewModel.USER_data + ";");
|
||||
|
||||
|
||||
string Connstr_SC;
|
||||
if (MainWindowViewModel.SQMOD == "Windows Authentication")
|
||||
{
|
||||
Connstr_SC = "server=" + MainWindowViewModel.SQLIP + ";database=" + MainWindowViewModel.SQLNAME + ";Trusted_Connection=SSPI";
|
||||
}
|
||||
else
|
||||
{
|
||||
Connstr_SC = "server=" + MainWindowViewModel.SQLIP + ";database=" + MainWindowViewModel.SQLNAME + ";User ID=" + MainWindowViewModel.SQLUSER + ";Password=" + MainWindowViewModel.SQLPASWORD;
|
||||
}
|
||||
SqlConnection destinationConnection = new SqlConnection(Connstr_SC); //创建一个数据库连接;
|
||||
await destinationConnection.OpenAsync(); //打开连接
|
||||
|
||||
//写总览
|
||||
string dyelots_sql = string.Format("INSERT INTO [dbo].[DYELOTS]([Dyelot] ,[ReDye] , [OrderNo] , [Machine] ,[DispenseMachine] ,[UserAccount] ) " +
|
||||
"VALUES ('" + dyelot.Text + "','0','" + orders.Text + "','" + comboBoxMachine.Text + "','" + comboBoxMachine.Text + "','" + MainWindow.user_ + "')");
|
||||
SqlCommand INSERT_cmd = new SqlCommand(dyelots_sql, destinationConnection);
|
||||
int dyelots_sqlIN = INSERT_cmd.ExecuteNonQuery(); //执行语句
|
||||
|
||||
//写明细
|
||||
SqlBulkCopy bulkCopy = new SqlBulkCopy(destinationConnection);// 实例化 sqlbulkcopy;
|
||||
bulkCopy.DestinationTableName = "dbo.DyelotsBulkedRecipe";// 目标表名称/
|
||||
bulkCopy.ColumnMappings.Add("DYELOT", "Dyelot");
|
||||
bulkCopy.ColumnMappings.Add("ReDye", "ReDye");
|
||||
bulkCopy.ColumnMappings.Add("STEP", "StepNumber");
|
||||
bulkCopy.ColumnMappings.Add("PRODUCT_CODE", "ProductCode");
|
||||
bulkCopy.ColumnMappings.Add("PRODUCT_NAME", "ProductName");
|
||||
bulkCopy.ColumnMappings.Add("ProductType", "ProductType");
|
||||
bulkCopy.ColumnMappings.Add("Created", "Created");
|
||||
bulkCopy.ColumnMappings.Add("Amount", "Amount");
|
||||
bulkCopy.ColumnMappings.Add("TARGET_WT", "Grams");
|
||||
bulkCopy.WriteToServer(RRODUCTdataTable); //将传入的数据写到数据库;
|
||||
|
||||
string mac_sql = string.Format("UPDATE [dbo].[Machines] SET DispenseDyelot='" + dyelot.Text
|
||||
+ "',DispenseReDye='0',ChemicalCallOff=1,ChemicalState=201,ChemicalTank='" + comboBoxtank.Text
|
||||
+ "' WHERE NAME='" + comboBoxMachine.Text + "'");
|
||||
SqlCommand UPDATE_mac = new SqlCommand(mac_sql, destinationConnection);
|
||||
int mac_ = UPDATE_mac.ExecuteNonQuery(); //执行语句
|
||||
if (mac_ == 0) System.Windows.Forms.MessageBox.Show(Properties.Resources.Not_M);
|
||||
destinationConnection.Close();
|
||||
|
||||
this.Close();//退出页面
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogGing.ERRDATA(ex);
|
||||
System.Windows.Forms.MessageBox.Show(ex.Message.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBoxMachine_DropDownClosed(object sender, EventArgs e)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(comboBoxMachine.Text))
|
||||
{
|
||||
string Macht= MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "WorkOrder", "NAME = '" + comboBoxMachine.Text + "'").ToString();
|
||||
|
||||
if (Macht != "------")
|
||||
{
|
||||
orders.Text = Macht;
|
||||
}
|
||||
else
|
||||
{
|
||||
orders.Text = dyelot.Text;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Cancel_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
public ObservableCollection<string> SelectProductCode
|
||||
{
|
||||
get { return _selectProductCode; }
|
||||
set { _selectProductCode = value; }
|
||||
}
|
||||
private ObservableCollection<string> _selectProductCode = new ObservableCollection<string>();
|
||||
public ObservableCollection<string> SelectProductName
|
||||
{
|
||||
get { return _selectProductName; }
|
||||
set { _selectProductName = value; }
|
||||
}
|
||||
private ObservableCollection<string> _selectProductName = new ObservableCollection<string>();
|
||||
|
||||
string Code_;
|
||||
string Name_;
|
||||
|
||||
private void CP_PRODUCT_CODE_DropDownClosed(object sender, EventArgs e)//代码选择事件
|
||||
{
|
||||
State.IsEnabled = false;
|
||||
System.Windows.Controls.ComboBox curComboBox = sender as System.Windows.Controls.ComboBox;
|
||||
int grid_row = Grid_data.SelectedIndex; //获取当前行
|
||||
|
||||
Code_ = curComboBox.Text.TrimEnd();
|
||||
|
||||
DataRow[] r = ManualDyelotModel.STUFFdataTable.Select("ProductCode ='" + Code_ + "'"); //查询判断原料代码是否有效
|
||||
if (!r.Any()) //检查原料信息
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
int ID_ = grid_row + 1;
|
||||
DataRow[] c = RRODUCTdataTable.Select("PRODUCT_CODE ='" + Code_ + "'and ID <> '" + ID_ + "'");//查询判断原料代码是否重复
|
||||
if (c.Any())
|
||||
{
|
||||
curComboBox.Text = null;
|
||||
System.Windows.MessageBox.Show(Properties.Resources.RTRM);
|
||||
return;
|
||||
}
|
||||
|
||||
Name_ = r[0].ItemArray[1].ToString();
|
||||
|
||||
if (grid_row == -1) grid_row = 0;
|
||||
DataRow row = RRODUCTdataTable.Rows[grid_row]; //ID列
|
||||
row.BeginEdit();
|
||||
row["PRODUCT_CODE"] = Code_;
|
||||
row["PRODUCT_NAME"] = Name_;
|
||||
row.EndEdit();
|
||||
DataGridHelper.SetRealTimeCommit(Grid_data, true); //实时更新datagrid
|
||||
}
|
||||
|
||||
private void CP_PRODUCT_NAME_DropDownClosed(object sender, EventArgs e)//选择原料事件
|
||||
{
|
||||
State.IsEnabled = false;
|
||||
System.Windows.Controls.ComboBox curComboBox = sender as System.Windows.Controls.ComboBox;
|
||||
int grid_row = Grid_data.SelectedIndex; //获取当前行
|
||||
|
||||
if (curComboBox.Text != "")
|
||||
{
|
||||
Name_ = curComboBox.Text.TrimEnd();
|
||||
|
||||
DataRow[] r = ManualDyelotModel.STUFFdataTable.Select("ProductName ='" + Name_ + "'"); //查询判断原料代码是否有效
|
||||
|
||||
DataRow[] c = RRODUCTdataTable.Select("PRODUCT_NAME ='" + Name_ + "'");//查询判断原料代码是否重复
|
||||
if (c.Any())
|
||||
{
|
||||
curComboBox.Text = null;
|
||||
System.Windows.MessageBox.Show(Properties.Resources.RTRM);
|
||||
return;
|
||||
}
|
||||
Code_ = r[0].ItemArray[0].ToString();
|
||||
|
||||
if (grid_row == -1) grid_row = 0;
|
||||
DataRow row = RRODUCTdataTable.Rows[grid_row]; //ID列
|
||||
row.BeginEdit();
|
||||
row["PRODUCT_CODE"] = Code_;
|
||||
row["PRODUCT_NAME"] = Name_;
|
||||
row.EndEdit();
|
||||
}
|
||||
}
|
||||
|
||||
private void CP_CONC_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)//输入目标量事件
|
||||
{
|
||||
System.Windows.Controls.TextBox textBox = sender as System.Windows.Controls.TextBox;
|
||||
int grid_row = Grid_data.SelectedIndex; //获取当前行
|
||||
if (string.IsNullOrEmpty(textBox.Text)) return;
|
||||
if (e.Key == Key.Enter)
|
||||
{
|
||||
if (grid_row == -1) grid_row = 0;
|
||||
DataRow row = RRODUCTdataTable.Rows[grid_row];
|
||||
if (string.IsNullOrEmpty(row["PRODUCT_CODE"].ToString()))
|
||||
{
|
||||
textBox.Text = null;
|
||||
return;
|
||||
}
|
||||
row.BeginEdit();
|
||||
row["Amount"] = textBox.Text + "g";
|
||||
row["TARGET_WT"] = textBox.Text;
|
||||
row.EndEdit();
|
||||
|
||||
ID_N++;
|
||||
DataRow rowadd = RRODUCTdataTable.NewRow(); //ID列
|
||||
rowadd["ID"] = ID_N;
|
||||
rowadd["DYELOT"] = dyelot.Text;
|
||||
rowadd["ReDye"] = 0;
|
||||
rowadd["STEP"] = "1";
|
||||
row["ProductType"] = type_;
|
||||
rowadd["Created"] = time;
|
||||
rowadd["UNIT"] = "g";
|
||||
RRODUCTdataTable.Rows.Add(rowadd);
|
||||
State.IsEnabled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<Window x:Class="SunlightCentralizedControlManagement_SCCM_.EX.VNC"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:SunlightCentralizedControlManagement_SCCM_.EX"
|
||||
xmlns:lang="clr-namespace:SunlightCentralizedControlManagement_SCCM_.Properties"
|
||||
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
|
||||
xmlns:rdp="clr-namespace:VncSharpWpf;assembly=VncSharpWpf"
|
||||
mc:Ignorable="d" Loaded="Window_Loaded"
|
||||
Title="VNC" Height="1140" Width="1920">
|
||||
<Grid Margin="0,0,0,0">
|
||||
<Button x:Name="Save" Content="{x:Static lang:Resources.Cancel}" HorizontalAlignment="Right" Height="35" Margin="450,0,50,10" VerticalAlignment="Bottom" Width="80" Click="Save_Click"/>
|
||||
<TextBlock x:Name="log" VerticalAlignment="Bottom" Text="LINK-------" Margin="0,0,0,10" HorizontalAlignment="Left" Width="600" Height="35" FontSize="24" FontWeight="Bold" FontStyle="Italic" />
|
||||
<Grid Margin="0,0,0,60">
|
||||
<rdp:RemoteDesktopWpf x:Name="rdp" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
</Window>
|
||||
@@ -0,0 +1,96 @@
|
||||
using SunlightCentralizedControlManagement_SCCM_.View;
|
||||
using SunlightCentralizedControlManagement_SCCM_.EX;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
using System.Net.NetworkInformation;
|
||||
using VncSharpWpf;
|
||||
using System.Net.Sockets;
|
||||
using SunlightCentralizedControlManagement_SCCM_.UserClass;
|
||||
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.EX
|
||||
{
|
||||
/// <summary>
|
||||
/// UserMessage.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class VNC : Window
|
||||
{
|
||||
string host = "127.0.0.1"; // 替换为你的 VNC 服务器地址
|
||||
int port = 5901; // 替换为你的 VNC 服务器端口
|
||||
string password = "123456"; // 替换为你的 VNC 服务器密码
|
||||
|
||||
public VNC()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void Save_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (rdp.IsConnected) { rdp.Disconnect(); }//断开连接
|
||||
this.Close();
|
||||
}
|
||||
|
||||
public void Parameter(object IP, object PROT, object USER, object PASSWD)
|
||||
{
|
||||
host = IP.ToString();
|
||||
port = Convert.ToInt16(PROT);
|
||||
password = PASSWD.ToString();
|
||||
}
|
||||
|
||||
private async void Window_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (await PingTest(host))
|
||||
{
|
||||
if (!rdp.IsConnected)
|
||||
{
|
||||
log.Text = host + " OK";
|
||||
try
|
||||
{
|
||||
rdp.VncPort = port;
|
||||
rdp.Passwd = password;
|
||||
rdp.Connect(host, false, false);
|
||||
|
||||
//rdp.SetScalingMode(false);//自动缩放全屏
|
||||
// rdp.SetInputMode(false);//可交互
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogGing.ERRDATA(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async Task<bool> PingTest(string ip)
|
||||
{
|
||||
bool result = false;
|
||||
Ping pingSender = new Ping();
|
||||
|
||||
try
|
||||
{
|
||||
PingReply reply = await pingSender.SendPingAsync(ip, 3000);
|
||||
|
||||
if (reply.Status == IPStatus.Success)
|
||||
{
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
catch (PingException)
|
||||
{
|
||||
result = false;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
<Window x:Class="SunlightCentralizedControlManagement_SCCM_.KEY.TouchKeyboard"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:SunlightCentralizedControlManagement_SCCM_.WindowsView"
|
||||
mc:Ignorable="d" WindowStyle="None" ResizeMode="NoResize" Topmost="True"
|
||||
WindowStartupLocation="CenterScreen"
|
||||
Title="TouchKeyboard" Height="500" Width="750">
|
||||
<Window.Resources>
|
||||
<Style x:Key="KeyButtonStyle" TargetType="Button">
|
||||
<Setter Property="Background" Value="#FFF0F0F0"/>
|
||||
<Setter Property="BorderBrush" Value="#FFCCCCCC"/>
|
||||
<Setter Property="BorderThickness" Value="1"/>
|
||||
<Setter Property="FontSize" Value="20"/>
|
||||
<Setter Property="FontWeight" Value="Bold"/>
|
||||
<Setter Property="Margin" Value="2"/>
|
||||
<Setter Property="MinWidth" Value="60"/>
|
||||
<Setter Property="MinHeight" Value="40"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="Button">
|
||||
<Border x:Name="border"
|
||||
Background="{TemplateBinding Background}"
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="{TemplateBinding BorderThickness}"
|
||||
CornerRadius="4">
|
||||
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Border>
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger Property="IsPressed" Value="True">
|
||||
<Setter Property="Background" Value="#FFDDDDDD"/>
|
||||
</Trigger>
|
||||
</ControlTemplate.Triggers>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="SpecialKeyButtonStyle" BasedOn="{StaticResource KeyButtonStyle}" TargetType="Button">
|
||||
<Setter Property="Background" Value="#FFE0E0E0"/>
|
||||
<Setter Property="FontSize" Value="16"/>
|
||||
</Style>
|
||||
</Window.Resources>
|
||||
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- 预览区域 -->
|
||||
<TextBox x:Name="PreviewTextBox" Grid.Row="0" Height="60" Margin="10"
|
||||
FontSize="24" VerticalContentAlignment="Center" IsReadOnly="False"/>
|
||||
|
||||
<!-- 键盘主体区域 -->
|
||||
<Grid Grid.Row="1" Margin="10">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- 数字行 -->
|
||||
<StackPanel Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center">
|
||||
<Button Content="1" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="2" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="3" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="4" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="5" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="6" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="7" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="8" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="9" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="0" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="DEL" Style="{StaticResource SpecialKeyButtonStyle}" Click="Backspace_Click" Width="60"/>
|
||||
</StackPanel>
|
||||
|
||||
<!-- 第一行字母 -->
|
||||
<StackPanel Orientation="Horizontal" Grid.Row="1" HorizontalAlignment="Center">
|
||||
<Button Content="Q" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="W" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="E" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="R" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="T" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="Y" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="U" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="I" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="O" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="P" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
</StackPanel>
|
||||
|
||||
<!-- 第二行字母 -->
|
||||
<StackPanel Orientation="Horizontal" Grid.Row="2" HorizontalAlignment="Center">
|
||||
<Button Content="A" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="S" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="D" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="F" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="G" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="H" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="J" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="K" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="L" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="/" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="HIDE" Style="{StaticResource SpecialKeyButtonStyle}" Click="Hide_Click" Width="60"/>
|
||||
</StackPanel>
|
||||
|
||||
<!-- 第三行字母 -->
|
||||
<StackPanel Orientation="Horizontal" Grid.Row="3" HorizontalAlignment="Center">
|
||||
<Button x:Name="ShiftButton" Content="⇧" Style="{StaticResource SpecialKeyButtonStyle}" Click="Shift_Click" Width="60"/>
|
||||
<Button Content="Z" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="X" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="C" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="V" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="B" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="N" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="M" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="." Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="ENTER" Style="{StaticResource SpecialKeyButtonStyle}" Click="Enter_Click" Width="120"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
<!-- 状态栏 -->
|
||||
<StatusBar Grid.Row="2">
|
||||
<StatusBarItem>
|
||||
<TextBlock x:Name="StatusTextBlock" Text="就绪"/>
|
||||
</StatusBarItem>
|
||||
</StatusBar>
|
||||
</Grid>
|
||||
</Window>
|
||||
@@ -0,0 +1,116 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
using static SunlightCentralizedControlManagement_SCCM_.KEY.TouchKeyboardNumeral;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.KEY
|
||||
{
|
||||
/// <summary>
|
||||
/// TouchKeyboard.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class TouchKeyboard : Window
|
||||
{
|
||||
private bool isShiftActive = false;
|
||||
public string KeyValue;
|
||||
public event EventHandler<KeyPressedEventArgs> KeyPressed;
|
||||
|
||||
public TouchKeyboard()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void KeyButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Button button = sender as Button;
|
||||
if (button != null)
|
||||
{
|
||||
string key = button.Content.ToString();
|
||||
|
||||
if (key.Length == 1 && char.IsLetter(key[0]))
|
||||
{
|
||||
key = isShiftActive ? key.ToUpper() : key.ToLower();
|
||||
}
|
||||
|
||||
PreviewTextBox.Text += key;
|
||||
|
||||
// 输入后关闭Shift状态
|
||||
if (isShiftActive)
|
||||
{
|
||||
isShiftActive = false;
|
||||
UpdateButtonAppearance();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Shift_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
isShiftActive = !isShiftActive;
|
||||
UpdateButtonAppearance();
|
||||
}
|
||||
|
||||
private void Backspace_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(PreviewTextBox.Text))
|
||||
{
|
||||
PreviewTextBox.Text = PreviewTextBox.Text.Substring(0, PreviewTextBox.Text.Length - 1);
|
||||
}
|
||||
}
|
||||
|
||||
private void Enter_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// 触发回车事件
|
||||
KeyPressed?.Invoke(this, new KeyPressedEventArgs(KeyType.Enter, PreviewTextBox.Text));
|
||||
|
||||
this.Close();
|
||||
// PreviewTextBox.Text += Environment.NewLine;
|
||||
}
|
||||
|
||||
private void Hide_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
KeyPressed?.Invoke(this, new KeyPressedEventArgs(KeyType.Hide, ""));
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void UpdateButtonAppearance()
|
||||
{
|
||||
// 更新Shift按钮的外观以反映当前状态
|
||||
if (isShiftActive)
|
||||
{
|
||||
ShiftButton.Background = new SolidColorBrush(Colors.LightBlue);
|
||||
}
|
||||
else
|
||||
{
|
||||
ShiftButton.Background = new SolidColorBrush(Color.FromRgb(224, 224, 224));
|
||||
}
|
||||
}
|
||||
|
||||
public class KeyPressedEventArgs : EventArgs
|
||||
{
|
||||
public KeyType KeyType { get; }
|
||||
public string KeyValue { get; }
|
||||
|
||||
public KeyPressedEventArgs(KeyType keyType, string keyValue)
|
||||
{
|
||||
KeyType = keyType;
|
||||
KeyValue = keyValue;
|
||||
}
|
||||
}
|
||||
private void Window_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// 初始化为默认模式
|
||||
// SetKeyboardMode(KeyboardMode.Default);
|
||||
PreviewTextBox.Text = null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
<Window x:Class="SunlightCentralizedControlManagement_SCCM_.KEY.TouchKeyboardNumeral"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:SunlightCentralizedControlManagement_SCCM_.WindowsView"
|
||||
mc:Ignorable="d"
|
||||
WindowStyle="None"
|
||||
ResizeMode="NoResize"
|
||||
Topmost="True"
|
||||
WindowStartupLocation="CenterScreen"
|
||||
Title="TouchKeyboardNumeral"
|
||||
Loaded="Window_Loaded"
|
||||
Height="500" Width="550">
|
||||
<Window.Resources>
|
||||
<Style x:Key="KeyButtonStyle" TargetType="Button">
|
||||
<Setter Property="Background" Value="#FFF0F0F0"/>
|
||||
<Setter Property="BorderBrush" Value="#FFCCCCCC"/>
|
||||
<Setter Property="BorderThickness" Value="1"/>
|
||||
<Setter Property="FontSize" Value="20"/>
|
||||
<Setter Property="FontWeight" Value="Bold"/>
|
||||
<Setter Property="Margin" Value="2"/>
|
||||
<Setter Property="MinWidth" Value="100"/>
|
||||
<Setter Property="MinHeight" Value="40"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="Button">
|
||||
<Border x:Name="border"
|
||||
Background="{TemplateBinding Background}"
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="{TemplateBinding BorderThickness}"
|
||||
CornerRadius="4">
|
||||
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Border>
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger Property="IsPressed" Value="True">
|
||||
<Setter Property="Background" Value="#FFDDDDDD"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsEnabled" Value="False">
|
||||
<Setter Property="Foreground" Value="#FFBBBBBB"/>
|
||||
</Trigger>
|
||||
</ControlTemplate.Triggers>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="SpecialKeyButtonStyle" BasedOn="{StaticResource KeyButtonStyle}" TargetType="Button">
|
||||
<Setter Property="Background" Value="#FFE0E0E0"/>
|
||||
<Setter Property="FontSize" Value="16"/>
|
||||
</Style>
|
||||
</Window.Resources>
|
||||
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- 预览区域 -->
|
||||
<TextBox x:Name="PreviewTextBox" Grid.Row="0" Height="60" Margin="10"
|
||||
FontSize="24" VerticalContentAlignment="Center" IsReadOnly="False"/>
|
||||
|
||||
<!-- 键盘主体区域 -->
|
||||
<Grid Grid.Row="1" Margin="10">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- 数字行 -->
|
||||
<StackPanel x:Name="FirstRow" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center">
|
||||
<Button Content="7" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="8" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="9" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="0" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="DEL" Style="{StaticResource SpecialKeyButtonStyle}" Click="Backspace_Click" Width="60"/>
|
||||
</StackPanel>
|
||||
|
||||
<!-- 数字行 -->
|
||||
<StackPanel x:Name="SecondRow" Orientation="Horizontal" Grid.Row="1" HorizontalAlignment="Center">
|
||||
<Button Content="4" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="5" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="6" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="." Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="HIDE" Style="{StaticResource SpecialKeyButtonStyle}" Click="Hide_Click" Width="60"/>
|
||||
</StackPanel>
|
||||
|
||||
<!-- 数字行 -->
|
||||
<StackPanel x:Name="ThirdRow" Orientation="Horizontal" Grid.Row="2" HorizontalAlignment="Center">
|
||||
<Button Content="1" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="2" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="3" Style="{StaticResource KeyButtonStyle}" Click="KeyButton_Click"/>
|
||||
<Button Content="ENTER" Style="{StaticResource SpecialKeyButtonStyle}" Click="Enter_Click" Width="200"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Window>
|
||||
@@ -0,0 +1,215 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.KEY
|
||||
{
|
||||
/// <summary>
|
||||
/// TouchKeyboard.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class TouchKeyboardNumeral : Window
|
||||
{
|
||||
private bool mode = false;
|
||||
public string KeyValue;
|
||||
public event EventHandler<KeyPressedEventArgs> KeyPressed;
|
||||
private KeyboardMode currentMode = KeyboardMode.Default;
|
||||
private int minValue = 0;
|
||||
private int maxValue = 9;
|
||||
private TextBox targetTextBox;
|
||||
// 定义键盘模式枚举
|
||||
public enum KeyboardMode
|
||||
{
|
||||
Default, // 默认模式,所有键可用
|
||||
NumericOnly, // 只允许数字
|
||||
DecimalOnly, // 允许数字和小数点
|
||||
LimitedRange // 限制数字范围
|
||||
}
|
||||
|
||||
public TouchKeyboardNumeral()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
public void SetKeyboardMode(KeyboardMode mode, TextBox target = null, int min = 0, int max = 9)
|
||||
{
|
||||
currentMode = mode;
|
||||
targetTextBox = target;
|
||||
minValue = min;
|
||||
maxValue = max;
|
||||
|
||||
UpdateKeyboardLayout();
|
||||
}
|
||||
private void UpdateKeyboardLayout()
|
||||
{
|
||||
switch (currentMode)
|
||||
{
|
||||
case KeyboardMode.NumericOnly:
|
||||
// 只允许数字,禁用小数点
|
||||
SetButtonEnabled(".", false);
|
||||
break;
|
||||
|
||||
case KeyboardMode.DecimalOnly:
|
||||
// 允许数字和小数点
|
||||
SetButtonEnabled(".", true);
|
||||
break;
|
||||
|
||||
case KeyboardMode.LimitedRange:
|
||||
// 根据范围启用/禁用数字键
|
||||
for (int i = 0; i <= 9; i++)
|
||||
{
|
||||
SetButtonEnabled(i.ToString(), i >= minValue && i <= maxValue);
|
||||
}
|
||||
mode = true;
|
||||
break;
|
||||
|
||||
case KeyboardMode.Default:
|
||||
default:
|
||||
// 启用所有键
|
||||
foreach (var element in FirstRow.Children)
|
||||
{
|
||||
if (element is Button button && char.IsDigit(button.Content.ToString()[0]))
|
||||
button.IsEnabled = true;
|
||||
}
|
||||
foreach (var element in SecondRow.Children)
|
||||
{
|
||||
if (element is Button button && (char.IsDigit(button.Content.ToString()[0]) || button.Content.ToString() == "."))
|
||||
button.IsEnabled = true;
|
||||
}
|
||||
foreach (var element in ThirdRow.Children)
|
||||
{
|
||||
if (element is Button button && char.IsDigit(button.Content.ToString()[0]))
|
||||
button.IsEnabled = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 设置按钮启用状态
|
||||
private void SetButtonEnabled(string content, bool enabled)
|
||||
{
|
||||
// 在第一行查找
|
||||
foreach (var element in FirstRow.Children)
|
||||
{
|
||||
if (element is Button button && button.Content.ToString() == content)
|
||||
{
|
||||
button.IsEnabled = enabled;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 在第二行查找
|
||||
foreach (var element in SecondRow.Children)
|
||||
{
|
||||
if (element is Button button && button.Content.ToString() == content)
|
||||
{
|
||||
button.IsEnabled = enabled;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 在第三行查找
|
||||
foreach (var element in ThirdRow.Children)
|
||||
{
|
||||
if (element is Button button && button.Content.ToString() == content)
|
||||
{
|
||||
button.IsEnabled = enabled;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 数字键点击事件
|
||||
private void KeyButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (mode && PreviewTextBox.Text.Length > 0) return;
|
||||
Button button = sender as Button;
|
||||
if (button != null && button.IsEnabled)
|
||||
{
|
||||
string keyValue = button.Content.ToString();
|
||||
PreviewTextBox.Text += keyValue;
|
||||
|
||||
// 触发按键事件
|
||||
// KeyPressed?.Invoke(this, new KeyPressedEventArgs(KeyType.Character, keyValue));
|
||||
}
|
||||
}
|
||||
|
||||
// 退格键点击事件
|
||||
private void Backspace_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (PreviewTextBox.Text.Length > 0)
|
||||
{
|
||||
PreviewTextBox.Text = PreviewTextBox.Text.Substring(0, PreviewTextBox.Text.Length - 1);
|
||||
|
||||
// 触发退格事件
|
||||
// KeyPressed?.Invoke(this, new KeyPressedEventArgs(KeyType.Backspace, ""));
|
||||
}
|
||||
}
|
||||
|
||||
// 回车键点击事件
|
||||
private void Enter_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// 触发回车事件
|
||||
KeyPressed?.Invoke(this, new KeyPressedEventArgs(KeyType.Enter, PreviewTextBox.Text));
|
||||
|
||||
// 隐藏键盘
|
||||
this.Hide();
|
||||
}
|
||||
|
||||
// 隐藏键点击事件
|
||||
private void Hide_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
KeyPressed?.Invoke(this, new KeyPressedEventArgs(KeyType.Hide, ""));
|
||||
// 隐藏键盘
|
||||
this.Hide();
|
||||
}
|
||||
|
||||
public class KeyPressedEventArgs : EventArgs
|
||||
{
|
||||
public KeyType KeyType { get; }
|
||||
public string KeyValue { get; }
|
||||
|
||||
public KeyPressedEventArgs(KeyType keyType, string keyValue)
|
||||
{
|
||||
KeyType = keyType;
|
||||
KeyValue = keyValue;
|
||||
}
|
||||
}
|
||||
private void Window_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// 初始化为默认模式
|
||||
// SetKeyboardMode(KeyboardMode.Default);
|
||||
PreviewTextBox.Text = null;
|
||||
mode = false;
|
||||
}
|
||||
}
|
||||
// 按键类型枚举
|
||||
public enum KeyType
|
||||
{
|
||||
Character,
|
||||
Backspace,
|
||||
Enter,
|
||||
Hide
|
||||
}
|
||||
|
||||
// 按键事件参数
|
||||
public class KeyPressedEventArgs : EventArgs
|
||||
{
|
||||
public KeyType KeyType { get; }
|
||||
public string KeyValue { get; }
|
||||
|
||||
public KeyPressedEventArgs(KeyType keyType, string keyValue)
|
||||
{
|
||||
KeyType = keyType;
|
||||
KeyValue = keyValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 110 KiB |
|
After Width: | Height: | Size: 128 KiB |
|
After Width: | Height: | Size: 101 KiB |
|
After Width: | Height: | Size: 132 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 63 KiB |
@@ -22,6 +22,6 @@
|
||||
<TextBlock HorizontalAlignment="Left" Height="30" Margin="10,208,0,0" TextWrapping="Wrap" Text="密码:" VerticalAlignment="Top" Width="45" FontSize="20" RenderTransformOrigin="0.833,0.478"/>
|
||||
<Button x:Name="logon" Content="登录" HorizontalAlignment="Left" Height="33" Margin="40,264,0,0" VerticalAlignment="Top" Width="64" Click="Button_Click_1" Background="#FFDDDDDD" Foreground="Black" BorderBrush="White"/>
|
||||
<Button Content="退出" HorizontalAlignment="Right" Height="33" Margin="140,264,40,0" VerticalAlignment="Top" Width="64" Click="Button_Click" Background="#FFDDDDDD" Foreground="Black" BorderBrush="White"/>
|
||||
<TextBlock Height="30" Margin="15,115,15,0" TextWrapping="Wrap" Text="尚彩中央控制平台" VerticalAlignment="Top" FontSize="20" HorizontalAlignment="Center"/>
|
||||
<TextBlock Height="30" Margin="15,115,15,0" TextWrapping="Wrap" Text="中央控制平台" VerticalAlignment="Top" FontSize="20" HorizontalAlignment="Center"/>
|
||||
</Grid>
|
||||
</Window>
|
||||
@@ -1,4 +1,5 @@
|
||||
using SunlightCentralizedControlManagement_SCCM_.ViewModel;
|
||||
using SunlightCentralizedControlManagement_SCCM_.UserClass;
|
||||
using SunlightCentralizedControlManagement_SCCM_.ViewModel;
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
@@ -20,6 +21,7 @@ namespace SunlightCentralizedControlManagement_SCCM_
|
||||
|
||||
private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db"; //数据库路径
|
||||
DataTable logindataTable = new DataTable(); //建立login缓存
|
||||
DataTable logindataT = new DataTable(); //建立login缓存
|
||||
|
||||
public Login()
|
||||
{
|
||||
@@ -61,7 +63,7 @@ namespace SunlightCentralizedControlManagement_SCCM_
|
||||
}
|
||||
else
|
||||
{
|
||||
var paw = logindataTable.Select("Name='" + user + "'").First().Field<string>("Password");
|
||||
string paw = logindataT.Select("Name='" + user + "'").First().Field<string>("Password");
|
||||
if (paw == null) paw = "";
|
||||
|
||||
if (paw == pasword)
|
||||
@@ -81,9 +83,10 @@ namespace SunlightCentralizedControlManagement_SCCM_
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
catch (Exception ex)
|
||||
{
|
||||
System.Windows.MessageBox.Show(Properties.Resources.NPERR, "SCCM", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
LogGing.ERRDATA(ex);
|
||||
System.Windows.MessageBox.Show("Unable to start. Check the log for details.", "SCCM", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,6 +106,8 @@ namespace SunlightCentralizedControlManagement_SCCM_
|
||||
SQLiteHelper db = new SQLiteHelper(DBAddress); //数据库连接路径
|
||||
db.Open(); //打开数据库
|
||||
logindataTable = db.ExecuteDataSet("select * from USER where Groups<>'CHIEF'", null).Tables[0]; //读取表写入缓存
|
||||
|
||||
logindataT = db.ExecuteDataSet("select * from USER ", null).Tables[0];
|
||||
db.Close();
|
||||
User.ItemsSource = logindataTable.AsEnumerable().Select(rowdata => rowdata.Field<string>("Name"));//转换
|
||||
logon.IsEnabled = true; //允许登录按钮
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
Loaded="Window_Loaded"
|
||||
Title="SUNLIGHT SCCM b0.0.1 (2024/08/10)"
|
||||
Height="1080" Width="1920" Background="#FF003640"
|
||||
WindowState ="Maximized" WindowStyle="None">
|
||||
WindowStyle="None" ResizeMode="NoResize">
|
||||
<Window.Resources>
|
||||
<Storyboard x:Key="MenuOpen">
|
||||
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Width)" Storyboard.TargetName="GridMenu">
|
||||
@@ -127,7 +127,7 @@
|
||||
<Grid x:Name="gdMian" Background="White" Margin="60,50,0,0">
|
||||
<ContentControl x:Name="Picture"/>
|
||||
<Grid x:Name="Cdk_page" Visibility="Collapsed" Margin="0,0,0,0" Background="White" Opacity="0.8">
|
||||
<TextBlock Height="150" Margin="0,0,0,300" TextWrapping="Wrap" Text="注册信息到期,处理注册信息预计需要3个工作日,为避免影响系统使用请及时提交注册信息!" Width="500" FontSize="34" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
<TextBlock Height="150" Margin="0,0,0,300" TextWrapping="Wrap" Text="注册信息到期,为避免影响系统使用请及时提交注册信息!" Width="500" FontSize="34" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
<TextBlock x:Name="keytext" Height="50" Margin="0,0,0,100" TextWrapping="Wrap" Width="500" FontSize="34" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="Red"/>
|
||||
<TextBlock Height="50" Margin="0,0,0,0" TextWrapping="Wrap" Text="请联系 SUNLIGHT" Width="300" FontSize="34" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
<Button Content="{x:Static lang:Resources.Permit }" HorizontalAlignment="Center" Height="50" Margin="200,100,0,-100" VerticalAlignment="Center" Width="150" FontSize="24" BorderBrush="{x:Null}" Background="DarkGray" Click="ButtonPermit_Click"/>
|
||||
|
||||
@@ -14,6 +14,7 @@ using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Forms;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Interop;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
@@ -29,13 +30,68 @@ namespace SunlightCentralizedControlManagement_SCCM_
|
||||
/// </summary>
|
||||
public partial class MainWindow : Window
|
||||
{
|
||||
public static string user_;
|
||||
public static DataTable InfData = new DataTable();
|
||||
// public static string[] Inf_string ;
|
||||
public UserInformation userInformation;
|
||||
// public UserInf userInf;
|
||||
|
||||
public MainWindow()
|
||||
{
|
||||
WindowStartupLocation = WindowStartupLocation.CenterScreen;
|
||||
DataContext = new MainWindowViewModel();
|
||||
InitializeComponent();
|
||||
CountDown();
|
||||
CDkey_();
|
||||
if (App.USER_Purview != "ENGINEER")
|
||||
{
|
||||
username.ItemsSource = MainWindowViewModel.USER_data.Select(
|
||||
"Groups='" + MainWindowViewModel.USER_data.Select("Name='" + App.USER_Purview + "'").
|
||||
First().Field<string>("Groups").ToString() + "'").
|
||||
AsEnumerable().Select(rowdata => rowdata.Field<string>("Name")).ToList();
|
||||
}
|
||||
user_ = App.USER_Purview;
|
||||
username.Text = user_;
|
||||
|
||||
/**添加提示信息栏**/
|
||||
InfData.Columns.Add("Machine", Type.GetType("System.String"));
|
||||
InfData.Columns.Add("Information", Type.GetType("System.String"));
|
||||
InfData.Columns.Add("Code", Type.GetType("System.String"));
|
||||
InfData.Columns.Add("ID", Type.GetType("System.Int32"));
|
||||
|
||||
InfData.RowChanged += new DataRowChangeEventHandler(InfTable);//
|
||||
}
|
||||
private void InfTable(object sender, DataRowChangeEventArgs e)//触发行改变事件
|
||||
{
|
||||
if (userInformation == null || !userInformation.IsLoaded)//窗口不存在及创建
|
||||
{
|
||||
userInformation = new UserInformation();
|
||||
userInformation.Topmost = true;
|
||||
userInformation.Show();
|
||||
userInformation.Activate();
|
||||
}
|
||||
else
|
||||
{//窗口纯在及置顶
|
||||
userInformation.Activate();
|
||||
if (userInformation.WindowState == WindowState.Minimized) userInformation.WindowState = WindowState.Normal;
|
||||
}
|
||||
}
|
||||
/* private void UserInfTable(string dat)//触发行改变事件
|
||||
{
|
||||
userInf.Inf_DAT = dat;
|
||||
if (userInf == null || !userInf.IsLoaded)//窗口不存在及创建
|
||||
{
|
||||
userInf = new UserInf();
|
||||
userInf.Topmost = true;
|
||||
userInf.Show();
|
||||
userInf.Activate();
|
||||
}
|
||||
else
|
||||
{//窗口纯在及置顶
|
||||
userInf.Activate();
|
||||
if (userInf.WindowState == WindowState.Minimized) userInf.WindowState = WindowState.Normal;
|
||||
}
|
||||
}*/
|
||||
|
||||
private void ButtonPopUpLogout_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
@@ -106,9 +162,8 @@ namespace SunlightCentralizedControlManagement_SCCM_
|
||||
}
|
||||
private void ListViewItem_ConveyorCenters(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
|
||||
Picture.Content = new View.DispenseView();
|
||||
}
|
||||
|
||||
private void Buttonhelp_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
WindowsView.Help help_page = new WindowsView.Help();
|
||||
@@ -202,19 +257,20 @@ namespace SunlightCentralizedControlManagement_SCCM_
|
||||
private void username_DropDownClosed(object sender, EventArgs e)
|
||||
{
|
||||
MainWindowViewModel.USERCapacity(username.Text);
|
||||
|
||||
}
|
||||
|
||||
private void Window_Loaded(object sender, RoutedEventArgs e)//打开页面
|
||||
{
|
||||
if (App.USER_Purview != "ENGINEER")
|
||||
{
|
||||
username.ItemsSource = MainWindowViewModel.USER_data.Select(
|
||||
"Groups='" + MainWindowViewModel.USER_data.Select("Name='" + App.USER_Purview + "'").
|
||||
First().Field<string>("Groups").ToString() + "'").
|
||||
AsEnumerable().Select(rowdata => rowdata.Field<string>("Name")).ToList();
|
||||
}
|
||||
username.Text = App.USER_Purview;
|
||||
var windowHandle = new WindowInteropHelper(this).Handle;
|
||||
var currentScreen = Screen.FromHandle(windowHandle);
|
||||
|
||||
System.Drawing.Rectangle rectangle = currentScreen.WorkingArea;
|
||||
|
||||
this.Left = rectangle.Left;
|
||||
this.Top=rectangle.Top;
|
||||
this.Width = rectangle.Width;
|
||||
this.Height = rectangle.Height;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -19,7 +19,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
||||
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
||||
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "18.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
public class Resources {
|
||||
@@ -60,6 +60,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Manual/Automatic 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string _Auto {
|
||||
get {
|
||||
return ResourceManager.GetString("_Auto", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 continue 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -114,6 +123,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Attached 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string attached {
|
||||
get {
|
||||
return ResourceManager.GetString("attached", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Auto 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -141,6 +159,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 BathRatio 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string BathRatio {
|
||||
get {
|
||||
return ResourceManager.GetString("BathRatio", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Before 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -249,6 +276,42 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Cancel 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Cancel {
|
||||
get {
|
||||
return ResourceManager.GetString("Cancel", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 chemicals 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string chemicals {
|
||||
get {
|
||||
return ResourceManager.GetString("chemicals", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Client 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Client {
|
||||
get {
|
||||
return ResourceManager.GetString("Client", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Close the connection 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string CloseTheConnection {
|
||||
get {
|
||||
return ResourceManager.GetString("CloseTheConnection", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 ClothIntake 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -267,6 +330,24 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 ClothSpecies 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string ClothSpecies {
|
||||
get {
|
||||
return ResourceManager.GetString("ClothSpecies", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 ClothWeight 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string ClothWeight {
|
||||
get {
|
||||
return ResourceManager.GetString("ClothWeight", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 ClothWheel 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -312,6 +393,24 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 ColorName 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string ColorName {
|
||||
get {
|
||||
return ResourceManager.GetString("ColorName", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 ColorNumber 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string ColorNumber {
|
||||
get {
|
||||
return ResourceManager.GetString("ColorNumber", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Compute 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -537,6 +636,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Details 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Details {
|
||||
get {
|
||||
return ResourceManager.GetString("Details", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Dide 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -591,6 +699,51 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 DispenseEndTime 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string DispenseEndTime {
|
||||
get {
|
||||
return ResourceManager.GetString("DispenseEndTime", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 DispenseException 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string DispenseException {
|
||||
get {
|
||||
return ResourceManager.GetString("DispenseException", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 DispenseGrams 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string DispenseGrams {
|
||||
get {
|
||||
return ResourceManager.GetString("DispenseGrams", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 DispenseModule 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string DispenseModule {
|
||||
get {
|
||||
return ResourceManager.GetString("DispenseModule", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Details were not sent 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string DNotSent {
|
||||
get {
|
||||
return ResourceManager.GetString("DNotSent", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Does Not Exist 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -618,6 +771,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 dye 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string dye {
|
||||
get {
|
||||
return ResourceManager.GetString("dye", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 DyeingMachine 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -753,6 +915,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 err 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string ERR {
|
||||
get {
|
||||
return ResourceManager.GetString("ERR", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Expected 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -771,6 +942,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 fail 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Fail {
|
||||
get {
|
||||
return ResourceManager.GetString("Fail", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 FailureRecovery 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -843,6 +1023,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Grams 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Grams {
|
||||
get {
|
||||
return ResourceManager.GetString("Grams", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Group 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -942,15 +1131,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 High-water level 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string High_waterlevel1 {
|
||||
get {
|
||||
return ResourceManager.GetString("High-waterlevel1", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 History 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -960,15 +1140,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 History 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string HistoryRecords1 {
|
||||
get {
|
||||
return ResourceManager.GetString("HistoryRecords1", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 ID 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -978,15 +1149,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 ID 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string ID1 {
|
||||
get {
|
||||
return ResourceManager.GetString("ID1", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Implementation 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -997,11 +1159,11 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Implementation 的本地化字符串。
|
||||
/// 查找类似 Information 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Implementation1 {
|
||||
public static string Information {
|
||||
get {
|
||||
return ResourceManager.GetString("Implementation1", resourceCulture);
|
||||
return ResourceManager.GetString("Information", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1014,15 +1176,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 I/O 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string InOut1 {
|
||||
get {
|
||||
return ResourceManager.GetString("InOut1", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Insert 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -1032,15 +1185,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Insert 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Insert1 {
|
||||
get {
|
||||
return ResourceManager.GetString("Insert1", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Invalid features 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -1050,15 +1194,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Invalid features 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Invalidfeatures1 {
|
||||
get {
|
||||
return ResourceManager.GetString("Invalidfeatures1", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Jump 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -1077,15 +1212,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Language 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Language1 {
|
||||
get {
|
||||
return ResourceManager.GetString("Language1", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 LineUp 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -1096,11 +1222,11 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 LineUp 的本地化字符串。
|
||||
/// 查找类似 LinkDispenser 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string LineUp1 {
|
||||
public static string LinkDispenser {
|
||||
get {
|
||||
return ResourceManager.GetString("LineUp1", resourceCulture);
|
||||
return ResourceManager.GetString("LinkDispenser", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1113,24 +1239,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 LnsufficientPower 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string LnsufficientPower1 {
|
||||
get {
|
||||
return ResourceManager.GetString("LnsufficientPower1", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 lock 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string lock1 {
|
||||
get {
|
||||
return ResourceManager.GetString("lock1", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Log 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -1150,11 +1258,11 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Low-water level 的本地化字符串。
|
||||
/// 查找类似 Itemized sending 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Low_waterlevel1 {
|
||||
public static string LtemizedSending {
|
||||
get {
|
||||
return ResourceManager.GetString("Low-waterlevel1", resourceCulture);
|
||||
return ResourceManager.GetString("LtemizedSending", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1176,6 +1284,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Machines 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Machines {
|
||||
get {
|
||||
return ResourceManager.GetString("Machines", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Malfunction 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -1194,6 +1311,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Manual 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Manual {
|
||||
get {
|
||||
return ResourceManager.GetString("Manual", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 MasterCylinder 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -1410,6 +1536,24 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 NOT AVAILABLE 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Not_a {
|
||||
get {
|
||||
return ResourceManager.GetString("Not_a", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 NOT Machine 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Not_M {
|
||||
get {
|
||||
return ResourceManager.GetString("Not_M", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Notimplementation 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -1428,6 +1572,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Not sent 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string NotSent {
|
||||
get {
|
||||
return ResourceManager.GetString("NotSent", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Nozzle 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -1473,6 +1626,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 online 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Online {
|
||||
get {
|
||||
return ResourceManager.GetString("Online", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 orders 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -1563,6 +1725,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Pequest 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Pequest {
|
||||
get {
|
||||
return ResourceManager.GetString("Pequest", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Permit 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -1626,6 +1797,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 plan 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Plan {
|
||||
get {
|
||||
return ResourceManager.GetString("Plan", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 PopUpLogout 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -1653,6 +1833,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 powder 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string powder {
|
||||
get {
|
||||
return ResourceManager.GetString("powder", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 PrepareMedications 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -1770,6 +1959,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 ProductCode 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string ProductCode {
|
||||
get {
|
||||
return ResourceManager.GetString("ProductCode", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 ProductionPlanning 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -1779,6 +1977,24 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 ProductName 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string ProductName {
|
||||
get {
|
||||
return ResourceManager.GetString("ProductName", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 ProductType 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string ProductType {
|
||||
get {
|
||||
return ResourceManager.GetString("ProductType", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 ProgramGroup 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -1797,6 +2013,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 ProgramName 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string ProgramName {
|
||||
get {
|
||||
return ResourceManager.GetString("ProgramName", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 ProportionalValves 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -2067,6 +2292,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Repeat the raw material 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string RTRM {
|
||||
get {
|
||||
return ResourceManager.GetString("RTRM", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 RunningTime 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -2112,6 +2346,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 screen 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Screen {
|
||||
get {
|
||||
return ResourceManager.GetString("Screen", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Search 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -2157,6 +2400,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Speed 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Speed {
|
||||
get {
|
||||
return ResourceManager.GetString("Speed", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 SQL 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -2166,6 +2418,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Start 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Start {
|
||||
get {
|
||||
return ResourceManager.GetString("Start", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 StartDate 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -2256,6 +2517,24 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Subroutine 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Subroutine {
|
||||
get {
|
||||
return ResourceManager.GetString("Subroutine", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Swing 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Swing {
|
||||
get {
|
||||
return ResourceManager.GetString("Swing", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 SystemDataLoss 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -2391,6 +2670,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Test Voice 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string TESTVOICE {
|
||||
get {
|
||||
return ResourceManager.GetString("TESTVOICE", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Time 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -2409,6 +2697,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 The machine is not ready 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string TMNR {
|
||||
get {
|
||||
return ResourceManager.GetString("TMNR", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Today 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -2418,6 +2715,24 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Total 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Total {
|
||||
get {
|
||||
return ResourceManager.GetString("Total", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 The picking list has been used 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string TPLHBU {
|
||||
get {
|
||||
return ResourceManager.GetString("TPLHBU", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 trce 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -2427,6 +2742,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 The ticket already exists 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string TTAE {
|
||||
get {
|
||||
return ResourceManager.GetString("TTAE", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Type 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -2454,6 +2778,24 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 user_lock 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string user_lock {
|
||||
get {
|
||||
return ResourceManager.GetString("user_lock", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 user_unlock 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string user_unlock {
|
||||
get {
|
||||
return ResourceManager.GetString("user_unlock", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Valid time 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -2472,6 +2814,15 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 VOICE 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string VOICE {
|
||||
get {
|
||||
return ResourceManager.GetString("VOICE", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 void 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -2481,6 +2832,24 @@ namespace SunlightCentralizedControlManagement_SCCM_.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Vol 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Vol {
|
||||
get {
|
||||
return ResourceManager.GetString("Vol", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Volume 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string Volume {
|
||||
get {
|
||||
return ResourceManager.GetString("Volume", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Washing 的本地化字符串。
|
||||
/// </summary>
|
||||
|
||||
@@ -150,21 +150,12 @@
|
||||
<data name="HistoryRecords" xml:space="preserve">
|
||||
<value>History</value>
|
||||
</data>
|
||||
<data name="HistoryRecords1" xml:space="preserve">
|
||||
<value>History</value>
|
||||
</data>
|
||||
<data name="InOut" xml:space="preserve">
|
||||
<value>I/O</value>
|
||||
</data>
|
||||
<data name="InOut1" xml:space="preserve">
|
||||
<value>I/O</value>
|
||||
</data>
|
||||
<data name="lock" xml:space="preserve">
|
||||
<value>Lock/Unlock</value>
|
||||
</data>
|
||||
<data name="lock1" xml:space="preserve">
|
||||
<value>Lock/Unlock</value>
|
||||
</data>
|
||||
<data name="New" xml:space="preserve">
|
||||
<value>New</value>
|
||||
</data>
|
||||
@@ -294,9 +285,6 @@
|
||||
<data name="LineUp" xml:space="preserve">
|
||||
<value>Line Up</value>
|
||||
</data>
|
||||
<data name="LineUp1" xml:space="preserve">
|
||||
<value>Line Up</value>
|
||||
</data>
|
||||
<data name="Notimplementation" xml:space="preserve">
|
||||
<value>Not Implementation</value>
|
||||
</data>
|
||||
@@ -348,15 +336,9 @@
|
||||
<data name="ID" xml:space="preserve">
|
||||
<value>ID</value>
|
||||
</data>
|
||||
<data name="ID1" xml:space="preserve">
|
||||
<value>ID</value>
|
||||
</data>
|
||||
<data name="Insert" xml:space="preserve">
|
||||
<value>Insert</value>
|
||||
</data>
|
||||
<data name="Insert1" xml:space="preserve">
|
||||
<value>Insert</value>
|
||||
</data>
|
||||
<data name="Recover" xml:space="preserve">
|
||||
<value>Recover</value>
|
||||
</data>
|
||||
@@ -537,9 +519,6 @@
|
||||
<data name="Invalidfeatures" xml:space="preserve">
|
||||
<value>Invalid features</value>
|
||||
</data>
|
||||
<data name="Invalidfeatures1" xml:space="preserve">
|
||||
<value>Invalid features</value>
|
||||
</data>
|
||||
<data name="NO" xml:space="preserve">
|
||||
<value>NO</value>
|
||||
</data>
|
||||
@@ -657,9 +636,6 @@
|
||||
<data name="Implementation" xml:space="preserve">
|
||||
<value>Implementation</value>
|
||||
</data>
|
||||
<data name="Implementation1" xml:space="preserve">
|
||||
<value>Implementation</value>
|
||||
</data>
|
||||
<data name="process_not" xml:space="preserve">
|
||||
<value>The process does not exist</value>
|
||||
</data>
|
||||
@@ -687,9 +663,6 @@
|
||||
<data name="Language" xml:space="preserve">
|
||||
<value>Language</value>
|
||||
</data>
|
||||
<data name="Language1" xml:space="preserve">
|
||||
<value>Language</value>
|
||||
</data>
|
||||
<data name="Paused" xml:space="preserve">
|
||||
<value>Paused</value>
|
||||
</data>
|
||||
@@ -771,15 +744,9 @@
|
||||
<data name="High-waterlevel" xml:space="preserve">
|
||||
<value>High-water level</value>
|
||||
</data>
|
||||
<data name="High-waterlevel1" xml:space="preserve">
|
||||
<value>High-water level</value>
|
||||
</data>
|
||||
<data name="Low-waterlevel" xml:space="preserve">
|
||||
<value>Low-water level</value>
|
||||
</data>
|
||||
<data name="Low-waterlevel1" xml:space="preserve">
|
||||
<value>Low-water level</value>
|
||||
</data>
|
||||
<data name="ClothWheel" xml:space="preserve">
|
||||
<value>Cloth Wheel</value>
|
||||
</data>
|
||||
@@ -807,9 +774,6 @@
|
||||
<data name="LnsufficientPower" xml:space="preserve">
|
||||
<value>Lnsufficient Power</value>
|
||||
</data>
|
||||
<data name="LnsufficientPower1" xml:space="preserve">
|
||||
<value>Lnsufficient Power</value>
|
||||
</data>
|
||||
<data name="WorkingStatus" xml:space="preserve">
|
||||
<value>Working Status</value>
|
||||
</data>
|
||||
@@ -969,4 +933,163 @@
|
||||
<data name="void_" xml:space="preserve">
|
||||
<value>Void</value>
|
||||
</data>
|
||||
<data name="Plan" xml:space="preserve">
|
||||
<value>Plan</value>
|
||||
</data>
|
||||
<data name="attached" xml:space="preserve">
|
||||
<value>Attached</value>
|
||||
</data>
|
||||
<data name="ColorNumber" xml:space="preserve">
|
||||
<value>ColorNumber</value>
|
||||
</data>
|
||||
<data name="Client" xml:space="preserve">
|
||||
<value>Client</value>
|
||||
</data>
|
||||
<data name="ClothSpecies" xml:space="preserve">
|
||||
<value>ClothSpecies</value>
|
||||
</data>
|
||||
<data name="ClothWeight" xml:space="preserve">
|
||||
<value>ClothWeight</value>
|
||||
</data>
|
||||
<data name="BathRatio" xml:space="preserve">
|
||||
<value>BathRatio</value>
|
||||
</data>
|
||||
<data name="Total" xml:space="preserve">
|
||||
<value>Total</value>
|
||||
</data>
|
||||
<data name="ColorName" xml:space="preserve">
|
||||
<value>ColorName</value>
|
||||
</data>
|
||||
<data name="CloseTheConnection" xml:space="preserve">
|
||||
<value>Close the connection</value>
|
||||
</data>
|
||||
<data name="Online" xml:space="preserve">
|
||||
<value>Online</value>
|
||||
</data>
|
||||
<data name="ERR" xml:space="preserve">
|
||||
<value>ERR</value>
|
||||
</data>
|
||||
<data name="Fail" xml:space="preserve">
|
||||
<value>Fail</value>
|
||||
</data>
|
||||
<data name="LtemizedSending" xml:space="preserve">
|
||||
<value>LtemizedSending</value>
|
||||
</data>
|
||||
<data name="NotSent" xml:space="preserve">
|
||||
<value>Not Sent</value>
|
||||
</data>
|
||||
<data name="DNotSent" xml:space="preserve">
|
||||
<value>Details Were Not Sent</value>
|
||||
</data>
|
||||
<data name="LinkDispenser" xml:space="preserve">
|
||||
<value>Link Dispenser</value>
|
||||
</data>
|
||||
<data name="TPLHBU" xml:space="preserve">
|
||||
<value>The picking list has been used</value>
|
||||
</data>
|
||||
<data name="TTAE" xml:space="preserve">
|
||||
<value>The ticket already exists</value>
|
||||
</data>
|
||||
<data name="Details" xml:space="preserve">
|
||||
<value>Details</value>
|
||||
</data>
|
||||
<data name="ProductCode" xml:space="preserve">
|
||||
<value>ProductCode</value>
|
||||
</data>
|
||||
<data name="ProductName" xml:space="preserve">
|
||||
<value>ProductName</value>
|
||||
</data>
|
||||
<data name="ProductType" xml:space="preserve">
|
||||
<value>ProductType</value>
|
||||
</data>
|
||||
<data name="Grams" xml:space="preserve">
|
||||
<value>Grams</value>
|
||||
</data>
|
||||
<data name="DispenseGrams" xml:space="preserve">
|
||||
<value>Actual</value>
|
||||
</data>
|
||||
<data name="DispenseEndTime" xml:space="preserve">
|
||||
<value>EndTime</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Cancel</value>
|
||||
</data>
|
||||
<data name="Manual" xml:space="preserve">
|
||||
<value>Manual</value>
|
||||
</data>
|
||||
<data name="Not_a" xml:space="preserve">
|
||||
<value>NOT AVAILABLE</value>
|
||||
</data>
|
||||
<data name="Screen" xml:space="preserve">
|
||||
<value>Screen</value>
|
||||
</data>
|
||||
<data name="Volume" xml:space="preserve">
|
||||
<value>Volume</value>
|
||||
</data>
|
||||
<data name="DispenseModule" xml:space="preserve">
|
||||
<value>DispenseModule</value>
|
||||
</data>
|
||||
<data name="Information" xml:space="preserve">
|
||||
<value>Information</value>
|
||||
</data>
|
||||
<data name="RTRM" xml:space="preserve">
|
||||
<value>Repeat the raw material</value>
|
||||
</data>
|
||||
<data name="Not_M" xml:space="preserve">
|
||||
<value>Machine does not exist</value>
|
||||
</data>
|
||||
<data name="dye" xml:space="preserve">
|
||||
<value>Dye</value>
|
||||
</data>
|
||||
<data name="chemicals" xml:space="preserve">
|
||||
<value>Chemicals</value>
|
||||
</data>
|
||||
<data name="powder" xml:space="preserve">
|
||||
<value>Powder</value>
|
||||
</data>
|
||||
<data name="TMNR" xml:space="preserve">
|
||||
<value>The machine is not ready</value>
|
||||
</data>
|
||||
<data name="user_lock" xml:space="preserve">
|
||||
<value>LOCK</value>
|
||||
</data>
|
||||
<data name="user_unlock" xml:space="preserve">
|
||||
<value>UNLOCK</value>
|
||||
</data>
|
||||
<data name="VOICE" xml:space="preserve">
|
||||
<value>Voice</value>
|
||||
</data>
|
||||
<data name="TESTVOICE" xml:space="preserve">
|
||||
<value>Test Voice</value>
|
||||
</data>
|
||||
<data name="Speed" xml:space="preserve">
|
||||
<value>Speed</value>
|
||||
</data>
|
||||
<data name="Vol" xml:space="preserve">
|
||||
<value>Vol</value>
|
||||
</data>
|
||||
<data name="Pequest" xml:space="preserve">
|
||||
<value>Pequest</value>
|
||||
</data>
|
||||
<data name="Subroutine" xml:space="preserve">
|
||||
<value>Subroutine</value>
|
||||
</data>
|
||||
<data name="DispenseException" xml:space="preserve">
|
||||
<value>Dispense Exception</value>
|
||||
</data>
|
||||
<data name="_Auto" xml:space="preserve">
|
||||
<value>Manual/Automatic</value>
|
||||
</data>
|
||||
<data name="Swing" xml:space="preserve">
|
||||
<value>Swing</value>
|
||||
</data>
|
||||
<data name="Start" xml:space="preserve">
|
||||
<value>Start</value>
|
||||
</data>
|
||||
<data name="ProgramName" xml:space="preserve">
|
||||
<value>Program Name</value>
|
||||
</data>
|
||||
<data name="Machines" xml:space="preserve">
|
||||
<value>Machines</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -150,21 +150,12 @@
|
||||
<data name="HistoryRecords" xml:space="preserve">
|
||||
<value>History</value>
|
||||
</data>
|
||||
<data name="HistoryRecords1" xml:space="preserve">
|
||||
<value>History</value>
|
||||
</data>
|
||||
<data name="InOut" xml:space="preserve">
|
||||
<value>I/O</value>
|
||||
</data>
|
||||
<data name="InOut1" xml:space="preserve">
|
||||
<value>I/O</value>
|
||||
</data>
|
||||
<data name="lock" xml:space="preserve">
|
||||
<value>lock</value>
|
||||
</data>
|
||||
<data name="lock1" xml:space="preserve">
|
||||
<value>lock</value>
|
||||
</data>
|
||||
<data name="New" xml:space="preserve">
|
||||
<value>New</value>
|
||||
</data>
|
||||
@@ -294,9 +285,6 @@
|
||||
<data name="LineUp" xml:space="preserve">
|
||||
<value>LineUp</value>
|
||||
</data>
|
||||
<data name="LineUp1" xml:space="preserve">
|
||||
<value>LineUp</value>
|
||||
</data>
|
||||
<data name="Notimplementation" xml:space="preserve">
|
||||
<value>Notimplementation</value>
|
||||
</data>
|
||||
@@ -348,15 +336,9 @@
|
||||
<data name="ID" xml:space="preserve">
|
||||
<value>ID</value>
|
||||
</data>
|
||||
<data name="ID1" xml:space="preserve">
|
||||
<value>ID</value>
|
||||
</data>
|
||||
<data name="Insert" xml:space="preserve">
|
||||
<value>Insert</value>
|
||||
</data>
|
||||
<data name="Insert1" xml:space="preserve">
|
||||
<value>Insert</value>
|
||||
</data>
|
||||
<data name="Recover" xml:space="preserve">
|
||||
<value>Recover</value>
|
||||
</data>
|
||||
@@ -537,9 +519,6 @@
|
||||
<data name="Invalidfeatures" xml:space="preserve">
|
||||
<value>Invalid features</value>
|
||||
</data>
|
||||
<data name="Invalidfeatures1" xml:space="preserve">
|
||||
<value>Invalid features</value>
|
||||
</data>
|
||||
<data name="NO" xml:space="preserve">
|
||||
<value>NO</value>
|
||||
</data>
|
||||
@@ -657,9 +636,6 @@
|
||||
<data name="Implementation" xml:space="preserve">
|
||||
<value>Implementation</value>
|
||||
</data>
|
||||
<data name="Implementation1" xml:space="preserve">
|
||||
<value>Implementation</value>
|
||||
</data>
|
||||
<data name="process_not" xml:space="preserve">
|
||||
<value>The process does not exist</value>
|
||||
</data>
|
||||
@@ -687,9 +663,6 @@
|
||||
<data name="Language" xml:space="preserve">
|
||||
<value>Language</value>
|
||||
</data>
|
||||
<data name="Language1" xml:space="preserve">
|
||||
<value>Language</value>
|
||||
</data>
|
||||
<data name="Paused" xml:space="preserve">
|
||||
<value>Paused</value>
|
||||
</data>
|
||||
@@ -771,15 +744,9 @@
|
||||
<data name="High-waterlevel" xml:space="preserve">
|
||||
<value>High-water level</value>
|
||||
</data>
|
||||
<data name="High-waterlevel1" xml:space="preserve">
|
||||
<value>High-water level</value>
|
||||
</data>
|
||||
<data name="Low-waterlevel" xml:space="preserve">
|
||||
<value>Low-water level</value>
|
||||
</data>
|
||||
<data name="Low-waterlevel1" xml:space="preserve">
|
||||
<value>Low-water level</value>
|
||||
</data>
|
||||
<data name="ClothWheel" xml:space="preserve">
|
||||
<value>ClothWheel</value>
|
||||
</data>
|
||||
@@ -807,9 +774,6 @@
|
||||
<data name="LnsufficientPower" xml:space="preserve">
|
||||
<value>LnsufficientPower</value>
|
||||
</data>
|
||||
<data name="LnsufficientPower1" xml:space="preserve">
|
||||
<value>LnsufficientPower</value>
|
||||
</data>
|
||||
<data name="WorkingStatus" xml:space="preserve">
|
||||
<value>WorkingStatus</value>
|
||||
</data>
|
||||
@@ -969,4 +933,163 @@
|
||||
<data name="void_" xml:space="preserve">
|
||||
<value>void</value>
|
||||
</data>
|
||||
<data name="Plan" xml:space="preserve">
|
||||
<value>plan</value>
|
||||
</data>
|
||||
<data name="attached" xml:space="preserve">
|
||||
<value>Attached</value>
|
||||
</data>
|
||||
<data name="ColorNumber" xml:space="preserve">
|
||||
<value>ColorNumber</value>
|
||||
</data>
|
||||
<data name="Client" xml:space="preserve">
|
||||
<value>Client</value>
|
||||
</data>
|
||||
<data name="ClothSpecies" xml:space="preserve">
|
||||
<value>ClothSpecies</value>
|
||||
</data>
|
||||
<data name="ClothWeight" xml:space="preserve">
|
||||
<value>ClothWeight</value>
|
||||
</data>
|
||||
<data name="BathRatio" xml:space="preserve">
|
||||
<value>BathRatio</value>
|
||||
</data>
|
||||
<data name="Total" xml:space="preserve">
|
||||
<value>Total</value>
|
||||
</data>
|
||||
<data name="ColorName" xml:space="preserve">
|
||||
<value>ColorName</value>
|
||||
</data>
|
||||
<data name="CloseTheConnection" xml:space="preserve">
|
||||
<value>Close the connection</value>
|
||||
</data>
|
||||
<data name="Online" xml:space="preserve">
|
||||
<value>online</value>
|
||||
</data>
|
||||
<data name="ERR" xml:space="preserve">
|
||||
<value>err</value>
|
||||
</data>
|
||||
<data name="Fail" xml:space="preserve">
|
||||
<value>fail</value>
|
||||
</data>
|
||||
<data name="LtemizedSending" xml:space="preserve">
|
||||
<value>Itemized sending</value>
|
||||
</data>
|
||||
<data name="NotSent" xml:space="preserve">
|
||||
<value>Not sent</value>
|
||||
</data>
|
||||
<data name="DNotSent" xml:space="preserve">
|
||||
<value>Details were not sent</value>
|
||||
</data>
|
||||
<data name="LinkDispenser" xml:space="preserve">
|
||||
<value>LinkDispenser</value>
|
||||
</data>
|
||||
<data name="TPLHBU" xml:space="preserve">
|
||||
<value>The picking list has been used</value>
|
||||
</data>
|
||||
<data name="TTAE" xml:space="preserve">
|
||||
<value>The ticket already exists</value>
|
||||
</data>
|
||||
<data name="Details" xml:space="preserve">
|
||||
<value>Details</value>
|
||||
</data>
|
||||
<data name="ProductCode" xml:space="preserve">
|
||||
<value>ProductCode</value>
|
||||
</data>
|
||||
<data name="ProductName" xml:space="preserve">
|
||||
<value>ProductName</value>
|
||||
</data>
|
||||
<data name="ProductType" xml:space="preserve">
|
||||
<value>ProductType</value>
|
||||
</data>
|
||||
<data name="Grams" xml:space="preserve">
|
||||
<value>Grams</value>
|
||||
</data>
|
||||
<data name="DispenseGrams" xml:space="preserve">
|
||||
<value>DispenseGrams</value>
|
||||
</data>
|
||||
<data name="DispenseEndTime" xml:space="preserve">
|
||||
<value>DispenseEndTime</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Cancel</value>
|
||||
</data>
|
||||
<data name="Manual" xml:space="preserve">
|
||||
<value>Manual</value>
|
||||
</data>
|
||||
<data name="Not_a" xml:space="preserve">
|
||||
<value>NOT AVAILABLE</value>
|
||||
</data>
|
||||
<data name="Screen" xml:space="preserve">
|
||||
<value>screen</value>
|
||||
</data>
|
||||
<data name="Volume" xml:space="preserve">
|
||||
<value>Volume</value>
|
||||
</data>
|
||||
<data name="DispenseModule" xml:space="preserve">
|
||||
<value>DispenseModule</value>
|
||||
</data>
|
||||
<data name="Information" xml:space="preserve">
|
||||
<value>Information</value>
|
||||
</data>
|
||||
<data name="RTRM" xml:space="preserve">
|
||||
<value>Repeat the raw material</value>
|
||||
</data>
|
||||
<data name="Not_M" xml:space="preserve">
|
||||
<value>NOT Machine</value>
|
||||
</data>
|
||||
<data name="dye" xml:space="preserve">
|
||||
<value>dye</value>
|
||||
</data>
|
||||
<data name="chemicals" xml:space="preserve">
|
||||
<value>chemicals</value>
|
||||
</data>
|
||||
<data name="powder" xml:space="preserve">
|
||||
<value>powder</value>
|
||||
</data>
|
||||
<data name="TMNR" xml:space="preserve">
|
||||
<value>The machine is not ready</value>
|
||||
</data>
|
||||
<data name="user_lock" xml:space="preserve">
|
||||
<value>user_lock</value>
|
||||
</data>
|
||||
<data name="user_unlock" xml:space="preserve">
|
||||
<value>user_unlock</value>
|
||||
</data>
|
||||
<data name="VOICE" xml:space="preserve">
|
||||
<value>VOICE</value>
|
||||
</data>
|
||||
<data name="TESTVOICE" xml:space="preserve">
|
||||
<value>Test Voice</value>
|
||||
</data>
|
||||
<data name="Speed" xml:space="preserve">
|
||||
<value>Speed</value>
|
||||
</data>
|
||||
<data name="Vol" xml:space="preserve">
|
||||
<value>Vol</value>
|
||||
</data>
|
||||
<data name="Pequest" xml:space="preserve">
|
||||
<value>Pequest</value>
|
||||
</data>
|
||||
<data name="Subroutine" xml:space="preserve">
|
||||
<value>Subroutine</value>
|
||||
</data>
|
||||
<data name="DispenseException" xml:space="preserve">
|
||||
<value>DispenseException</value>
|
||||
</data>
|
||||
<data name="_Auto" xml:space="preserve">
|
||||
<value>Manual/Automatic</value>
|
||||
</data>
|
||||
<data name="Swing" xml:space="preserve">
|
||||
<value>Swing</value>
|
||||
</data>
|
||||
<data name="Start" xml:space="preserve">
|
||||
<value>Start</value>
|
||||
</data>
|
||||
<data name="ProgramName" xml:space="preserve">
|
||||
<value>ProgramName</value>
|
||||
</data>
|
||||
<data name="Machines" xml:space="preserve">
|
||||
<value>Machines</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -150,21 +150,12 @@
|
||||
<data name="HistoryRecords" xml:space="preserve">
|
||||
<value>历史</value>
|
||||
</data>
|
||||
<data name="HistoryRecords1" xml:space="preserve">
|
||||
<value>历史</value>
|
||||
</data>
|
||||
<data name="InOut" xml:space="preserve">
|
||||
<value>输入输出</value>
|
||||
</data>
|
||||
<data name="InOut1" xml:space="preserve">
|
||||
<value>输入输出</value>
|
||||
</data>
|
||||
<data name="lock" xml:space="preserve">
|
||||
<value>锁定/解锁</value>
|
||||
</data>
|
||||
<data name="lock1" xml:space="preserve">
|
||||
<value>锁定/解锁</value>
|
||||
</data>
|
||||
<data name="New" xml:space="preserve">
|
||||
<value>新建</value>
|
||||
</data>
|
||||
@@ -294,9 +285,6 @@
|
||||
<data name="LineUp" xml:space="preserve">
|
||||
<value>排队</value>
|
||||
</data>
|
||||
<data name="LineUp1" xml:space="preserve">
|
||||
<value>排队</value>
|
||||
</data>
|
||||
<data name="Notimplementation" xml:space="preserve">
|
||||
<value>未执行</value>
|
||||
</data>
|
||||
@@ -348,15 +336,9 @@
|
||||
<data name="ID" xml:space="preserve">
|
||||
<value>ID</value>
|
||||
</data>
|
||||
<data name="ID1" xml:space="preserve">
|
||||
<value>ID</value>
|
||||
</data>
|
||||
<data name="Insert" xml:space="preserve">
|
||||
<value>插入</value>
|
||||
</data>
|
||||
<data name="Insert1" xml:space="preserve">
|
||||
<value>插入</value>
|
||||
</data>
|
||||
<data name="Recover" xml:space="preserve">
|
||||
<value>恢复</value>
|
||||
</data>
|
||||
@@ -537,9 +519,6 @@
|
||||
<data name="Invalidfeatures" xml:space="preserve">
|
||||
<value>功能无效</value>
|
||||
</data>
|
||||
<data name="Invalidfeatures1" xml:space="preserve">
|
||||
<value>功能无效</value>
|
||||
</data>
|
||||
<data name="NO" xml:space="preserve">
|
||||
<value>否</value>
|
||||
</data>
|
||||
@@ -607,7 +586,7 @@
|
||||
<value>速率</value>
|
||||
</data>
|
||||
<data name="Tank" xml:space="preserve">
|
||||
<value>缸</value>
|
||||
<value>桶</value>
|
||||
</data>
|
||||
<data name="Tank1" xml:space="preserve">
|
||||
<value>缸</value>
|
||||
@@ -657,9 +636,6 @@
|
||||
<data name="Implementation" xml:space="preserve">
|
||||
<value>执行</value>
|
||||
</data>
|
||||
<data name="Implementation1" xml:space="preserve">
|
||||
<value>执行</value>
|
||||
</data>
|
||||
<data name="process_not" xml:space="preserve">
|
||||
<value>工艺不存在</value>
|
||||
</data>
|
||||
@@ -687,9 +663,6 @@
|
||||
<data name="Language" xml:space="preserve">
|
||||
<value>语言</value>
|
||||
</data>
|
||||
<data name="Language1" xml:space="preserve">
|
||||
<value>语言</value>
|
||||
</data>
|
||||
<data name="Paused" xml:space="preserve">
|
||||
<value>暂停</value>
|
||||
</data>
|
||||
@@ -771,15 +744,9 @@
|
||||
<data name="High-waterlevel" xml:space="preserve">
|
||||
<value>高水位</value>
|
||||
</data>
|
||||
<data name="High-waterlevel1" xml:space="preserve">
|
||||
<value>高水位</value>
|
||||
</data>
|
||||
<data name="Low-waterlevel" xml:space="preserve">
|
||||
<value>低水位</value>
|
||||
</data>
|
||||
<data name="Low-waterlevel1" xml:space="preserve">
|
||||
<value>低水位</value>
|
||||
</data>
|
||||
<data name="ClothWheel" xml:space="preserve">
|
||||
<value>布轮</value>
|
||||
</data>
|
||||
@@ -807,9 +774,6 @@
|
||||
<data name="LnsufficientPower" xml:space="preserve">
|
||||
<value>功率不足</value>
|
||||
</data>
|
||||
<data name="LnsufficientPower1" xml:space="preserve">
|
||||
<value>功率不足</value>
|
||||
</data>
|
||||
<data name="WorkingStatus" xml:space="preserve">
|
||||
<value>工作状态</value>
|
||||
</data>
|
||||
@@ -969,4 +933,163 @@
|
||||
<data name="void_" xml:space="preserve">
|
||||
<value>无效</value>
|
||||
</data>
|
||||
<data name="Plan" xml:space="preserve">
|
||||
<value>计划</value>
|
||||
</data>
|
||||
<data name="attached" xml:space="preserve">
|
||||
<value>附</value>
|
||||
</data>
|
||||
<data name="ColorNumber" xml:space="preserve">
|
||||
<value>色号</value>
|
||||
</data>
|
||||
<data name="Client" xml:space="preserve">
|
||||
<value>客户</value>
|
||||
</data>
|
||||
<data name="ClothSpecies" xml:space="preserve">
|
||||
<value>布种</value>
|
||||
</data>
|
||||
<data name="ClothWeight" xml:space="preserve">
|
||||
<value>布重</value>
|
||||
</data>
|
||||
<data name="BathRatio" xml:space="preserve">
|
||||
<value>浴比</value>
|
||||
</data>
|
||||
<data name="Total" xml:space="preserve">
|
||||
<value>总浴量</value>
|
||||
</data>
|
||||
<data name="ColorName" xml:space="preserve">
|
||||
<value>色名</value>
|
||||
</data>
|
||||
<data name="CloseTheConnection" xml:space="preserve">
|
||||
<value>断开连接</value>
|
||||
</data>
|
||||
<data name="Online" xml:space="preserve">
|
||||
<value>在线</value>
|
||||
</data>
|
||||
<data name="ERR" xml:space="preserve">
|
||||
<value>错误</value>
|
||||
</data>
|
||||
<data name="Fail" xml:space="preserve">
|
||||
<value>失败</value>
|
||||
</data>
|
||||
<data name="LtemizedSending" xml:space="preserve">
|
||||
<value>发送明细</value>
|
||||
</data>
|
||||
<data name="NotSent" xml:space="preserve">
|
||||
<value>未发送</value>
|
||||
</data>
|
||||
<data name="DNotSent" xml:space="preserve">
|
||||
<value>未发送明细</value>
|
||||
</data>
|
||||
<data name="LinkDispenser" xml:space="preserve">
|
||||
<value>连接染料助剂分配器</value>
|
||||
</data>
|
||||
<data name="TPLHBU" xml:space="preserve">
|
||||
<value>领料单已使用</value>
|
||||
</data>
|
||||
<data name="TTAE" xml:space="preserve">
|
||||
<value>工单已经存在</value>
|
||||
</data>
|
||||
<data name="Details" xml:space="preserve">
|
||||
<value>明细</value>
|
||||
</data>
|
||||
<data name="ProductCode" xml:space="preserve">
|
||||
<value>原料代码</value>
|
||||
</data>
|
||||
<data name="ProductName" xml:space="preserve">
|
||||
<value>原料名称</value>
|
||||
</data>
|
||||
<data name="ProductType" xml:space="preserve">
|
||||
<value>原料类型</value>
|
||||
</data>
|
||||
<data name="Grams" xml:space="preserve">
|
||||
<value>克重</value>
|
||||
</data>
|
||||
<data name="DispenseGrams" xml:space="preserve">
|
||||
<value>实际</value>
|
||||
</data>
|
||||
<data name="DispenseEndTime" xml:space="preserve">
|
||||
<value>完成时间</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>取消</value>
|
||||
</data>
|
||||
<data name="Manual" xml:space="preserve">
|
||||
<value>手动</value>
|
||||
</data>
|
||||
<data name="Not_a" xml:space="preserve">
|
||||
<value>当前功能不可用</value>
|
||||
</data>
|
||||
<data name="Screen" xml:space="preserve">
|
||||
<value>远程画面</value>
|
||||
</data>
|
||||
<data name="Volume" xml:space="preserve">
|
||||
<value>容量</value>
|
||||
</data>
|
||||
<data name="DispenseModule" xml:space="preserve">
|
||||
<value>运行模组</value>
|
||||
</data>
|
||||
<data name="Information" xml:space="preserve">
|
||||
<value>信息</value>
|
||||
</data>
|
||||
<data name="RTRM" xml:space="preserve">
|
||||
<value>重复原料</value>
|
||||
</data>
|
||||
<data name="Not_M" xml:space="preserve">
|
||||
<value>机台不存在</value>
|
||||
</data>
|
||||
<data name="dye" xml:space="preserve">
|
||||
<value>染料</value>
|
||||
</data>
|
||||
<data name="chemicals" xml:space="preserve">
|
||||
<value>助剂</value>
|
||||
</data>
|
||||
<data name="powder" xml:space="preserve">
|
||||
<value>粉体</value>
|
||||
</data>
|
||||
<data name="TMNR" xml:space="preserve">
|
||||
<value>机台未就绪</value>
|
||||
</data>
|
||||
<data name="user_lock" xml:space="preserve">
|
||||
<value>锁定</value>
|
||||
</data>
|
||||
<data name="user_unlock" xml:space="preserve">
|
||||
<value>解锁</value>
|
||||
</data>
|
||||
<data name="VOICE" xml:space="preserve">
|
||||
<value>语音</value>
|
||||
</data>
|
||||
<data name="TESTVOICE" xml:space="preserve">
|
||||
<value>测试语音</value>
|
||||
</data>
|
||||
<data name="Speed" xml:space="preserve">
|
||||
<value>语速</value>
|
||||
</data>
|
||||
<data name="Vol" xml:space="preserve">
|
||||
<value>音量</value>
|
||||
</data>
|
||||
<data name="Pequest" xml:space="preserve">
|
||||
<value>请求</value>
|
||||
</data>
|
||||
<data name="Subroutine" xml:space="preserve">
|
||||
<value>副功能</value>
|
||||
</data>
|
||||
<data name="DispenseException" xml:space="preserve">
|
||||
<value>输送异常</value>
|
||||
</data>
|
||||
<data name="_Auto" xml:space="preserve">
|
||||
<value>手/自动</value>
|
||||
</data>
|
||||
<data name="Swing" xml:space="preserve">
|
||||
<value>摆布</value>
|
||||
</data>
|
||||
<data name="Start" xml:space="preserve">
|
||||
<value>开始</value>
|
||||
</data>
|
||||
<data name="ProgramName" xml:space="preserve">
|
||||
<value>工艺名</value>
|
||||
</data>
|
||||
<data name="Machines" xml:space="preserve">
|
||||
<value>机台</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -150,21 +150,12 @@
|
||||
<data name="HistoryRecords" xml:space="preserve">
|
||||
<value>歷史</value>
|
||||
</data>
|
||||
<data name="HistoryRecords1" xml:space="preserve">
|
||||
<value>歷史</value>
|
||||
</data>
|
||||
<data name="InOut" xml:space="preserve">
|
||||
<value>輸入輸出</value>
|
||||
</data>
|
||||
<data name="InOut1" xml:space="preserve">
|
||||
<value>輸入輸出</value>
|
||||
</data>
|
||||
<data name="lock" xml:space="preserve">
|
||||
<value>鎖定</value>
|
||||
</data>
|
||||
<data name="lock1" xml:space="preserve">
|
||||
<value>鎖定</value>
|
||||
</data>
|
||||
<data name="New" xml:space="preserve">
|
||||
<value>新建</value>
|
||||
</data>
|
||||
@@ -294,9 +285,6 @@
|
||||
<data name="LineUp" xml:space="preserve">
|
||||
<value>轉入</value>
|
||||
</data>
|
||||
<data name="LineUp1" xml:space="preserve">
|
||||
<value>轉入</value>
|
||||
</data>
|
||||
<data name="Notimplementation" xml:space="preserve">
|
||||
<value>未執行</value>
|
||||
</data>
|
||||
@@ -348,15 +336,9 @@
|
||||
<data name="ID" xml:space="preserve">
|
||||
<value>ID</value>
|
||||
</data>
|
||||
<data name="ID1" xml:space="preserve">
|
||||
<value>ID</value>
|
||||
</data>
|
||||
<data name="Insert" xml:space="preserve">
|
||||
<value>插入</value>
|
||||
</data>
|
||||
<data name="Insert1" xml:space="preserve">
|
||||
<value>插入</value>
|
||||
</data>
|
||||
<data name="Recover" xml:space="preserve">
|
||||
<value>恢復</value>
|
||||
</data>
|
||||
@@ -537,9 +519,6 @@
|
||||
<data name="Invalidfeatures" xml:space="preserve">
|
||||
<value>無效的圖徵</value>
|
||||
</data>
|
||||
<data name="Invalidfeatures1" xml:space="preserve">
|
||||
<value>無效的圖徵</value>
|
||||
</data>
|
||||
<data name="NO" xml:space="preserve">
|
||||
<value>否</value>
|
||||
</data>
|
||||
@@ -607,7 +586,7 @@
|
||||
<value>速率</value>
|
||||
</data>
|
||||
<data name="Tank" xml:space="preserve">
|
||||
<value>缸</value>
|
||||
<value>桶</value>
|
||||
</data>
|
||||
<data name="Tank1" xml:space="preserve">
|
||||
<value>缸</value>
|
||||
@@ -657,9 +636,6 @@
|
||||
<data name="Implementation" xml:space="preserve">
|
||||
<value>執行</value>
|
||||
</data>
|
||||
<data name="Implementation1" xml:space="preserve">
|
||||
<value>執行</value>
|
||||
</data>
|
||||
<data name="process_not" xml:space="preserve">
|
||||
<value>流程不存在</value>
|
||||
</data>
|
||||
@@ -687,9 +663,6 @@
|
||||
<data name="Language" xml:space="preserve">
|
||||
<value>語言</value>
|
||||
</data>
|
||||
<data name="Language1" xml:space="preserve">
|
||||
<value>語言</value>
|
||||
</data>
|
||||
<data name="Paused" xml:space="preserve">
|
||||
<value>已暫停</value>
|
||||
</data>
|
||||
@@ -771,15 +744,9 @@
|
||||
<data name="High-waterlevel" xml:space="preserve">
|
||||
<value>高水位</value>
|
||||
</data>
|
||||
<data name="High-waterlevel1" xml:space="preserve">
|
||||
<value>高水位</value>
|
||||
</data>
|
||||
<data name="Low-waterlevel" xml:space="preserve">
|
||||
<value>低水位</value>
|
||||
</data>
|
||||
<data name="Low-waterlevel1" xml:space="preserve">
|
||||
<value>低水位</value>
|
||||
</data>
|
||||
<data name="ClothWheel" xml:space="preserve">
|
||||
<value>布輪</value>
|
||||
</data>
|
||||
@@ -807,9 +774,6 @@
|
||||
<data name="LnsufficientPower" xml:space="preserve">
|
||||
<value>功率不足</value>
|
||||
</data>
|
||||
<data name="LnsufficientPower1" xml:space="preserve">
|
||||
<value>功率不足</value>
|
||||
</data>
|
||||
<data name="WorkingStatus" xml:space="preserve">
|
||||
<value>工作狀態</value>
|
||||
</data>
|
||||
@@ -942,12 +906,12 @@
|
||||
<data name="DoesNotExist" xml:space="preserve">
|
||||
<value>頁面不存在</value>
|
||||
</data>
|
||||
<data name="ENWOIP" xml:space="preserve">
|
||||
<value>禁止編輯非待處理工單</value>
|
||||
</data>
|
||||
<data name="EHCIP" xml:space="preserve">
|
||||
<value>禁止編輯歷史工單</value>
|
||||
</data>
|
||||
<data name="ENWOIP" xml:space="preserve">
|
||||
<value>禁止編輯非待處理工單</value>
|
||||
</data>
|
||||
<data name="log" xml:space="preserve">
|
||||
<value>日誌</value>
|
||||
</data>
|
||||
@@ -963,10 +927,169 @@
|
||||
<data name="RIS" xml:space="preserve">
|
||||
<value>注冊成功</value>
|
||||
</data>
|
||||
<data name="void_" xml:space="preserve">
|
||||
<value>無效</value>
|
||||
</data>
|
||||
<data name="TRCE" xml:space="preserve">
|
||||
<value>注冊無效</value>
|
||||
</data>
|
||||
<data name="void_" xml:space="preserve">
|
||||
<value>無效</value>
|
||||
</data>
|
||||
<data name="Plan" xml:space="preserve">
|
||||
<value>方案</value>
|
||||
</data>
|
||||
<data name="attached" xml:space="preserve">
|
||||
<value>附</value>
|
||||
</data>
|
||||
<data name="ColorNumber" xml:space="preserve">
|
||||
<value>色號</value>
|
||||
</data>
|
||||
<data name="Client" xml:space="preserve">
|
||||
<value>编辑</value>
|
||||
</data>
|
||||
<data name="ClothSpecies" xml:space="preserve">
|
||||
<value>布種</value>
|
||||
</data>
|
||||
<data name="ClothWeight" xml:space="preserve">
|
||||
<value>布重</value>
|
||||
</data>
|
||||
<data name="BathRatio" xml:space="preserve">
|
||||
<value>浴比</value>
|
||||
</data>
|
||||
<data name="Total" xml:space="preserve">
|
||||
<value>總浴量</value>
|
||||
</data>
|
||||
<data name="ColorName" xml:space="preserve">
|
||||
<value>色名</value>
|
||||
</data>
|
||||
<data name="CloseTheConnection" xml:space="preserve">
|
||||
<value>斷開連線</value>
|
||||
</data>
|
||||
<data name="Online" xml:space="preserve">
|
||||
<value>在線</value>
|
||||
</data>
|
||||
<data name="ERR" xml:space="preserve">
|
||||
<value>錯誤</value>
|
||||
</data>
|
||||
<data name="Fail" xml:space="preserve">
|
||||
<value>失敗</value>
|
||||
</data>
|
||||
<data name="LtemizedSending" xml:space="preserve">
|
||||
<value>發送明細</value>
|
||||
</data>
|
||||
<data name="NotSent" xml:space="preserve">
|
||||
<value>未發送</value>
|
||||
</data>
|
||||
<data name="DNotSent" xml:space="preserve">
|
||||
<value>未發送明細</value>
|
||||
</data>
|
||||
<data name="LinkDispenser" xml:space="preserve">
|
||||
<value>連接染料助劑分配器</value>
|
||||
</data>
|
||||
<data name="TPLHBU" xml:space="preserve">
|
||||
<value>領料單已使用</value>
|
||||
</data>
|
||||
<data name="TTAE" xml:space="preserve">
|
||||
<value>工單已經存在</value>
|
||||
</data>
|
||||
<data name="Details" xml:space="preserve">
|
||||
<value>詳細</value>
|
||||
</data>
|
||||
<data name="ProductCode" xml:space="preserve">
|
||||
<value>原料代碼</value>
|
||||
</data>
|
||||
<data name="ProductName" xml:space="preserve">
|
||||
<value>原料名稱</value>
|
||||
</data>
|
||||
<data name="ProductType" xml:space="preserve">
|
||||
<value>原料類型</value>
|
||||
</data>
|
||||
<data name="Grams" xml:space="preserve">
|
||||
<value>克重</value>
|
||||
</data>
|
||||
<data name="DispenseGrams" xml:space="preserve">
|
||||
<value>實際</value>
|
||||
</data>
|
||||
<data name="DispenseEndTime" xml:space="preserve">
|
||||
<value>完成時間</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>取消</value>
|
||||
</data>
|
||||
<data name="Manual" xml:space="preserve">
|
||||
<value>手動</value>
|
||||
</data>
|
||||
<data name="Not_a" xml:space="preserve">
|
||||
<value>目前功能不可用</value>
|
||||
</data>
|
||||
<data name="Screen" xml:space="preserve">
|
||||
<value>遠端畫面</value>
|
||||
</data>
|
||||
<data name="Volume" xml:space="preserve">
|
||||
<value>容量</value>
|
||||
</data>
|
||||
<data name="DispenseModule" xml:space="preserve">
|
||||
<value>運行模組</value>
|
||||
</data>
|
||||
<data name="Information" xml:space="preserve">
|
||||
<value>訊息</value>
|
||||
</data>
|
||||
<data name="RTRM" xml:space="preserve">
|
||||
<value>重複原料</value>
|
||||
</data>
|
||||
<data name="Not_M" xml:space="preserve">
|
||||
<value>機台不存在</value>
|
||||
</data>
|
||||
<data name="dye" xml:space="preserve">
|
||||
<value>染料</value>
|
||||
</data>
|
||||
<data name="chemicals" xml:space="preserve">
|
||||
<value>助劑</value>
|
||||
</data>
|
||||
<data name="powder" xml:space="preserve">
|
||||
<value>粉體</value>
|
||||
</data>
|
||||
<data name="TMNR" xml:space="preserve">
|
||||
<value>機台未就緒</value>
|
||||
</data>
|
||||
<data name="user_lock" xml:space="preserve">
|
||||
<value>鎖定</value>
|
||||
</data>
|
||||
<data name="user_unlock" xml:space="preserve">
|
||||
<value>解鎖</value>
|
||||
</data>
|
||||
<data name="VOICE" xml:space="preserve">
|
||||
<value>語音</value>
|
||||
</data>
|
||||
<data name="TESTVOICE" xml:space="preserve">
|
||||
<value>測試語音</value>
|
||||
</data>
|
||||
<data name="Speed" xml:space="preserve">
|
||||
<value>語速</value>
|
||||
</data>
|
||||
<data name="Vol" xml:space="preserve">
|
||||
<value>音量</value>
|
||||
</data>
|
||||
<data name="Pequest" xml:space="preserve">
|
||||
<value>請求</value>
|
||||
</data>
|
||||
<data name="Subroutine" xml:space="preserve">
|
||||
<value>副功能</value>
|
||||
</data>
|
||||
<data name="DispenseException" xml:space="preserve">
|
||||
<value>輸送異常</value>
|
||||
</data>
|
||||
<data name="_Auto" xml:space="preserve">
|
||||
<value>手/自動</value>
|
||||
</data>
|
||||
<data name="Swing" xml:space="preserve">
|
||||
<value>擺佈</value>
|
||||
</data>
|
||||
<data name="Start" xml:space="preserve">
|
||||
<value>開始</value>
|
||||
</data>
|
||||
<data name="ProgramName" xml:space="preserve">
|
||||
<value>工藝名</value>
|
||||
</data>
|
||||
<data name="Machines" xml:space="preserve">
|
||||
<value>機器</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -7,6 +7,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SunlightCentralizedControlM
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nGantt", "..\nGantt\nGantt.csproj", "{CCC54F28-5D20-4AB3-A1A8-C62CD2DA3AE7}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VncSharpWpf", "..\VncSharpWpf\VncSharpWpf.csproj", "{77B5CB63-E14B-4253-881D-6BE9D7C57076}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -21,6 +23,10 @@ Global
|
||||
{CCC54F28-5D20-4AB3-A1A8-C62CD2DA3AE7}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{CCC54F28-5D20-4AB3-A1A8-C62CD2DA3AE7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{CCC54F28-5D20-4AB3-A1A8-C62CD2DA3AE7}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{77B5CB63-E14B-4253-881D-6BE9D7C57076}.Debug|Any CPU.ActiveCfg = Debug|x86
|
||||
{77B5CB63-E14B-4253-881D-6BE9D7C57076}.Debug|Any CPU.Build.0 = Debug|x86
|
||||
{77B5CB63-E14B-4253-881D-6BE9D7C57076}.Release|Any CPU.ActiveCfg = Release|x86
|
||||
{77B5CB63-E14B-4253-881D-6BE9D7C57076}.Release|Any CPU.Build.0 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
@@ -77,9 +77,13 @@
|
||||
<Prefer32Bit>true</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="SkiaSharp">
|
||||
<HintPath>bin\Debug\SkiaSharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Speech" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
@@ -93,6 +97,7 @@
|
||||
<Reference Include="WindowsBase" />
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
<Reference Include="WindowsFormsIntegration" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ApplicationDefinition Include="App.xaml">
|
||||
@@ -100,15 +105,37 @@
|
||||
<SubType>Designer</SubType>
|
||||
</ApplicationDefinition>
|
||||
<Compile Include="ConvertMoels\BoolRBConvert.cs" />
|
||||
<Compile Include="ConvertMoels\StatenClassConvert.cs" />
|
||||
<Compile Include="ConvertMoels\BoolToVisidilityConvert.cs" />
|
||||
<Compile Include="ConvertMoels\StatenToImageConvert.cs" />
|
||||
<Compile Include="ConvertMoels\StatexmlConvert.cs" />
|
||||
<Compile Include="EX\DispenseState.xaml.cs">
|
||||
<DependentUpon>DispenseState.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="EX\Exchange\BDC_SQL.cs" />
|
||||
<Compile Include="KEY\TouchKeyboard.xaml.cs">
|
||||
<DependentUpon>TouchKeyboard.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="KEY\TouchKeyboardNumeral.xaml.cs">
|
||||
<DependentUpon>TouchKeyboardNumeral.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="EX\ManualDyelot.xaml.cs">
|
||||
<DependentUpon>ManualDyelot.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="EX\VNC.xaml.cs">
|
||||
<DependentUpon>VNC.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Login.xaml.cs">
|
||||
<DependentUpon>Login.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UserClass\AsyncSerialPortClient.cs" />
|
||||
<Compile Include="UserClass\AsyncTcpClient.cs" />
|
||||
<Compile Include="UserClass\ClsLock.cs" />
|
||||
<Compile Include="UserClass\CRCcheck16.cs" />
|
||||
<Compile Include="UserClass\CSV.cs" />
|
||||
<Compile Include="UserClass\DataGridHelper.cs" />
|
||||
<Compile Include="UserClass\DataTableForToObservableCollection.cs" />
|
||||
<Compile Include="UserClass\DataTableManager .cs" />
|
||||
<Compile Include="UserClass\get_local_ip_address.cs" />
|
||||
<Compile Include="UserClass\HardwareSN.cs" />
|
||||
<Compile Include="UserClass\IniFile.cs" />
|
||||
@@ -117,24 +144,52 @@
|
||||
<Compile Include="UserClass\NetFwManger.cs" />
|
||||
<Compile Include="UserClass\NumericTextColumn .cs" />
|
||||
<Compile Include="UserClass\PID.cs" />
|
||||
<Compile Include="UserClass\RS485MasterStation.cs" />
|
||||
<Compile Include="UserClass\SYSInfo.cs" />
|
||||
<Compile Include="UserClass\PressKey.cs" />
|
||||
<Compile Include="UserClass\SqliteHelper.cs" />
|
||||
<Compile Include="UserClass\StrToInt.cs" />
|
||||
<Compile Include="UserClass\SubItem.cs" />
|
||||
<Compile Include="UserClass\UserControlMenuItem.cs" />
|
||||
<Compile Include="UserControls\DispenseMacInfo.xaml.cs">
|
||||
<DependentUpon>DispenseMacInfo.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="WindowsView\UserWorkOrder.xaml.cs">
|
||||
<DependentUpon>UserWorkOrder.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="WindowsView\UserInf.xaml.cs">
|
||||
<DependentUpon>UserInf.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="WindowsView\UserInformation.xaml.cs">
|
||||
<DependentUpon>UserInformation.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ViewModel\CurveTempModel.cs" />
|
||||
<Compile Include="ViewModel\CurveDiagramViewModel.cs" />
|
||||
<Compile Include="ViewModel\MainWindowViewModel.cs" />
|
||||
<Compile Include="ViewModel\MonitorViewModel.cs" />
|
||||
<Compile Include="ViewModel\ManualDyelotModel.cs" />
|
||||
<Compile Include="ViewModel\ViewModelLocator.cs" />
|
||||
<Compile Include="View\CurveTemp.xaml.cs">
|
||||
<DependentUpon>CurveTemp.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="View\CurveDiagram.xaml.cs">
|
||||
<DependentUpon>CurveDiagram.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="View\LogView.xaml.cs">
|
||||
<DependentUpon>LogView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="View\DispenseView.xaml.cs">
|
||||
<DependentUpon>DispenseView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="View\DispenseMachinesSet.xaml.cs">
|
||||
<DependentUpon>DispenseMachinesSet.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="View\MachinesView.xaml.cs">
|
||||
<DependentUpon>MachinesView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="View\DyeingPlanView.xaml.cs">
|
||||
<DependentUpon>DyeingPlanView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="View\ProductionPlanningEdit.xaml.cs">
|
||||
<DependentUpon>ProductionPlanningEdit.xaml</DependentUpon>
|
||||
</Compile>
|
||||
@@ -168,6 +223,9 @@
|
||||
<Compile Include="UserControls\RoilingTextBlock.xaml.cs">
|
||||
<DependentUpon>RoilingTextBlock.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="View\DyelotView.xaml.cs">
|
||||
<DependentUpon>DyelotView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="View\Whole.xaml.cs">
|
||||
<DependentUpon>Whole.xaml</DependentUpon>
|
||||
</Compile>
|
||||
@@ -189,9 +247,32 @@
|
||||
<Compile Include="WindowsView\User.xaml.cs">
|
||||
<DependentUpon>User.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="WindowsView\UserMessage.xaml.cs">
|
||||
<DependentUpon>UserMessage.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="WindowsView\ViewStep.xaml.cs">
|
||||
<DependentUpon>ViewStep.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Page Include="EX\DispenseState.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="KEY\TouchKeyboard.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="KEY\TouchKeyboardNumeral.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="EX\ManualDyelot.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="EX\VNC.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="Login.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
@@ -214,6 +295,26 @@
|
||||
<DependentUpon>MainWindow.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Page Include="UserControls\DispenseMacInfo.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="WindowsView\UserWorkOrder.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="WindowsView\UserInf.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="WindowsView\UserInformation.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="View\CurveTemp.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="View\CurveDiagram.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
@@ -222,10 +323,22 @@
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="View\DispenseView.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="View\DispenseMachinesSet.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="View\MachinesView.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="View\DyeingPlanView.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="View\ProductionPlanningEdit.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
@@ -270,6 +383,10 @@
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="View\DyelotView.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="View\Whole.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
@@ -298,6 +415,10 @@
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="WindowsView\UserMessage.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="WindowsView\ViewStep.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
@@ -332,6 +453,7 @@
|
||||
<None Include="DATA\Chart.db" />
|
||||
<None Include="DATA\nGantt.zip" />
|
||||
<None Include="DATA\SCCM.db" />
|
||||
<None Include="DATA\VncSharpWpf.zip" />
|
||||
<None Include="Fonts\font-awesome-4.7.0.zip" />
|
||||
<None Include="Fonts\font-awesome-4.7.0\fonts\fontawesome-webfont.eot" />
|
||||
<Resource Include="Fonts\font-awesome-4.7.0\fonts\fontawesome-webfont.ttf" />
|
||||
@@ -388,37 +510,134 @@
|
||||
<Version>2.0.0-rc4.5</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="MaterialDesignThemes">
|
||||
<Version>5.1.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Web.WebView2">
|
||||
<Version>1.0.2903.40</Version>
|
||||
<Version>5.2.1</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="NModbus">
|
||||
<Version>3.0.81</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="ScottPlot">
|
||||
<Version>5.0.47</Version>
|
||||
<Version>5.0.56</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="System.Data.SQLite">
|
||||
<Version>1.0.119</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="System.Management">
|
||||
<Version>9.0.0</Version>
|
||||
<Version>9.0.8</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="System.ObjectModel">
|
||||
<Version>4.3.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="TouchSocket">
|
||||
<Version>3.0.9</Version>
|
||||
<Version>3.1.16</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="TouchSocket.SerialPorts">
|
||||
<Version>3.1.16</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="ControlUse\" />
|
||||
<Folder Include="EX\EXModel\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="EX\DLL\VncSharpWpf.dll" />
|
||||
<Content Include="Fonts\font-awesome-4.7.0\css\font-awesome.css" />
|
||||
<Content Include="Fonts\font-awesome-4.7.0\css\font-awesome.min.css" />
|
||||
<Content Include="Fonts\font-awesome-4.7.0\fonts\fontawesome-webfont.svg" />
|
||||
<Resource Include="lmage\IconParkExtend.png" />
|
||||
<Resource Include="lmage\IconParkExtendR.png" />
|
||||
<Resource Include="lmage\IconParkExtendY.png" />
|
||||
<Resource Include="lmage\IconParkInfo.png" />
|
||||
<Resource Include="lmage\IconParkUsbOne.png" />
|
||||
<Resource Include="lmage\00.png" />
|
||||
<Resource Include="lmage\1000-1.png" />
|
||||
<Resource Include="lmage\1000-2.png" />
|
||||
<Resource Include="lmage\1000-3.png" />
|
||||
<Resource Include="lmage\10000.png" />
|
||||
<Resource Include="lmage\10001.gif" />
|
||||
<Resource Include="lmage\2000.png" />
|
||||
<Resource Include="lmage\2001.png" />
|
||||
<Resource Include="lmage\ADD.jpg" />
|
||||
<Resource Include="lmage\ADD.png" />
|
||||
<Resource Include="lmage\beng_err.png" />
|
||||
<Resource Include="lmage\beng_run.png" />
|
||||
<Resource Include="lmage\beng_stop.png" />
|
||||
<Resource Include="lmage\ERR.png" />
|
||||
<Resource Include="lmage\fa_bili.png" />
|
||||
<Resource Include="lmage\FlatColorIconsCancel.png" />
|
||||
<Resource Include="lmage\FxemojiBellcancellation.png" />
|
||||
<Resource Include="lmage\FxemojiRingingbell.png" />
|
||||
<Resource Include="lmage\guamaoqi.png" />
|
||||
<Resource Include="lmage\guandao %281%29.png" />
|
||||
<Resource Include="lmage\guandao %2810%29.png" />
|
||||
<Resource Include="lmage\guandao %2811%29.png" />
|
||||
<Resource Include="lmage\guandao %2812%29.png" />
|
||||
<Resource Include="lmage\guandao %2813%29.png" />
|
||||
<Resource Include="lmage\guandao %2814%29.png" />
|
||||
<Resource Include="lmage\guandao %2815%29.png" />
|
||||
<Resource Include="lmage\guandao %2816%29.png" />
|
||||
<Resource Include="lmage\guandao %282%29.png" />
|
||||
<Resource Include="lmage\guandao %283%29.png" />
|
||||
<Resource Include="lmage\guandao %284%29.png" />
|
||||
<Resource Include="lmage\guandao %285%29.png" />
|
||||
<Resource Include="lmage\guandao %286%29.png" />
|
||||
<Resource Include="lmage\guandao %287%29.png" />
|
||||
<Resource Include="lmage\guandao %288%29.png" />
|
||||
<Resource Include="lmage\guandao %289%29.png" />
|
||||
<Resource Include="lmage\Hand.png" />
|
||||
<Resource Include="lmage\IconParkAutoFocus.png" />
|
||||
<Resource Include="lmage\IconParkLock.png" />
|
||||
<Resource Include="lmage\IconParkMessages.png" />
|
||||
<Resource Include="lmage\IconParkPauseOne.png" />
|
||||
<Resource Include="lmage\IconParkPlay.png" />
|
||||
<Resource Include="lmage\IconParkPlayTwo.png" />
|
||||
<Resource Include="lmage\IconParkStopwatch.png" />
|
||||
<Resource Include="lmage\ID001.png" />
|
||||
<Resource Include="lmage\ID007.png" />
|
||||
<Resource Include="lmage\ID008.png" />
|
||||
<Resource Include="lmage\ID013.png" />
|
||||
<Resource Include="lmage\ID015.png" />
|
||||
<Resource Include="lmage\ID017.png" />
|
||||
<Resource Include="lmage\ID020.png" />
|
||||
<Resource Include="lmage\ID022.png" />
|
||||
<Resource Include="lmage\ID031.png" />
|
||||
<Resource Include="lmage\ID035.png" />
|
||||
<Resource Include="lmage\ID036.png" />
|
||||
<Resource Include="lmage\ID039.png" />
|
||||
<Resource Include="lmage\ID040.png" />
|
||||
<Resource Include="lmage\ID041.png" />
|
||||
<Resource Include="lmage\ID049.png" />
|
||||
<Resource Include="lmage\ID050.png" />
|
||||
<Resource Include="lmage\ID051.png" />
|
||||
<Resource Include="lmage\ID054.png" />
|
||||
<Resource Include="lmage\ID055.png" />
|
||||
<Resource Include="lmage\ID056.png" />
|
||||
<Resource Include="lmage\ID064.png" />
|
||||
<Resource Include="lmage\ID065.png" />
|
||||
<Resource Include="lmage\ID066.png" />
|
||||
<Resource Include="lmage\ID067.png" />
|
||||
<Resource Include="lmage\ID090.png" />
|
||||
<Resource Include="lmage\ID091.png" />
|
||||
<Resource Include="lmage\ID093.png" />
|
||||
<Resource Include="lmage\ID094.png" />
|
||||
<Resource Include="lmage\inf.png" />
|
||||
<Resource Include="lmage\link.png" />
|
||||
<Resource Include="lmage\LOCK.png" />
|
||||
<Resource Include="lmage\Manual.png" />
|
||||
<Resource Include="lmage\start.png" />
|
||||
<Resource Include="lmage\start2.png" />
|
||||
<Resource Include="lmage\start3.png" />
|
||||
<Resource Include="lmage\StreamlinePlayList4Solid.png" />
|
||||
<Resource Include="lmage\StreamlinePlayList8.png" />
|
||||
<Resource Include="lmage\StreamlineUltimateColorColorPaletteSample1.png" />
|
||||
<Resource Include="lmage\tong.png" />
|
||||
<Resource Include="LOGO\sunlight_logo.jpg" />
|
||||
<Resource Include="LOGO\303pdw.png" />
|
||||
<Resource Include="LOGO\303.png" />
|
||||
<Resource Include="LOGO\302.png" />
|
||||
<Resource Include="LOGO\252RMRD.png" />
|
||||
<Resource Include="LOGO\252RB.png" />
|
||||
<Resource Include="LOGO\252-2t.png" />
|
||||
<Resource Include="LOGO\242w.png" />
|
||||
<Resource Include="sunlight_logotext.jpg" />
|
||||
<Resource Include="WindowsView\sunlight_logotext.jpg" />
|
||||
<Resource Include="sunlightlogo.jpg" />
|
||||
@@ -460,6 +679,13 @@
|
||||
<Project>{ccc54f28-5d20-4ab3-a1a8-c62cd2da3ae7}</Project>
|
||||
<Name>nGantt</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\VncSharpWpf\VncSharpWpf.csproj">
|
||||
<Project>{77b5cb63-e14b-4253-881d-6be9d7c57076}</Project>
|
||||
<Name>VncSharpWpf</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<WCFMetadata Include="Connected Services\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Target Name="AfterResolveReferences">
|
||||
|
||||
@@ -0,0 +1,522 @@
|
||||
using Newtonsoft.Json;
|
||||
using ScottPlot.Plottables;
|
||||
using SunlightCentralizedControlManagement_SCCM_.View;
|
||||
using SunlightCentralizedControlManagement_SCCM_.ViewModel;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using TouchSocket.Core;
|
||||
using TouchSocket.SerialPorts;
|
||||
using TouchSocket.Sockets;
|
||||
using static SkiaSharp.HarfBuzz.SKShaper;
|
||||
using static SunlightCentralizedControlManagement_SCCM_.UserClass.SqliteHelper;
|
||||
using static System.Net.Mime.MediaTypeNames;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.UserClass
|
||||
{
|
||||
public class AsyncSerialPortClient
|
||||
{
|
||||
public static string ClipBetween(string source, char startChar, char endChar, bool includeBounds = false)
|
||||
{
|
||||
if (string.IsNullOrEmpty(source))
|
||||
return string.Empty;
|
||||
|
||||
int startIndex = source.IndexOf(startChar);
|
||||
if (startIndex == -1) return string.Empty;
|
||||
|
||||
int endIndex = source.IndexOf(endChar, startIndex + 1);
|
||||
if (endIndex == -1) return string.Empty;
|
||||
|
||||
if (includeBounds)
|
||||
{
|
||||
return source.Substring(startIndex, endIndex - startIndex + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
int contentStart = startIndex + 1;
|
||||
int contentLength = endIndex - startIndex - 1;
|
||||
return contentLength > 0 ? source.Substring(contentStart, contentLength) : string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
public static string PortCOM1 { get; set; }
|
||||
public static string PortCOM2 { get; set; }
|
||||
public static string PortCOM3 { get; set; }
|
||||
public static string PortCOM4 { get; set; }
|
||||
|
||||
public static async Task PortClient(SerialPortClient portclient, string com, int BAUD)
|
||||
{
|
||||
//var client = new SerialPortClient();
|
||||
portclient.Connecting = (client, e) => { return EasyTask.CompletedTask; };//即将连接到端口
|
||||
portclient.Connected = (client, e) => { return EasyTask.CompletedTask; };//成功连接到端口
|
||||
portclient.Closing = (client, e) => { return EasyTask.CompletedTask; };//即将从端口断开连接。此处仅主动断开才有效。
|
||||
portclient.Closed = (client, e) => { return EasyTask.CompletedTask; };//从端口断开连接,当连接不成功时不会触发。
|
||||
portclient.Received = (client, e) =>
|
||||
{
|
||||
//接受重置事件状态
|
||||
_responseEvent.Set();
|
||||
string[] sArray = Regex.Split(e.ByteBlock.Span.ToString(Encoding.UTF8),
|
||||
@"\n", RegexOptions.IgnoreCase);
|
||||
|
||||
for (int i = 0; i < sArray.Length; i++)
|
||||
{
|
||||
if (sArray[i].Length > 5)
|
||||
{
|
||||
string SYSAPI = sArray[i].Substring(0, 5);
|
||||
string Station = ClipBetween(sArray[i], '[', ']');
|
||||
string DAT = sArray[i].Substring(sArray[i].IndexOf("]") + 1);
|
||||
|
||||
if (SYSAPI == "SC800")
|
||||
{
|
||||
try
|
||||
{
|
||||
Dictionary<string, object> _new = new Dictionary<string, object>();//缓存函数
|
||||
_new = JsonConvert.DeserializeObject<Dictionary<string, object>>(DAT);//反序列化
|
||||
lock (MainWindowViewModel.Machines.Rows.SyncRoot)
|
||||
{
|
||||
DataRow drEmployee = MainWindowViewModel.Machines.Select("Station='" + Station + "' AND Serial = 'PORT1'").First();
|
||||
drEmployee.BeginEdit();
|
||||
drEmployee["State"] = "802";
|
||||
drEmployee.EndEdit();
|
||||
drEmployee.AcceptChanges();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogGing.ERRDATA(ex); MainWindowViewModel.ERR_c++;
|
||||
}
|
||||
}
|
||||
else if (SYSAPI == "SC810")
|
||||
{
|
||||
try
|
||||
{
|
||||
DAT = DAT.Substring(DAT.IndexOf("]") + 1);
|
||||
Dictionary<string, object> _dat;
|
||||
_dat = SerializeConvert.JsonDeserializeFromString<Dictionary<string, object>>(DAT);
|
||||
MainWindowViewModel.SQLiteHelpers.Update("WorkOrder", new Dictionary<string, object> { { "State", 111 } },
|
||||
"WorkOrder ='" + _dat.GetValue("Work") + "' AND ReDye ='" + _dat.GetValue("ReDye") + "'", null);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++;
|
||||
}
|
||||
}//回复的工单记录状态后就位111
|
||||
else if (SYSAPI == "SC811")
|
||||
{
|
||||
try
|
||||
{
|
||||
DAT = DAT.Substring(DAT.IndexOf("]") + 1);
|
||||
Dictionary<string, object> _dat;
|
||||
_dat = SerializeConvert.JsonDeserializeFromString<Dictionary<string, object>>(DAT);
|
||||
MainWindowViewModel.SQLiteHelpers.Update("WorkorderSteps", new Dictionary<string, object> { { "Mode", 1 } },
|
||||
"WorkOrder ='" + _dat.GetValue("Work") + "' AND ReDye ='" + _dat.GetValue("ReDye") + "' AND Step ='" +
|
||||
_dat.GetValue("Step") + "'", null);
|
||||
|
||||
int x = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from WorkorderSteps where WorkOrder='" +
|
||||
_dat.GetValue("Work") + "' AND ReDye ='" + _dat.GetValue("ReDye") + "' AND Mode <> '1'", null).Tables[0].Rows.Count;
|
||||
if (x == 0)
|
||||
{
|
||||
MainWindowViewModel.SQLiteHelpers.Update("WorkOrder", new Dictionary<string, object> { { "State", 113 } },
|
||||
"WorkOrder ='" + _dat.GetValue("Work") + "' AND ReDye ='" + _dat.GetValue("ReDye") + "'", null);
|
||||
}
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}//回复的工单明细状态后就位113
|
||||
else if (SYSAPI == "SC812")
|
||||
{
|
||||
try
|
||||
{
|
||||
DAT = DAT.Substring(DAT.IndexOf("]") + 1);
|
||||
Dictionary<string, object> _dat;
|
||||
_dat = SerializeConvert.JsonDeserializeFromString<Dictionary<string, object>>(DAT);
|
||||
MainWindowViewModel.SQLiteHelpers.Update("WorkOrder", new Dictionary<string, object> { { "State", 101 } },
|
||||
"WorkOrder ='" + _dat.GetValue("Work") + "' AND ReDye ='" + _dat.GetValue("ReDye") + "'", null);
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}//回复的工单设置状态后就位101
|
||||
else if (SYSAPI == "SC827")
|
||||
{
|
||||
try
|
||||
{
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}//获取呼叫领料单
|
||||
else if (SYSAPI == "SC830")
|
||||
{
|
||||
try
|
||||
{
|
||||
Dictionary<string, object> _new = new Dictionary<string, object>();//缓存函数
|
||||
_new = JsonConvert.DeserializeObject<Dictionary<string, object>>(DAT);//反序列化
|
||||
string mac;
|
||||
lock (MainWindowViewModel.Machines.Rows.SyncRoot)
|
||||
{
|
||||
DataRow drEmployee = MainWindowViewModel.Machines.Select("Station='" + Station + "' AND Serial = 'PORT1'").First();
|
||||
mac = drEmployee["Name"].ToString();
|
||||
drEmployee.BeginEdit();
|
||||
drEmployee["ERR"] = _new.GetValue("ERR");
|
||||
drEmployee["LOCK"] = _new.GetValue("LOCK");
|
||||
drEmployee["Message"] = _new.GetValue("Status");
|
||||
drEmployee["WorkOrder"] = _new.GetValue("Work");
|
||||
drEmployee["Temperature"] = _new.GetValue("MTT");
|
||||
drEmployee["WaterLevel"] = _new.GetValue("MTL");
|
||||
drEmployee["Process"] = _new.GetValue("Process");
|
||||
drEmployee["Step"] = _new.GetValue("Step");
|
||||
drEmployee["UserButton"] = _new.GetValue("UserB");
|
||||
if (_new.GetValue("InfoS").ToString() != "900")
|
||||
{ drEmployee["UserInfoStart"] = _new.GetValue("InfoS"); }
|
||||
drEmployee["UserInfo"] = _new.GetValue("Info");
|
||||
drEmployee["WORK_RUN"] = _new.GetValue("RUN");
|
||||
drEmployee["RUN_STEPID"] = _new.GetValue("STEPID");
|
||||
drEmployee["CALL"] = _new.GetValue("CALL");
|
||||
drEmployee.EndEdit();
|
||||
drEmployee.AcceptChanges();
|
||||
}
|
||||
|
||||
if (_new.GetValue("Status").ToString() != "----------")
|
||||
{
|
||||
Dictionary<string, object> Chart_new = new Dictionary<string, object>();//缓存函数
|
||||
Chart_new.Add("WorkOrder", _new.GetValue("Work"));
|
||||
//Chart_new.Add("Machine", mac);
|
||||
//Chart_new.Add("Time", _new.GetValue("Time"));
|
||||
Chart_new.Add("MST", _new.GetValue("MST"));
|
||||
Chart_new.Add("MTT", _new.GetValue("MTT"));
|
||||
Chart_new.Add("MTL", _new.GetValue("MTL"));
|
||||
Chart_new.Add("MTH", _new.GetValue("MTH"));
|
||||
Chart_new.Add("MUT", _new.GetValue("MUT"));
|
||||
Chart_new.Add("STTA", _new.GetValue("STTA"));
|
||||
Chart_new.Add("STLA", _new.GetValue("STLA"));
|
||||
Chart_new.Add("STTB", _new.GetValue("STTB"));
|
||||
Chart_new.Add("STLB", _new.GetValue("STLB"));
|
||||
Chart_new.Add("STTC", _new.GetValue("STTC"));
|
||||
Chart_new.Add("STLC", _new.GetValue("STLC"));
|
||||
|
||||
MainWindowViewModel.SQLiteChartAdress.InsertData("Chart", Chart_new);// 执行插入
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++;
|
||||
}
|
||||
}//当前信息
|
||||
else if (SYSAPI == "SC831")
|
||||
{
|
||||
try
|
||||
{
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}
|
||||
else if (SYSAPI == "SC832")
|
||||
{
|
||||
try
|
||||
{
|
||||
MainWindowViewModel.MachineLOG = DAT;
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}//当前细节信息
|
||||
else if (SYSAPI == "SC833")
|
||||
{
|
||||
try
|
||||
{
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}//当前领料单信息
|
||||
else if (SYSAPI == "SC851")
|
||||
{
|
||||
try
|
||||
{
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}//数字开关表
|
||||
else if (SYSAPI == "SC852")
|
||||
{
|
||||
try
|
||||
{
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}//寄存器表
|
||||
else if (SYSAPI == "SC853")
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}//缓存表
|
||||
else if (SYSAPI == "SC854")
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}//程序设置表
|
||||
else if (SYSAPI == "SC855")
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}//系统设置表
|
||||
else if (SYSAPI == "SC859")
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}//信息
|
||||
else if (SYSAPI == "SC910")
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}//发布失败
|
||||
else if (SYSAPI == "SC911")
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}//细节错误
|
||||
else if (SYSAPI == "SC980")
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return EasyTask.CompletedTask; ;
|
||||
};
|
||||
await portclient.SetupAsync(new TouchSocketConfig()
|
||||
.SetMaxBufferSize(1024 * 1024 * 10)
|
||||
.SetSerialPortOption(new SerialPortOption()
|
||||
{
|
||||
BaudRate = BAUD,//波特率
|
||||
DataBits = 8,//数据位
|
||||
Parity = System.IO.Ports.Parity.None,//校验位
|
||||
PortName = com,//COM
|
||||
StopBits = System.IO.Ports.StopBits.One,//停止位
|
||||
})
|
||||
.SetSerialDataHandlingAdapter(() => new PeriodPackageAdapter() { CacheTimeout = TimeSpan.FromMilliseconds(100) })
|
||||
.ConfigurePlugins(a =>
|
||||
{
|
||||
//a.Add<MyPlugin>();
|
||||
}
|
||||
));
|
||||
try
|
||||
{
|
||||
await portclient.ConnectAsync();
|
||||
}
|
||||
catch (Exception ex) { LogGing.ERRDATA(ex); }
|
||||
}
|
||||
public static async Task PortClient2(SerialPortClient portclient, string com, int BAUD)
|
||||
{
|
||||
//var client = new SerialPortClient();
|
||||
portclient.Connecting = (client, e) => { return EasyTask.CompletedTask; };//即将连接到端口
|
||||
portclient.Connected = (client, e) => { return EasyTask.CompletedTask; };//成功连接到端口
|
||||
portclient.Closing = (client, e) => { return EasyTask.CompletedTask; };//即将从端口断开连接。此处仅主动断开才有效。
|
||||
portclient.Closed = (client, e) => { return EasyTask.CompletedTask; };//从端口断开连接,当连接不成功时不会触发。
|
||||
portclient.Received = (client, e) =>
|
||||
{
|
||||
_responseEvent2.Set();
|
||||
string[] sArray = Regex.Split(e.ByteBlock.Span.ToString(Encoding.UTF8),
|
||||
@"\n", RegexOptions.IgnoreCase);
|
||||
|
||||
|
||||
|
||||
return EasyTask.CompletedTask; ;
|
||||
};
|
||||
await portclient.SetupAsync(new TouchSocketConfig()
|
||||
.SetSerialPortOption(new SerialPortOption()
|
||||
{
|
||||
BaudRate = BAUD,//波特率
|
||||
DataBits = 8,//数据位
|
||||
Parity = System.IO.Ports.Parity.None,//校验位
|
||||
PortName = com,//COM
|
||||
StopBits = System.IO.Ports.StopBits.One,//停止位
|
||||
})
|
||||
.SetSerialDataHandlingAdapter(() => new PeriodPackageAdapter() { CacheTimeout = TimeSpan.FromMilliseconds(100) })
|
||||
.ConfigurePlugins(a =>
|
||||
{
|
||||
//a.Add<MyPlugin>();
|
||||
}));
|
||||
try
|
||||
{
|
||||
await portclient.ConnectAsync();
|
||||
}
|
||||
catch (Exception ex) { LogGing.ERRDATA(ex); }
|
||||
}
|
||||
public static async Task PortClient3(SerialPortClient portclient, string com, int BAUD)
|
||||
{
|
||||
//var client = new SerialPortClient();
|
||||
portclient.Connecting = (client, e) => { return EasyTask.CompletedTask; };//即将连接到端口
|
||||
portclient.Connected = (client, e) => { return EasyTask.CompletedTask; };//成功连接到端口
|
||||
portclient.Closing = (client, e) => { return EasyTask.CompletedTask; };//即将从端口断开连接。此处仅主动断开才有效。
|
||||
portclient.Closed = (client, e) => { return EasyTask.CompletedTask; };//从端口断开连接,当连接不成功时不会触发。
|
||||
portclient.Received = (client, e) =>
|
||||
{
|
||||
_responseEvent3.Set();
|
||||
string[] sArray = Regex.Split(e.ByteBlock.Span.ToString(Encoding.UTF8),
|
||||
@"\n", RegexOptions.IgnoreCase);
|
||||
|
||||
|
||||
|
||||
return EasyTask.CompletedTask; ;
|
||||
};
|
||||
await portclient.SetupAsync(new TouchSocketConfig()
|
||||
.SetSerialPortOption(new SerialPortOption()
|
||||
{
|
||||
BaudRate = BAUD,//波特率
|
||||
DataBits = 8,//数据位
|
||||
Parity = System.IO.Ports.Parity.None,//校验位
|
||||
PortName = com,//COM
|
||||
StopBits = System.IO.Ports.StopBits.One,//停止位
|
||||
})
|
||||
.SetSerialDataHandlingAdapter(() => new PeriodPackageAdapter() { CacheTimeout = TimeSpan.FromMilliseconds(100) })
|
||||
.ConfigurePlugins(a =>
|
||||
{
|
||||
//a.Add<MyPlugin>();
|
||||
}));
|
||||
try
|
||||
{
|
||||
await portclient.ConnectAsync();
|
||||
}
|
||||
catch (Exception ex) { LogGing.ERRDATA(ex); }
|
||||
}
|
||||
public static async Task PortClient4(SerialPortClient portclient, string com, int BAUD)
|
||||
{
|
||||
//var client = new SerialPortClient();
|
||||
portclient.Connecting = (client, e) => { return EasyTask.CompletedTask; };//即将连接到端口
|
||||
portclient.Connected = (client, e) => { return EasyTask.CompletedTask; };//成功连接到端口
|
||||
portclient.Closing = (client, e) => { return EasyTask.CompletedTask; };//即将从端口断开连接。此处仅主动断开才有效。
|
||||
portclient.Closed = (client, e) => { return EasyTask.CompletedTask; };//从端口断开连接,当连接不成功时不会触发。
|
||||
portclient.Received = (client, e) =>
|
||||
{
|
||||
_responseEvent4.Set();
|
||||
string[] sArray = Regex.Split(e.ByteBlock.Span.ToString(Encoding.UTF8),
|
||||
@"\n", RegexOptions.IgnoreCase);
|
||||
|
||||
return EasyTask.CompletedTask; ;
|
||||
};
|
||||
await portclient.SetupAsync(new TouchSocketConfig()
|
||||
.SetSerialPortOption(new SerialPortOption()
|
||||
{
|
||||
BaudRate = BAUD,//波特率
|
||||
DataBits = 8,//数据位
|
||||
Parity = System.IO.Ports.Parity.None,//校验位
|
||||
PortName = com,//COM
|
||||
StopBits = System.IO.Ports.StopBits.One,//停止位
|
||||
})
|
||||
.SetSerialDataHandlingAdapter(() => new PeriodPackageAdapter() { CacheTimeout = TimeSpan.FromMilliseconds(500) })
|
||||
.ConfigurePlugins(a =>
|
||||
{
|
||||
//a.Add<MyPlugin>();
|
||||
}));
|
||||
try
|
||||
{
|
||||
await portclient.ConnectAsync();
|
||||
}
|
||||
catch (Exception ex) { LogGing.ERRDATA(ex); }
|
||||
}
|
||||
|
||||
public static readonly ManualResetEventSlim _responseEvent = new ManualResetEventSlim(false);
|
||||
public static readonly ManualResetEventSlim _responseEvent2 = new ManualResetEventSlim(false);
|
||||
public static readonly ManualResetEventSlim _responseEvent3 = new ManualResetEventSlim(false);
|
||||
public static readonly ManualResetEventSlim _responseEvent4 = new ManualResetEventSlim(false);
|
||||
/// <summary>
|
||||
/// 发送指令并等待响应,超时时间为500ms
|
||||
/// </summary>
|
||||
/// <param name="command">要发送的指令字节数组</param>
|
||||
/// <returns>从机的响应数据,超时则为null</returns>
|
||||
public static void SendCommandAndWait(SerialPortClient serialPortClients, string command)
|
||||
{
|
||||
try
|
||||
{
|
||||
var t = CRCcheck16.ToCRC16(command);
|
||||
_responseEvent.Reset();
|
||||
serialPortClients.Send(command); // 发送指令
|
||||
|
||||
// 等待500毫秒或直到收到响应
|
||||
if (!_responseEvent.Wait(TimeSpan.FromMilliseconds(1000)))
|
||||
{
|
||||
_responseEvent.Set();
|
||||
//清楚了解状态
|
||||
string Station = ClipBetween(command, '[', ']');
|
||||
lock (MainWindowViewModel.Machines.Rows.SyncRoot)
|
||||
{
|
||||
DataRow drEmployee = MainWindowViewModel.Machines.Select("Station='" +
|
||||
Station + "' AND Serial = 'PORT1'").First();
|
||||
if (drEmployee.Field<int>("State") != 800)
|
||||
{
|
||||
drEmployee.BeginEdit();
|
||||
drEmployee["State"] = "800";
|
||||
drEmployee["WorkOrder"] = "------";
|
||||
drEmployee["Dyelot"] = "";
|
||||
drEmployee["Temperature"] = 0.0;
|
||||
drEmployee["WaterLevel"] = 0.0;
|
||||
drEmployee["Process"] = "";
|
||||
drEmployee["Step"] = "";
|
||||
drEmployee["Message"] = "";
|
||||
drEmployee["SYSKEY"] = "";
|
||||
drEmployee["WORK_RUN"] = "-1";
|
||||
drEmployee["ERR"] = false;
|
||||
drEmployee.EndEdit();
|
||||
drEmployee.AcceptChanges();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception) { }
|
||||
}
|
||||
public static void SendCommandAndWait2(SerialPortClient serialPortClients, string command)
|
||||
{
|
||||
try
|
||||
{
|
||||
_responseEvent2.Reset();
|
||||
serialPortClients.Send(command); // 发送指令
|
||||
// 等待500毫秒或直到收到响应
|
||||
_responseEvent2.Wait(TimeSpan.FromMilliseconds(1000));
|
||||
// 重置事件状态
|
||||
_responseEvent2.Set();
|
||||
}
|
||||
catch (Exception) { }
|
||||
}
|
||||
public static void SendCommandAndWait3(SerialPortClient serialPortClients, string command)
|
||||
{
|
||||
try
|
||||
{
|
||||
_responseEvent3.Reset();
|
||||
serialPortClients.Send(command); // 发送指令
|
||||
// 等待500毫秒或直到收到响应
|
||||
_responseEvent3.Wait(TimeSpan.FromMilliseconds(1000));
|
||||
// 重置事件状态
|
||||
_responseEvent3.Set();
|
||||
}
|
||||
catch (Exception) { }
|
||||
}
|
||||
public static void SendCommandAndWait4(SerialPortClient serialPortClients, string command)
|
||||
{
|
||||
try
|
||||
{
|
||||
_responseEvent4.Reset();
|
||||
serialPortClients.Send(command); // 发送指令
|
||||
// 等待500毫秒或直到收到响应
|
||||
_responseEvent4.Wait(TimeSpan.FromMilliseconds(1000));
|
||||
// 重置事件状态
|
||||
_responseEvent4.Set();
|
||||
}
|
||||
catch (Exception) { }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,33 +1,39 @@
|
||||
using System;
|
||||
using DyeingComputer.UserClass;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using ScottPlot;
|
||||
using ScottPlot.Colormaps;
|
||||
using SkiaSharp;
|
||||
using SunlightCentralizedControlManagement_SCCM_.View;
|
||||
using SunlightCentralizedControlManagement_SCCM_.ViewModel;
|
||||
using SunlightCentralizedControlManagement_SCCM_.WindowsView;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Net.Sockets;
|
||||
using System.Reflection.Emit;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Diagnostics;
|
||||
using TouchSocket.Core;
|
||||
using TouchSocket.Sockets;
|
||||
using SunlightCentralizedControlManagement_SCCM_.ViewModel;
|
||||
using System.Runtime.InteropServices;
|
||||
using ScottPlot.Colormaps;
|
||||
using static System.Windows.Forms.AxHost;
|
||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement.TaskbarClock;
|
||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
|
||||
using Newtonsoft.Json;
|
||||
using static SunlightCentralizedControlManagement_SCCM_.UserClass.SqliteHelper;
|
||||
using SunlightCentralizedControlManagement_SCCM_.View;
|
||||
using TcpClient = TouchSocket.Sockets.TcpClient;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Xml.Linq;
|
||||
using ScottPlot;
|
||||
using System.Collections;
|
||||
using DyeingComputer.UserClass;
|
||||
using System.Windows;
|
||||
using System.Windows.Documents;
|
||||
using System.Xml.Linq;
|
||||
using TouchSocket.Core;
|
||||
using TouchSocket.SerialPorts;
|
||||
using TouchSocket.Sockets;
|
||||
using static SunlightCentralizedControlManagement_SCCM_.UserClass.SqliteHelper;
|
||||
using static SunlightCentralizedControlManagement_SCCM_.View.MachinesView;
|
||||
using static System.Windows.Forms.AxHost;
|
||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
|
||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement.TaskbarClock;
|
||||
using TcpClient = TouchSocket.Sockets.TcpClient;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.UserClass
|
||||
{/// <summary>
|
||||
@@ -35,62 +41,89 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass
|
||||
/// </summary>
|
||||
public class AsyncTcpClient
|
||||
{
|
||||
private static SQLiteHelper SQLiteHelpers = null; //定义数据库
|
||||
private static readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db"; //数据库路径
|
||||
private static readonly string ChartAdress = Environment.CurrentDirectory + "\\DataBase\\Chart.db"; //数据库路径
|
||||
public static async Task TcpClient(TcpClient tcpClient, string ip, string port)
|
||||
{
|
||||
//TcpClient tcpClient = new TcpClient();
|
||||
tcpClient.Connecting = (client, e) => { return EasyTask.CompletedTask; };//即将连接到服务器,此时已经创建socket,但是还未建立tcp
|
||||
tcpClient.Connected = (client, e) =>
|
||||
{
|
||||
DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "' AND port='" + client.Port + "'").First();
|
||||
drEmployee.BeginEdit();
|
||||
drEmployee["State"] = "801";
|
||||
drEmployee.EndEdit();
|
||||
drEmployee.AcceptChanges();
|
||||
drEmployee.ClearErrors();
|
||||
|
||||
LogGing.LogGingDATA("[IP='" + client.IP + "' AND port='" + client.Port + "']=Link_OK");
|
||||
try
|
||||
{
|
||||
lock (MainWindowViewModel.Machines.Rows.SyncRoot)
|
||||
{
|
||||
DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "'").First();
|
||||
drEmployee.BeginEdit();
|
||||
drEmployee["State"] = "801";
|
||||
drEmployee.EndEdit();
|
||||
drEmployee.AcceptChanges();
|
||||
}
|
||||
LogGing.LogGingDATA("[IP='" + client.IP + "' AND port='" + client.Port + "']=Link_OK");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogGing.ERRDATA(ex); MainWindowViewModel.ERR_c++;
|
||||
}
|
||||
|
||||
return EasyTask.CompletedTask;
|
||||
};//成功连接到服务器
|
||||
};//成功连接到服务器
|
||||
tcpClient.Closing = (client, e) =>
|
||||
{
|
||||
DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "' AND port='" + client.Port + "'").First();
|
||||
drEmployee.BeginEdit();
|
||||
drEmployee["State"] = "899";
|
||||
drEmployee["WorkOrder"] = "------";
|
||||
drEmployee["Dyelot"] = "";
|
||||
drEmployee["Temperature"] = "---.-";
|
||||
drEmployee["WaterLevel"] = "----";
|
||||
drEmployee["Process"] = "";
|
||||
drEmployee["Step"] = "";
|
||||
drEmployee["Message"] = "";
|
||||
drEmployee.EndEdit();
|
||||
drEmployee.AcceptChanges();
|
||||
drEmployee.ClearErrors();
|
||||
LogGing.LogGingDATA("[IP='" + client.IP + "' AND port='" + client.Port + "']=Link_STOP");
|
||||
|
||||
try
|
||||
{
|
||||
lock (MainWindowViewModel.Machines.Rows.SyncRoot)
|
||||
{
|
||||
DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "'").First();
|
||||
drEmployee.BeginEdit();
|
||||
drEmployee["State"] = "800";
|
||||
drEmployee["WorkOrder"] = "------";
|
||||
drEmployee["Dyelot"] = "";
|
||||
drEmployee["Temperature"] = 0.0;
|
||||
drEmployee["WaterLevel"] = 0.0;
|
||||
drEmployee["Process"] = "";
|
||||
drEmployee["Step"] = "";
|
||||
drEmployee["Message"] = "";
|
||||
drEmployee["SYSKEY"] = "";
|
||||
drEmployee["WORK_RUN"] = "-1";
|
||||
drEmployee["ERR"] = false;
|
||||
drEmployee.EndEdit();
|
||||
drEmployee.AcceptChanges();
|
||||
}
|
||||
LogGing.LogGingDATA("[IP='" + client.IP + "' AND port='" + client.Port + "']=Link_STOP");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogGing.ERRDATA(ex); MainWindowViewModel.ERR_c++;
|
||||
}
|
||||
return EasyTask.CompletedTask;
|
||||
};//即将从服务器断开连接。此处仅主动断开才有效。
|
||||
tcpClient.Closed = (client, e) =>
|
||||
{
|
||||
DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "' AND port='" + client.Port + "'").First();
|
||||
drEmployee.BeginEdit();
|
||||
drEmployee["State"] = "899";
|
||||
drEmployee["WorkOrder"] = "------";
|
||||
drEmployee["Dyelot"] = "";
|
||||
drEmployee["Temperature"] = "---.-";
|
||||
drEmployee["WaterLevel"] = "----";
|
||||
drEmployee["Process"] = "";
|
||||
drEmployee["Step"] = "";
|
||||
drEmployee["Message"] = "";
|
||||
drEmployee.EndEdit();
|
||||
drEmployee.AcceptChanges();
|
||||
drEmployee.ClearErrors();
|
||||
LogGing.LogGingDATA("[IP='" + client.IP + "' AND port='" + client.Port + "']=Link_INTERRUPT");
|
||||
|
||||
try
|
||||
{
|
||||
lock (MainWindowViewModel.Machines.Rows.SyncRoot)
|
||||
{
|
||||
DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "'").First();
|
||||
drEmployee.BeginEdit();
|
||||
drEmployee["State"] = "800";
|
||||
drEmployee["WorkOrder"] = "------";
|
||||
drEmployee["Dyelot"] = "";
|
||||
drEmployee["Temperature"] = 0.0;
|
||||
drEmployee["WaterLevel"] = 0.0;
|
||||
drEmployee["Process"] = "";
|
||||
drEmployee["Step"] = "";
|
||||
drEmployee["Message"] = "";
|
||||
drEmployee["SYSKEY"] = "";
|
||||
drEmployee["WORK_RUN"] = "-1";
|
||||
drEmployee["ERR"] = false;
|
||||
drEmployee.EndEdit();
|
||||
drEmployee.AcceptChanges();
|
||||
}
|
||||
LogGing.LogGingDATA("[IP='" + client.IP + "' AND port='" + client.Port + "']=Link_INTERRUPT");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogGing.ERRDATA(ex); MainWindowViewModel.ERR_c++;
|
||||
}
|
||||
return EasyTask.CompletedTask;
|
||||
};//从服务器断开连接,当连接不成功时不会触发。
|
||||
tcpClient.Received = (client, e) =>
|
||||
@@ -105,43 +138,141 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass
|
||||
DAT = DAT.Substring(DAT.IndexOf("]") + 1);
|
||||
Dictionary<string, object> Chart_new = new Dictionary<string, object>();//缓存函数
|
||||
Chart_new = JsonConvert.DeserializeObject<Dictionary<string, object>>(DAT);//反序列化
|
||||
DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "' AND port='" + client.Port + "'").First();
|
||||
drEmployee.BeginEdit();
|
||||
drEmployee["SYSKEY"] = Chart_new.GetValue("SYSKEY").ToString();
|
||||
drEmployee["NAME"] = Chart_new.GetValue("MACHINE").ToString();
|
||||
drEmployee["Groups"] = Chart_new.GetValue("GROUP").ToString();
|
||||
drEmployee["State"] = "802";
|
||||
drEmployee.EndEdit();
|
||||
drEmployee.AcceptChanges();
|
||||
drEmployee.ClearErrors();
|
||||
lock (MainWindowViewModel.Machines.Rows.SyncRoot)
|
||||
{
|
||||
DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "'").First();
|
||||
drEmployee.BeginEdit();
|
||||
drEmployee["SYSKEY"] = Chart_new.GetValue("SYSKEY").ToString();
|
||||
// drEmployee["NAME"] = Chart_new.GetValue("MACHINE").ToString();
|
||||
drEmployee["Groups"] = Chart_new.GetValue("GROUP").ToString();
|
||||
drEmployee["State"] = "802";
|
||||
drEmployee.EndEdit();
|
||||
drEmployee.AcceptChanges();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogGing.ERRDATA(ex); MainWindowViewModel.ERR_c++;
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}
|
||||
else if (SYSAPI == "SC810")
|
||||
{
|
||||
try
|
||||
{
|
||||
DAT = DAT.Substring(DAT.IndexOf("]") + 1);
|
||||
SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
|
||||
SQLiteHelpers.Open(); //打开数据库
|
||||
SQLiteHelpers.Update("WorkOrder", new Dictionary<string, object> { { "State", 111 } },
|
||||
|
||||
MainWindowViewModel.SQLiteHelpers.Update("WorkOrder", new Dictionary<string, object> { { "State", 111 } },
|
||||
"WorkOrder ='" + DAT + "'", null);
|
||||
SQLiteHelpers.Close();
|
||||
// Dictionary<string, object> _dat;
|
||||
// _dat = SerializeConvert.JsonDeserializeFromString<Dictionary<string, object>>(DAT);
|
||||
// MainWindowViewModel.SQLiteHelpers.Update("WorkOrder", new Dictionary<string, object> { { "State", 111 } },
|
||||
// "WorkOrder ='" + _dat.GetValue("WorkOrder") + "' AND ReDye ='" + _dat.GetValue("ReDye") + "'", null);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++;
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}
|
||||
else if (SYSAPI == "SC811")
|
||||
{
|
||||
try
|
||||
{
|
||||
DAT = DAT.Substring(DAT.IndexOf("]") + 1);
|
||||
SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
|
||||
SQLiteHelpers.Open(); //打开数据库
|
||||
SQLiteHelpers.Update("WorkOrder", new Dictionary<string, object> { { "State", 101 } },
|
||||
|
||||
MainWindowViewModel.SQLiteHelpers.Update("WorkOrder", new Dictionary<string, object> { { "State", 111 } },
|
||||
"WorkOrder ='" + DAT + "'", null);
|
||||
SQLiteHelpers.Close();
|
||||
}catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
// Dictionary<string, object> _dat;
|
||||
// _dat = SerializeConvert.JsonDeserializeFromString<Dictionary<string, object>>(DAT);
|
||||
// MainWindowViewModel.SQLiteHelpers.Update("WorkOrder", new Dictionary<string, object> { { "State", 113 } },
|
||||
// "WorkOrder ='" + _dat.GetValue("WorkOrder") + "' AND ReDye ='"+ _dat.GetValue("ReDye") + "'", null);
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}
|
||||
else if (SYSAPI == "SC812")
|
||||
{
|
||||
try
|
||||
{
|
||||
DAT = DAT.Substring(DAT.IndexOf("]") + 1);
|
||||
MainWindowViewModel.SQLiteHelpers.Update("WorkOrder", new Dictionary<string, object> { { "State", 101 } },
|
||||
"WorkOrder ='" + DAT + "'", null);
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}
|
||||
else if (SYSAPI == "SC822")
|
||||
{
|
||||
try
|
||||
{
|
||||
DAT = DAT.Substring(DAT.IndexOf("]") + 1);
|
||||
DataTable dataTable = JsonConvert.DeserializeObject<DataTable>(DAT).Copy();//反序列化
|
||||
Application.Current.Dispatcher.Invoke(() =>
|
||||
{
|
||||
UserWorkOrder userWorkOrder = new UserWorkOrder();
|
||||
userWorkOrder.WorkOrderTable = dataTable;
|
||||
userWorkOrder.Show();
|
||||
});
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
Application.Current.Dispatcher.Invoke(() =>
|
||||
{
|
||||
UserInf userInf = new UserInf();
|
||||
userInf.Inf_DAT = "没有等待中的工艺";
|
||||
userInf.Show();
|
||||
userInf.Activate();
|
||||
});
|
||||
|
||||
// LogGing.LogGingDATA("[ERR='" + ex + "']=Exception");
|
||||
MainWindowViewModel.ERR_c++;
|
||||
}
|
||||
}
|
||||
else if (SYSAPI == "SC827")
|
||||
{
|
||||
try
|
||||
{
|
||||
DAT = DAT.Substring(DAT.IndexOf("]") + 1);
|
||||
DataTable dataTable = JsonConvert.DeserializeObject<DataTable>(DAT);//反序列化
|
||||
|
||||
foreach (DataRow sourceRow in dataTable.Rows)
|
||||
{
|
||||
lock (MainWindowViewModel.Dyelot_CALL.Rows.SyncRoot)
|
||||
{
|
||||
// 创建新行(基于目标表结构)
|
||||
DataRow newRow = MainWindowViewModel.Dyelot_CALL.NewRow();
|
||||
// 复制源表中存在的列数据
|
||||
foreach (DataColumn column in dataTable.Columns)
|
||||
{
|
||||
if (MainWindowViewModel.Dyelot_CALL.Columns.Contains(column.ColumnName))
|
||||
{
|
||||
newRow[column.ColumnName] = sourceRow[column.ColumnName];
|
||||
}
|
||||
}
|
||||
MainWindowViewModel.Dyelot_CALL.Rows.Add(newRow);
|
||||
|
||||
Dictionary<string, object> Product_ = new Dictionary<string, object>();//缓存函数
|
||||
Product_.Add("State", 202);
|
||||
Product_.Add("Dyelot", newRow.Field<string>("Dyelot"));
|
||||
Product_.Add("Step", newRow.Field<int>("Step"));
|
||||
Product_.Add("ProductCode", newRow.Field<string>("ProductCode"));
|
||||
Product_.Add("Amount", newRow.Field<object>("Amount"));
|
||||
Product_.Add("DispenseEndTime", newRow.Field<object>("DispenseEndTime"));
|
||||
|
||||
newRow.BeginEdit();
|
||||
newRow["State"] = 202;
|
||||
newRow.EndEdit();
|
||||
|
||||
MainWindowViewModel.SQLiteHelpers.InsertData("DyelotHistory", MainWindowViewModel.SQLiteHelpers.ToDictionary(newRow));// 执行插入
|
||||
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
|
||||
{
|
||||
ID = Convert.ToInt16(MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines,
|
||||
"ID", "Name='" + newRow.Field<string>("Machine") + "'")),
|
||||
DAT = "SC828" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines,
|
||||
"SYSKEY", "Name='" + newRow.Field<string>("Machine") + "'") + Product_.ToJsonString()
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}//获取呼叫领料单
|
||||
else if (SYSAPI == "SC830")
|
||||
{
|
||||
try
|
||||
@@ -149,24 +280,37 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass
|
||||
DAT = DAT.Substring(DAT.IndexOf("]") + 1);
|
||||
Dictionary<string, object> _new = new Dictionary<string, object>();//缓存函数
|
||||
_new = JsonConvert.DeserializeObject<Dictionary<string, object>>(DAT);//反序列化
|
||||
DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "' AND port='" + client.Port + "'").First();
|
||||
drEmployee.BeginEdit();
|
||||
drEmployee["Message"] = _new.GetValue("Status");
|
||||
drEmployee["WorkOrder"] = _new.GetValue("WorkNumder");
|
||||
drEmployee["Temperature"] = _new.GetValue("MTT");
|
||||
drEmployee["WaterLevel"] = _new.GetValue("MTL");
|
||||
drEmployee["Process"] = _new.GetValue("Process");
|
||||
drEmployee["Step"] = _new.GetValue("Step");
|
||||
drEmployee.EndEdit();
|
||||
drEmployee.AcceptChanges();
|
||||
drEmployee.ClearErrors();
|
||||
|
||||
string mac;
|
||||
// 首先确保 DataTable 使用线程安全的访问方式
|
||||
lock (MainWindowViewModel.Machines.Rows.SyncRoot)
|
||||
{
|
||||
DataRow drEmployee = MainWindowViewModel.Machines.Select("IP='" + client.IP + "'").First();
|
||||
mac = drEmployee["Name"].ToString();
|
||||
drEmployee.BeginEdit();
|
||||
drEmployee["ERR"] = _new.GetValue("ERR");
|
||||
drEmployee["LOCK"] = _new.GetValue("LOCK");
|
||||
drEmployee["Message"] = _new.GetValue("Status");
|
||||
drEmployee["WorkOrder"] = _new.GetValue("WorkNumder");
|
||||
drEmployee["Temperature"] = _new.GetValue("MTT");
|
||||
drEmployee["WaterLevel"] = _new.GetValue("MTL");
|
||||
drEmployee["Process"] = _new.GetValue("Process");
|
||||
drEmployee["Step"] = _new.GetValue("Step");
|
||||
drEmployee["UserButton"] = _new.GetValue("UserButton");
|
||||
if (_new.GetValue("UserInfoStart").ToString() != "900")
|
||||
{ drEmployee["UserInfoStart"] = _new.GetValue("UserInfoStart"); }
|
||||
drEmployee["UserInfo"] = _new.GetValue("UserInfo");
|
||||
drEmployee["WORK_RUN"] = _new.GetValue("WORK_RUN");
|
||||
drEmployee["RUN_STEPID"] = _new.GetValue("RUN_STEPID");
|
||||
drEmployee["CALL"] = _new.GetValue("CALL");
|
||||
drEmployee.EndEdit();
|
||||
drEmployee.AcceptChanges();
|
||||
}
|
||||
if (_new.GetValue("Status").ToString() != "----------")
|
||||
{
|
||||
Dictionary<string, object> Chart_new = new Dictionary<string, object>();//缓存函数
|
||||
Chart_new.Add("WorkOrder", _new.GetValue("WorkNumder"));
|
||||
Chart_new.Add("Machine", _new.GetValue("Machine"));
|
||||
Chart_new.Add("Time", _new.GetValue("Time"));
|
||||
Chart_new.Add("Machine", mac);
|
||||
Chart_new.Add("Time", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
|
||||
Chart_new.Add("MST", _new.GetValue("MST"));
|
||||
Chart_new.Add("MTT", _new.GetValue("MTT"));
|
||||
Chart_new.Add("MTL", _new.GetValue("MTL"));
|
||||
@@ -179,14 +323,12 @@ 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();
|
||||
MainWindowViewModel.SQLiteChartAdress.InsertData("Chart", Chart_new);// 执行插入
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}
|
||||
}//当前信息
|
||||
else if (SYSAPI == "SC831")
|
||||
{
|
||||
try
|
||||
@@ -195,7 +337,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass
|
||||
MainWindowViewModel.dt_TP = JsonConvert.DeserializeObject<DataTable>(DAT);//反序列化
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}
|
||||
}//步骤信息
|
||||
else if (SYSAPI == "SC832")
|
||||
{
|
||||
try
|
||||
@@ -208,7 +350,9 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass
|
||||
{
|
||||
try
|
||||
{
|
||||
MainWindowViewModel.MachineLOG = DAT.Substring(DAT.IndexOf("]") + 1);
|
||||
DAT = DAT.Substring(DAT.IndexOf("]") + 1);
|
||||
MonitorView.Product_DAT = JsonConvert.DeserializeObject<DataTable>(DAT).Copy();//反序列化
|
||||
MonitorView.Product_bool = true;
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}//当前领料单信息
|
||||
@@ -257,15 +401,22 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}//系统设置表
|
||||
else if (SYSAPI == "SC859")
|
||||
{
|
||||
try
|
||||
{
|
||||
DAT = DAT.Substring(DAT.IndexOf("]") + 1);
|
||||
MachinesView.LOG_dataTable = JsonConvert.DeserializeObject<DataTable>(DAT);//反序列化
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}//信息
|
||||
else if (SYSAPI == "SC910")
|
||||
{
|
||||
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++; }
|
||||
}//发布失败
|
||||
@@ -274,17 +425,23 @@ 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++; }
|
||||
}//细节错误
|
||||
else if (SYSAPI == "SC921")
|
||||
{
|
||||
try
|
||||
{
|
||||
DAT = DAT.Substring(DAT.IndexOf("]") + 1);
|
||||
}
|
||||
catch (Exception ex) { LogGing.LogGingDATA("[ERR='" + ex + "']=Exception"); MainWindowViewModel.ERR_c++; }
|
||||
}//错误
|
||||
else if (SYSAPI == "SC980")
|
||||
{
|
||||
DAT = DAT.Substring(DAT.IndexOf("]") + 1);
|
||||
MessageBox.Show(DAT,"SCCM", MessageBoxButton.OK, MessageBoxImage.Question);
|
||||
MessageBox.Show(DAT, "SCCM", MessageBoxButton.OK, MessageBoxImage.Question);
|
||||
}
|
||||
|
||||
return EasyTask.CompletedTask;
|
||||
@@ -292,41 +449,24 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass
|
||||
|
||||
//载入配置
|
||||
await tcpClient.SetupAsync(new TouchSocketConfig()
|
||||
.SetMaxBufferSize(1024*1024)
|
||||
.SetMinBufferSize(1024*64)
|
||||
.SetMaxBufferSize(1024* 1024*100)
|
||||
.SetMinBufferSize(1024*1024)
|
||||
.SetRemoteIPHost(ip + ":" + port)
|
||||
.ConfigurePlugins(a =>
|
||||
{
|
||||
a.UseCheckClear()
|
||||
.SetCheckClearType(CheckClearType.All)
|
||||
.SetTick(TimeSpan.FromSeconds(30))
|
||||
.SetOnClose((c, t) =>
|
||||
{
|
||||
c.TryShutdown();
|
||||
});
|
||||
a.UseTcpReconnection();//触发型重连
|
||||
//使用Polling轮询连接插件
|
||||
a.UseTcpReconnection()
|
||||
.UsePolling(TimeSpan.FromSeconds(5));
|
||||
})
|
||||
.ConfigureContainer(a =>
|
||||
{
|
||||
// a.AddConsoleLogger();//添加一个日志注入
|
||||
}));
|
||||
|
||||
// Result result = await
|
||||
_ = tcpClient.TryConnectAsync();
|
||||
// return result.IsSuccess;
|
||||
/* try
|
||||
{
|
||||
await tcpClient.ConnectAsync();//调用连接,当连接不成功时,会抛出异常。
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}*/
|
||||
}
|
||||
));
|
||||
|
||||
await tcpClient.TryConnectAsync();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,360 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.UserClass
|
||||
{
|
||||
/// <summary>
|
||||
/// 线程安全的 DataTable 管理器
|
||||
/// 提供对 DataTable 的安全并发访问
|
||||
/// </summary>
|
||||
public class DataTableManager : IDisposable
|
||||
{
|
||||
private DataTable _dataTable;
|
||||
private readonly ReaderWriterLockSlim _lock = new ReaderWriterLockSlim();
|
||||
private bool _disposed = false;
|
||||
|
||||
#region 构造函数
|
||||
public DataTableManager()
|
||||
{
|
||||
_dataTable = new DataTable();
|
||||
}
|
||||
|
||||
public DataTableManager(DataTable dataTable)
|
||||
{
|
||||
_dataTable = dataTable ?? throw new ArgumentNullException(nameof(dataTable));
|
||||
}
|
||||
|
||||
public DataTableManager(string tableName)
|
||||
{
|
||||
_dataTable = new DataTable(tableName);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 基本操作
|
||||
/// <summary>
|
||||
/// 安全地添加列
|
||||
/// </summary>
|
||||
public void AddColumn(string columnName, Type dataType)
|
||||
{
|
||||
ExecuteWriteOperation(table =>
|
||||
{
|
||||
table.Columns.Add(columnName, dataType);
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 安全地添加行
|
||||
/// </summary>
|
||||
public void AddRow(params object[] values)
|
||||
{
|
||||
ExecuteWriteOperation(table =>
|
||||
{
|
||||
DataRow newRow = table.NewRow();
|
||||
for (int i = 0; i < Math.Min(values.Length, table.Columns.Count); i++)
|
||||
{
|
||||
newRow[i] = values[i] ?? DBNull.Value;
|
||||
}
|
||||
table.Rows.Add(newRow);
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 安全地更新单元格值
|
||||
/// </summary>
|
||||
public bool UpdateCell(int rowIndex, string columnName, object value)
|
||||
{
|
||||
return ExecuteWriteOperation(table =>
|
||||
{
|
||||
if (IsValidRowIndex(table, rowIndex) && table.Columns.Contains(columnName))
|
||||
{
|
||||
table.Rows[rowIndex][columnName] = value ?? DBNull.Value;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 安全地删除行
|
||||
/// </summary>
|
||||
public bool DeleteRow(int rowIndex)
|
||||
{
|
||||
return ExecuteWriteOperation(table =>
|
||||
{
|
||||
if (IsValidRowIndex(table, rowIndex))
|
||||
{
|
||||
table.Rows[rowIndex].Delete();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 查询操作
|
||||
/// <summary>
|
||||
/// 安全地获取行
|
||||
/// </summary>
|
||||
public DataRow GetRow(int rowIndex)
|
||||
{
|
||||
return ExecuteReadOperation(table =>
|
||||
{
|
||||
return IsValidRowIndex(table, rowIndex) ? table.Rows[rowIndex] : null;
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 安全地查找行(使用筛选条件)
|
||||
/// </summary>
|
||||
public DataRow[] FindRows(string filterExpression)
|
||||
{
|
||||
return ExecuteReadOperation(table =>
|
||||
{
|
||||
try
|
||||
{
|
||||
return string.IsNullOrEmpty(filterExpression)
|
||||
? table.Select()
|
||||
: table.Select(filterExpression);
|
||||
}
|
||||
catch (EvaluateException)
|
||||
{
|
||||
return new DataRow[0];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 安全地获取行数
|
||||
/// </summary>
|
||||
public int GetRowCount()
|
||||
{
|
||||
return ExecuteReadOperation(table => table.Rows.Count);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 安全地检查行是否存在
|
||||
/// </summary>
|
||||
public bool RowExists(int rowIndex)
|
||||
{
|
||||
return ExecuteReadOperation(table => IsValidRowIndex(table, rowIndex));
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 批量操作
|
||||
/// <summary>
|
||||
/// 安全地批量添加行
|
||||
/// </summary>
|
||||
public void BulkAddRows(IEnumerable<object[]> rowsData)
|
||||
{
|
||||
ExecuteWriteOperation(table =>
|
||||
{
|
||||
foreach (var rowData in rowsData)
|
||||
{
|
||||
DataRow newRow = table.NewRow();
|
||||
for (int i = 0; i < Math.Min(rowData.Length, table.Columns.Count); i++)
|
||||
{
|
||||
newRow[i] = rowData[i] ?? DBNull.Value;
|
||||
}
|
||||
table.Rows.Add(newRow);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 安全地清空所有数据
|
||||
/// </summary>
|
||||
public void Clear()
|
||||
{
|
||||
ExecuteWriteOperation(table =>
|
||||
{
|
||||
table.Clear();
|
||||
});
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 数据导出
|
||||
/// <summary>
|
||||
/// 获取数据快照(线程安全的副本)
|
||||
/// </summary>
|
||||
public DataTable GetSnapshot()
|
||||
{
|
||||
return ExecuteReadOperation(table =>
|
||||
{
|
||||
return table.Copy(); // 创建数据的独立副本
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取只读视图
|
||||
/// </summary>
|
||||
public DataView GetReadOnlyView()
|
||||
{
|
||||
return ExecuteReadOperation(table =>
|
||||
{
|
||||
return new DataView(table) { AllowEdit = false };
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 导出到新 DataTable(包含结构)
|
||||
/// </summary>
|
||||
public DataTable ExportToDataTable()
|
||||
{
|
||||
return ExecuteReadOperation(table =>
|
||||
{
|
||||
DataTable exported = table.Clone();
|
||||
exported.Merge(table, false, MissingSchemaAction.Add);
|
||||
return exported;
|
||||
});
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 锁操作核心
|
||||
/// <summary>
|
||||
/// 执行读取操作(共享锁)
|
||||
/// </summary>
|
||||
private T ExecuteReadOperation<T>(Func<DataTable, T> operation)
|
||||
{
|
||||
_lock.EnterReadLock();
|
||||
try
|
||||
{
|
||||
return operation(_dataTable);
|
||||
}
|
||||
finally
|
||||
{
|
||||
_lock.ExitReadLock();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 执行写入操作(独占锁)
|
||||
/// </summary>
|
||||
private void ExecuteWriteOperation(Action<DataTable> operation)
|
||||
{
|
||||
_lock.EnterWriteLock();
|
||||
try
|
||||
{
|
||||
operation(_dataTable);
|
||||
_dataTable.AcceptChanges();
|
||||
}
|
||||
finally
|
||||
{
|
||||
_lock.ExitWriteLock();
|
||||
}
|
||||
}
|
||||
|
||||
private T ExecuteWriteOperation<T>(Func<DataTable, T> operation)
|
||||
{
|
||||
_lock.EnterWriteLock();
|
||||
try
|
||||
{
|
||||
var result = operation(_dataTable);
|
||||
_dataTable.AcceptChanges();
|
||||
return result;
|
||||
}
|
||||
finally
|
||||
{
|
||||
_lock.ExitWriteLock();
|
||||
}
|
||||
}
|
||||
|
||||
private bool IsValidRowIndex(DataTable table, int rowIndex)
|
||||
{
|
||||
return rowIndex >= 0 && rowIndex < table.Rows.Count;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 高级功能
|
||||
/// <summary>
|
||||
/// 带超时的安全操作
|
||||
/// </summary>
|
||||
public bool TryUpdateCell(int rowIndex, string columnName, object value, int timeoutMs = 5000)
|
||||
{
|
||||
if (_lock.TryEnterWriteLock(timeoutMs))
|
||||
{
|
||||
try
|
||||
{
|
||||
if (IsValidRowIndex(_dataTable, rowIndex) && _dataTable.Columns.Contains(columnName))
|
||||
{
|
||||
_dataTable.Rows[rowIndex][columnName] = value ?? DBNull.Value;
|
||||
_dataTable.AcceptChanges();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
finally
|
||||
{
|
||||
_lock.ExitWriteLock();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 执行事务性操作
|
||||
/// </summary>
|
||||
public void ExecuteTransaction(Action<DataTable> transaction)
|
||||
{
|
||||
_lock.EnterWriteLock();
|
||||
try
|
||||
{
|
||||
// 开始事务
|
||||
_dataTable.BeginLoadData();
|
||||
|
||||
try
|
||||
{
|
||||
transaction(_dataTable);
|
||||
_dataTable.AcceptChanges();
|
||||
}
|
||||
catch
|
||||
{
|
||||
_dataTable.RejectChanges();
|
||||
throw;
|
||||
}
|
||||
finally
|
||||
{
|
||||
_dataTable.EndLoadData();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
_lock.ExitWriteLock();
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 属性和清理
|
||||
public string TableName
|
||||
{
|
||||
get => ExecuteReadOperation(table => table.TableName);
|
||||
set => ExecuteWriteOperation(table => table.TableName = value);
|
||||
}
|
||||
|
||||
public DataColumnCollection Columns
|
||||
{
|
||||
get => ExecuteReadOperation(table => table.Columns);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (!_disposed)
|
||||
{
|
||||
_lock?.Dispose();
|
||||
_dataTable?.Dispose();
|
||||
_disposed = true;
|
||||
}
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
~DataTableManager()
|
||||
{
|
||||
Dispose();
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -23,7 +23,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass
|
||||
StreamWriter wr = new StreamWriter(fs);//创建文件
|
||||
wr.WriteLine(Log_time + dat);
|
||||
wr.Close();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -43,5 +42,79 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass
|
||||
directoryInfo.Create();//创建日志路径
|
||||
}
|
||||
}
|
||||
public static void ERRDATA(System.Exception dat)
|
||||
{
|
||||
string Log_time = DateTime.Now.ToString("yyyy-MM-dd");
|
||||
string logpath = System.Environment.CurrentDirectory + "\\ERR";//日志文件目录
|
||||
// string logPathtxt = "" + System.Environment.CurrentDirectory + "\\Log\\"+ Log_time + "Log.txt";//日志文件
|
||||
// System.IO.DirectoryInfo log = new System.IO.DirectoryInfo();//生成日志文件目录
|
||||
string log_path = logpath + "\\ERR" + Log_time + ".txt";
|
||||
string Log_timehms = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
if (Directory.Exists(logpath))//检查日志路径
|
||||
{
|
||||
if (!File.Exists(log_path))//检查文件并写入
|
||||
{
|
||||
// FileStream fs = new FileStream(log_path, FileMode.CreateNew, FileAccess.Write);//创建文件
|
||||
// StreamWriter wr = new StreamWriter(fs);//创建文件
|
||||
// wr.Close();
|
||||
FileStream fil = new FileStream(log_path, FileMode.CreateNew, FileAccess.Write);//创建写入文件
|
||||
StreamWriter wfil = new StreamWriter(fil);//创建文件
|
||||
wfil.WriteLine("[" + Log_timehms + "];[Error] ||" + Environment.NewLine.ToString());
|
||||
wfil.WriteLine("[" + Log_timehms + "];[Error source] ||" + dat.Source.ToString() + Environment.NewLine.ToString());
|
||||
wfil.WriteLine("[" + Log_timehms + "];[Error message] ||" + dat.Message.ToString() + Environment.NewLine.ToString());
|
||||
wfil.WriteLine("[" + Log_timehms + "];[Error area] ||" + dat.StackTrace.ToString());
|
||||
wfil.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
FileStream fs = new FileStream(log_path, FileMode.Append, FileAccess.Write);//创建写入文件
|
||||
StreamWriter wr = new StreamWriter(fs);//创建文件
|
||||
wr.WriteLine("[" + Log_timehms + "];[Error] ||" + Environment.NewLine.ToString());
|
||||
wr.WriteLine("[" + Log_timehms + "];[Error source] ||" + dat.ToString() + Environment.NewLine.ToString());
|
||||
wr.WriteLine("[" + Log_timehms + "];[Error message] ||" + dat.Message.ToString() + Environment.NewLine.ToString());
|
||||
wr.WriteLine("[" + Log_timehms + "];[Error area] ||" + dat.ToString());
|
||||
wr.Close();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
DirectoryInfo directoryInfo = new DirectoryInfo(logpath);
|
||||
directoryInfo.Create();
|
||||
}
|
||||
}
|
||||
public static void ExchangeDATA(string dat)
|
||||
{
|
||||
string Log_time = DateTime.Now.ToString("yyyy-MM-dd");
|
||||
string logpath = System.Environment.CurrentDirectory + "\\Exchange";//日志文件目录
|
||||
// string logPathtxt = "" + System.Environment.CurrentDirectory + "\\Log\\"+ Log_time + "Log.txt";//日志文件
|
||||
// System.IO.DirectoryInfo log = new System.IO.DirectoryInfo();//生成日志文件目录
|
||||
string log_path = logpath + "\\Exchange" + Log_time + ".txt";
|
||||
string Log_timehms = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
if (Directory.Exists(logpath))//检查日志路径
|
||||
{
|
||||
if (!File.Exists(log_path))//检查文件并写入
|
||||
{
|
||||
// FileStream fs = new FileStream(log_path, FileMode.CreateNew, FileAccess.Write);//创建文件
|
||||
// StreamWriter wr = new StreamWriter(fs);//创建文件
|
||||
// wr.Close();
|
||||
FileStream fil = new FileStream(log_path, FileMode.CreateNew, FileAccess.Write);//创建写入文件
|
||||
StreamWriter wfil = new StreamWriter(fil);//创建文件
|
||||
wfil.WriteLine("[" + Log_timehms + "];[Exchange] ||" + dat);
|
||||
wfil.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
FileStream fs = new FileStream(log_path, FileMode.Append, FileAccess.Write);//创建写入文件
|
||||
StreamWriter wr = new StreamWriter(fs);//创建文件
|
||||
wr.WriteLine("[" + Log_timehms + "];[Exchange] ||" + dat);
|
||||
wr.Close();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
DirectoryInfo directoryInfo = new DirectoryInfo(logpath);
|
||||
directoryInfo.Create();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,617 @@
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.IO.Ports;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using TouchSocket.Core;
|
||||
using TouchSocket.SerialPorts;
|
||||
using TouchSocket.Sockets;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.UserClass
|
||||
{
|
||||
#region 基础数据结构
|
||||
/// <summary>
|
||||
/// 485 设备地址
|
||||
/// </summary>
|
||||
public struct DeviceAddress
|
||||
{
|
||||
public byte Value { get; }
|
||||
|
||||
public DeviceAddress(byte address)
|
||||
{
|
||||
if (address == 0) throw new ArgumentException("设备地址不能为0(广播地址)");
|
||||
Value = address;
|
||||
}
|
||||
|
||||
public static implicit operator byte(DeviceAddress address) => address.Value;
|
||||
public static implicit operator DeviceAddress(byte address) => new DeviceAddress(address);
|
||||
|
||||
public override string ToString() => $"0x{Value:X2}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 485 命令帧
|
||||
/// </summary>
|
||||
public class CommandFrame
|
||||
{
|
||||
public DeviceAddress DeviceAddress { get; set; }
|
||||
public byte FunctionCode { get; set; }
|
||||
public byte[] Data { get; set; }
|
||||
public ushort CRC { get; set; }
|
||||
|
||||
public byte[] ToBytes()
|
||||
{
|
||||
// 实现帧序列化逻辑,包括CRC计算
|
||||
var dataLength = Data?.Length ?? 0;
|
||||
var frame = new byte[3 + dataLength + 2]; // 地址+功能码+数据+CRC
|
||||
|
||||
frame[0] = DeviceAddress;
|
||||
frame[1] = FunctionCode;
|
||||
|
||||
if (dataLength > 0)
|
||||
Array.Copy(Data, 0, frame, 2, dataLength);
|
||||
|
||||
// 计算CRC (这里使用Modbus CRC算法示例)
|
||||
CRC = CalculateCRC(frame, 0, frame.Length - 2);
|
||||
frame[frame.Length - 2] = (byte)(CRC & 0xFF);
|
||||
frame[frame.Length - 1] = (byte)(CRC >> 8);
|
||||
|
||||
return frame;
|
||||
}
|
||||
|
||||
private ushort CalculateCRC(byte[] data, int offset, int length)
|
||||
{
|
||||
// 简化的CRC计算示例,实际应根据协议实现
|
||||
ushort crc = 0xFFFF;
|
||||
for (int i = offset; i < offset + length; i++)
|
||||
{
|
||||
crc ^= data[i];
|
||||
for (int j = 0; j < 8; j++)
|
||||
{
|
||||
if ((crc & 0x0001) != 0)
|
||||
{
|
||||
crc >>= 1;
|
||||
crc ^= 0xA001;
|
||||
}
|
||||
else
|
||||
{
|
||||
crc >>= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return crc;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 响应帧
|
||||
/// </summary>
|
||||
public class ResponseFrame
|
||||
{
|
||||
public DeviceAddress DeviceAddress { get; set; }
|
||||
public byte FunctionCode { get; set; }
|
||||
public byte[] Data { get; set; }
|
||||
public ushort CRC { get; set; }
|
||||
public bool IsValid { get; set; }
|
||||
public string Error { get; set; }
|
||||
|
||||
public static ResponseFrame FromBytes(byte[] data)
|
||||
{
|
||||
// 实现帧解析逻辑,包括CRC验证
|
||||
var frame = new ResponseFrame();
|
||||
|
||||
if (data.Length < 4) // 最小帧长度
|
||||
{
|
||||
frame.IsValid = false;
|
||||
frame.Error = "帧长度不足";
|
||||
return frame;
|
||||
}
|
||||
|
||||
frame.DeviceAddress = data[0];
|
||||
frame.FunctionCode = data[1];
|
||||
|
||||
// 检查CRC
|
||||
ushort receivedCRC = (ushort)(data[data.Length - 1] << 8 | data[data.Length - 2]);
|
||||
ushort calculatedCRC = CalculateCRC(data, 0, data.Length - 2);
|
||||
|
||||
if (receivedCRC != calculatedCRC)
|
||||
{
|
||||
frame.IsValid = false;
|
||||
frame.Error = "CRC校验失败";
|
||||
return frame;
|
||||
}
|
||||
|
||||
// 提取数据部分
|
||||
if (data.Length > 4)
|
||||
{
|
||||
frame.Data = new byte[data.Length - 4];
|
||||
Array.Copy(data, 2, frame.Data, 0, frame.Data.Length);
|
||||
}
|
||||
|
||||
frame.IsValid = true;
|
||||
return frame;
|
||||
}
|
||||
|
||||
private static ushort CalculateCRC(byte[] data, int offset, int length)
|
||||
{
|
||||
// 与CommandFrame相同的CRC算法
|
||||
ushort crc = 0xFFFF;
|
||||
for (int i = offset; i < offset + length; i++)
|
||||
{
|
||||
crc ^= data[i];
|
||||
for (int j = 0; j < 8; j++)
|
||||
{
|
||||
if ((crc & 0x0001) != 0)
|
||||
{
|
||||
crc >>= 1;
|
||||
crc ^= 0xA001;
|
||||
}
|
||||
else
|
||||
{
|
||||
crc >>= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return crc;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通信任务
|
||||
/// </summary>
|
||||
public class CommunicationTask
|
||||
{
|
||||
public DeviceAddress DeviceAddress { get; set; }
|
||||
public CommandFrame Command { get; set; }
|
||||
public TaskCompletionSource<ResponseFrame> CompletionSource { get; set; }
|
||||
public int TimeoutMs { get; set; } = 1000;
|
||||
public int RetryCount { get; set; } = 3;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 异常类
|
||||
public class RS485CommunicationException : Exception
|
||||
{
|
||||
public DeviceAddress DeviceAddress { get; }
|
||||
public byte FunctionCode { get; }
|
||||
|
||||
public RS485CommunicationException(DeviceAddress address, byte functionCode, string message)
|
||||
: base($"设备 {address} 功能码 0x{functionCode:X2} 通信失败: {message}")
|
||||
{
|
||||
DeviceAddress = address;
|
||||
FunctionCode = functionCode;
|
||||
}
|
||||
}
|
||||
|
||||
public class RS485TimeoutException : RS485CommunicationException
|
||||
{
|
||||
public RS485TimeoutException(DeviceAddress address, byte functionCode)
|
||||
: base(address, functionCode, "响应超时")
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public class RS485CRCException : RS485CommunicationException
|
||||
{
|
||||
public RS485CRCException(DeviceAddress address, byte functionCode)
|
||||
: base(address, functionCode, "CRC校验失败")
|
||||
{
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 主站实现
|
||||
/// <summary>
|
||||
/// 485 主站实现
|
||||
/// </summary>
|
||||
public class RS485MasterStation : IDisposable
|
||||
{
|
||||
private readonly SerialPortClient _serialPortClient;
|
||||
private readonly ConcurrentDictionary<DeviceAddress, DeviceState> _deviceStates;
|
||||
private readonly ConcurrentQueue<CommunicationTask> _taskQueue;
|
||||
private readonly CancellationTokenSource _cancellationTokenSource;
|
||||
private Task _processingTask;
|
||||
private bool _isDisposed = false;
|
||||
|
||||
// 响应超时时间(毫秒)
|
||||
public int ResponseTimeout { get; set; } = 1000;
|
||||
|
||||
// 帧间延迟(毫秒)
|
||||
public int InterFrameDelay { get; set; } = 10;
|
||||
|
||||
// 最大重试次数
|
||||
public int MaxRetries { get; set; } = 3;
|
||||
|
||||
/// <summary>
|
||||
/// 设备状态
|
||||
/// </summary>
|
||||
private class DeviceState
|
||||
{
|
||||
public DeviceAddress Address { get; set; }
|
||||
public DateTime LastCommunication { get; set; }
|
||||
public bool IsOnline { get; set; }
|
||||
public int TimeoutCount { get; set; }
|
||||
}
|
||||
|
||||
public RS485MasterStation(string portName, int baudRate = 9600)
|
||||
{
|
||||
_serialPortClient = new SerialPortClient();
|
||||
_deviceStates = new ConcurrentDictionary<DeviceAddress, DeviceState>();
|
||||
_taskQueue = new ConcurrentQueue<CommunicationTask>();
|
||||
_cancellationTokenSource = new CancellationTokenSource();
|
||||
|
||||
// 配置串口
|
||||
_serialPortClient.Setup(new TouchSocketConfig()
|
||||
.SetSerialPortOption(new SerialPortOption()
|
||||
{
|
||||
PortName = portName,
|
||||
BaudRate = baudRate,
|
||||
DataBits = 8,
|
||||
Parity = Parity.None,
|
||||
StopBits = StopBits.One
|
||||
}));
|
||||
|
||||
// 注册数据接收事件
|
||||
_serialPortClient.Received = OnDataReceived;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 启动主站
|
||||
/// </summary>
|
||||
public void Start()
|
||||
{
|
||||
_serialPortClient.Connect();
|
||||
_processingTask = Task.Run(ProcessQueue, _cancellationTokenSource.Token);
|
||||
Console.WriteLine("485主站已启动");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 停止主站
|
||||
/// </summary>
|
||||
public void Stop()
|
||||
{
|
||||
_cancellationTokenSource.Cancel();
|
||||
_serialPortClient.Close();
|
||||
Console.WriteLine("485主站已停止");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加设备到监控列表
|
||||
/// </summary>
|
||||
public void AddDevice(DeviceAddress address)
|
||||
{
|
||||
_deviceStates[address] = new DeviceState
|
||||
{
|
||||
Address = address,
|
||||
LastCommunication = DateTime.MinValue,
|
||||
IsOnline = false,
|
||||
TimeoutCount = 0
|
||||
};
|
||||
Console.WriteLine($"已添加设备: {address}");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 从监控列表移除设备
|
||||
/// </summary>
|
||||
public void RemoveDevice(DeviceAddress address)
|
||||
{
|
||||
_deviceStates.TryRemove(address, out _);
|
||||
Console.WriteLine($"已移除设备: {address}");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 发送命令到设备
|
||||
/// </summary>
|
||||
public Task<ResponseFrame> SendCommandAsync(DeviceAddress address, byte functionCode, byte[] data = null, int timeoutMs = 1000, int retryCount = 3)
|
||||
{
|
||||
var command = new CommandFrame
|
||||
{
|
||||
DeviceAddress = address,
|
||||
FunctionCode = functionCode,
|
||||
Data = data ?? new byte[0]
|
||||
};
|
||||
|
||||
var task = new CommunicationTask
|
||||
{
|
||||
DeviceAddress = address,
|
||||
Command = command,
|
||||
CompletionSource = new TaskCompletionSource<ResponseFrame>(),
|
||||
TimeoutMs = timeoutMs,
|
||||
RetryCount = retryCount
|
||||
};
|
||||
|
||||
_taskQueue.Enqueue(task);
|
||||
return task.CompletionSource.Task;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读取保持寄存器
|
||||
/// </summary>
|
||||
public async Task<byte[]> ReadHoldingRegistersAsync(DeviceAddress address, ushort startAddress, ushort numberOfRegisters)
|
||||
{
|
||||
var data = new byte[4];
|
||||
data[0] = (byte)(startAddress >> 8); // 起始地址高字节
|
||||
data[1] = (byte)(startAddress & 0xFF); // 起始地址低字节
|
||||
data[2] = (byte)(numberOfRegisters >> 8); // 寄存器数量高字节
|
||||
data[3] = (byte)(numberOfRegisters & 0xFF); // 寄存器数量低字节
|
||||
|
||||
var response = await SendCommandAsync(address, 0x03, data);
|
||||
|
||||
if (!response.IsValid)
|
||||
throw new RS485CommunicationException(address, 0x03, response.Error);
|
||||
|
||||
return response.Data;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写入单个寄存器
|
||||
/// </summary>
|
||||
public async Task WriteSingleRegisterAsync(DeviceAddress address, ushort registerAddress, ushort value)
|
||||
{
|
||||
var data = new byte[4];
|
||||
data[0] = (byte)(registerAddress >> 8); // 寄存器地址高字节
|
||||
data[1] = (byte)(registerAddress & 0xFF); // 寄存器地址低字节
|
||||
data[2] = (byte)(value >> 8); // 值高字节
|
||||
data[3] = (byte)(value & 0xFF); // 值低字节
|
||||
|
||||
var response = await SendCommandAsync(address, 0x06, data);
|
||||
|
||||
if (!response.IsValid)
|
||||
throw new RS485CommunicationException(address, 0x06, response.Error);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理任务队列
|
||||
/// </summary>
|
||||
private async Task ProcessQueue()
|
||||
{
|
||||
while (!_cancellationTokenSource.Token.IsCancellationRequested)
|
||||
{
|
||||
if (_taskQueue.TryDequeue(out var task))
|
||||
{
|
||||
await ProcessTask(task);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 队列为空,执行设备轮询
|
||||
await PollDevices();
|
||||
await Task.Delay(100, _cancellationTokenSource.Token); // 短暂休眠
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理单个通信任务
|
||||
/// </summary>
|
||||
private async Task ProcessTask(CommunicationTask task)
|
||||
{
|
||||
int retryCount = 0;
|
||||
ResponseFrame response = null;
|
||||
|
||||
while (retryCount < task.RetryCount && !_cancellationTokenSource.Token.IsCancellationRequested)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 发送命令
|
||||
var commandData = task.Command.ToBytes();
|
||||
_serialPortClient.Send(commandData);
|
||||
|
||||
// 等待响应
|
||||
var timeoutTask = Task.Delay(task.TimeoutMs, _cancellationTokenSource.Token);
|
||||
var responseTask = task.CompletionSource.Task;
|
||||
|
||||
var completedTask = await Task.WhenAny(responseTask, timeoutTask);
|
||||
|
||||
if (completedTask == responseTask)
|
||||
{
|
||||
response = await responseTask;
|
||||
if (response.IsValid)
|
||||
{
|
||||
UpdateDeviceState(task.DeviceAddress, true);
|
||||
task.CompletionSource.SetResult(response);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RS485CRCException(task.DeviceAddress, task.Command.FunctionCode);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RS485TimeoutException(task.DeviceAddress, task.Command.FunctionCode);
|
||||
}
|
||||
}
|
||||
catch (RS485CommunicationException ex)
|
||||
{
|
||||
retryCount++;
|
||||
UpdateDeviceState(task.DeviceAddress, false);
|
||||
|
||||
if (retryCount >= task.RetryCount)
|
||||
{
|
||||
task.CompletionSource.SetException(ex);
|
||||
return;
|
||||
}
|
||||
|
||||
// 等待一段时间后重试
|
||||
await Task.Delay(InterFrameDelay, _cancellationTokenSource.Token);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 轮询所有设备状态
|
||||
/// </summary>
|
||||
private async Task PollDevices()
|
||||
{
|
||||
foreach (var deviceState in _deviceStates.Values.ToList())
|
||||
{
|
||||
// 检查设备是否需要轮询(例如,超过一定时间未通信)
|
||||
if ((DateTime.Now - deviceState.LastCommunication).TotalSeconds > 30)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 发送诊断命令(如读取设备状态)
|
||||
await ReadHoldingRegistersAsync(deviceState.Address, 0, 1);
|
||||
Console.WriteLine($"设备 {deviceState.Address} 轮询成功");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"设备 {deviceState.Address} 轮询失败: {ex.Message}");
|
||||
}
|
||||
|
||||
// 添加帧间延迟
|
||||
await Task.Delay(InterFrameDelay, _cancellationTokenSource.Token);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 数据接收处理
|
||||
/// </summary>
|
||||
private Task OnDataReceived(ISerialPortClient client, ReceivedDataEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 解析响应帧
|
||||
var response = ResponseFrame.FromBytes(e.ByteBlock.ReadBytesPackage());
|
||||
|
||||
if (response.IsValid)
|
||||
{
|
||||
// 查找匹配的任务并设置结果
|
||||
foreach (var task in _taskQueue.Where(t => t.DeviceAddress.Value == response.DeviceAddress.Value))
|
||||
{
|
||||
task.CompletionSource.TrySetResult(response);
|
||||
}
|
||||
|
||||
UpdateDeviceState(response.DeviceAddress, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine($"收到无效响应: {response.Error}");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"处理接收数据时出错: {ex.Message}");
|
||||
}
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新设备状态
|
||||
/// </summary>
|
||||
private void UpdateDeviceState(DeviceAddress address, bool communicationSuccess)
|
||||
{
|
||||
if (_deviceStates.TryGetValue(address, out var state))
|
||||
{
|
||||
state.LastCommunication = DateTime.Now;
|
||||
|
||||
if (communicationSuccess)
|
||||
{
|
||||
state.IsOnline = true;
|
||||
state.TimeoutCount = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
state.TimeoutCount++;
|
||||
if (state.TimeoutCount > MaxRetries)
|
||||
{
|
||||
state.IsOnline = false;
|
||||
Console.WriteLine($"设备 {address} 已离线");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取所有设备状态
|
||||
/// </summary>
|
||||
public Dictionary<DeviceAddress, bool> GetDeviceStatuses()
|
||||
{
|
||||
return _deviceStates.ToDictionary(
|
||||
kvp => kvp.Key,
|
||||
kvp => kvp.Value.IsOnline);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 资源释放
|
||||
/// </summary>
|
||||
public void Dispose()
|
||||
{
|
||||
if (!_isDisposed)
|
||||
{
|
||||
_isDisposed = true;
|
||||
_cancellationTokenSource.Cancel();
|
||||
_serialPortClient.SafeDispose();
|
||||
_cancellationTokenSource.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 使用示例
|
||||
class Program
|
||||
{
|
||||
static async Task Main(string[] args)
|
||||
{
|
||||
// 创建485主站实例
|
||||
using (var master = new RS485MasterStation("COM1", 9600))
|
||||
|
||||
try
|
||||
{
|
||||
// 添加要监控的设备
|
||||
master.AddDevice(0x01);
|
||||
master.AddDevice(0x02);
|
||||
master.AddDevice(0x03);
|
||||
|
||||
// 启动主站
|
||||
master.Start();
|
||||
|
||||
// 等待一段时间让主站初始化
|
||||
await Task.Delay(1000);
|
||||
|
||||
// 示例1: 读取设备1的保持寄存器
|
||||
try
|
||||
{
|
||||
var data = await master.ReadHoldingRegistersAsync(0x01, 0, 10);
|
||||
Console.WriteLine($"成功读取设备1的寄存器数据: {BitConverter.ToString(data)}");
|
||||
}
|
||||
catch (RS485CommunicationException ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
|
||||
// 示例2: 向设备2写入寄存器值
|
||||
try
|
||||
{
|
||||
await master.WriteSingleRegisterAsync(0x02, 0x1000, 0x1234);
|
||||
Console.WriteLine("成功向设备2写入寄存器值");
|
||||
}
|
||||
catch (RS485CommunicationException ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
|
||||
// 显示所有设备状态
|
||||
var statuses = master.GetDeviceStatuses();
|
||||
foreach (var status in statuses)
|
||||
{
|
||||
Console.WriteLine($"设备 {status.Key}: {(status.Value ? "在线" : "离线")}");
|
||||
}
|
||||
|
||||
// 保持运行
|
||||
Console.WriteLine("按任意键退出...");
|
||||
Console.ReadKey();
|
||||
}
|
||||
finally
|
||||
{
|
||||
master.Stop();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
@@ -680,6 +680,24 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserClass
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 将DataRow转换为Dictionary<string, object>
|
||||
/// </summary>
|
||||
/// <param name="row">DataRow实例</param>
|
||||
/// <returns>键为列名、值为对应数据的字典</returns>
|
||||
public Dictionary<string, object> ToDictionary(DataRow row)
|
||||
{
|
||||
var dictionary = new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase);
|
||||
if (row == null) return dictionary;
|
||||
|
||||
foreach (DataColumn column in row.Table.Columns)
|
||||
{
|
||||
object value = row[column] == DBNull.Value ? null : row[column];
|
||||
dictionary[column.ColumnName] = value;
|
||||
}
|
||||
return dictionary;
|
||||
}
|
||||
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
<UserControl x:Class="SunlightCentralizedControlManagement_SCCM_.UserControls.DispenseMacInfo"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:SunlightCentralizedControlManagement_SCCM_.UserControls"
|
||||
xmlns:lang="clr-namespace:SunlightCentralizedControlManagement_SCCM_.Properties"
|
||||
xmlns:viewmodel="clr-namespace:SunlightCentralizedControlManagement_SCCM_.ViewModel"
|
||||
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
||||
xmlns:ConvertMoels="clr-namespace:SunlightCentralizedControlManagement_SCCM_.ConvertMoels"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="600" d:DesignWidth="400" Background="#FF828282">
|
||||
<Grid Margin="5,5,5,5" Background="White" >
|
||||
<Image x:Name="IMAGE" VerticalAlignment="Top" Height="400" Margin="0,5,0,0" />
|
||||
<Grid Margin="0,400,0,0">
|
||||
<TextBlock TextWrapping="Wrap" Text="{x:Static lang:Resources.Machine}" Height="30" VerticalAlignment="Top" FontSize="16"
|
||||
HorizontalAlignment="Left" Width="150" Background="#FFE0E0E0"/>
|
||||
<TextBlock TextWrapping="Wrap" Text="{x:Static lang:Resources.State}" Height="30" VerticalAlignment="Top" FontSize="16"
|
||||
Margin="0,30,0,0" HorizontalAlignment="Left" Width="150" Background="#FFE0E0E0"/>
|
||||
<TextBlock TextWrapping="Wrap" Text="{x:Static lang:Resources.WorkingStatus}" Height="30" VerticalAlignment="Top" FontSize="16"
|
||||
Margin="0,60,0,0" HorizontalAlignment="Left" Width="150" Background="#FFE0E0E0"/>
|
||||
<Border BorderBrush="#FFE0E0E0" BorderThickness="1" Height="30" VerticalAlignment="Top" Margin="150,0,80,0">
|
||||
<TextBlock x:Name="mac" TextWrapping="Wrap" Text="------" FontSize="16" />
|
||||
</Border>
|
||||
<Border BorderBrush="#FFE0E0E0" BorderThickness="1" Height="30" VerticalAlignment="Top" Margin="150,0,0,0" HorizontalAlignment="Right" Width="80">
|
||||
<TextBlock x:Name="macg" TextWrapping="Wrap" Text="------" FontSize="16" />
|
||||
</Border>
|
||||
<Border BorderBrush="#FFE0E0E0" BorderThickness="1" Height="30" VerticalAlignment="Top" Margin="150,30,80,0">
|
||||
<TextBlock x:Name="state" TextWrapping="Wrap" Text="------" FontSize="16" />
|
||||
</Border>
|
||||
<Border BorderBrush="#FFE0E0E0" BorderThickness="1" Height="30" VerticalAlignment="Top" Margin="150,30,0,0" HorizontalAlignment="Right" Width="80">
|
||||
<TextBlock x:Name="type_N" TextWrapping="Wrap" Text="-------" FontSize="16" />
|
||||
</Border>
|
||||
<Border BorderBrush="#FFE0E0E0" BorderThickness="1" Height="30" VerticalAlignment="Top" Margin="150,60,0,0">
|
||||
<TextBlock x:Name="WorkingStatus" TextWrapping="Wrap" Text="------" FontSize="16" />
|
||||
</Border>
|
||||
<Button x:Name="State" Content="{x:Static lang:Resources.Information}" HorizontalAlignment="Right" Height="35" Margin="0,0,15,10" VerticalAlignment="Bottom" Width="80" Click="State_Click" Padding="0,4,0,4"/>
|
||||
<Button x:Name="Manual" Content="{x:Static lang:Resources.Manual}" HorizontalAlignment="Right" Height="35" Margin="0,0,115,10" VerticalAlignment="Bottom" Width="80" Click="Manual_Click" Padding="0,4,0,4"/>
|
||||
<Button x:Name="Screen" Content="{x:Static lang:Resources.Screen}" HorizontalAlignment="Right" Height="35" Margin="0,0,215,10" VerticalAlignment="Bottom" Width="80" Click="Screen_Click" Padding="0,4,0,4"/>
|
||||
|
||||
<materialDesign:PackIcon x:Name="mlock" Kind="Lock" VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="40" Height="40" Foreground="#FFA98C00" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Margin="0,0,0,5"/>
|
||||
<materialDesign:PackIcon x:Name="Disconnect" Kind="LanDisconnect" VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="40" Height="40" Foreground="#FFA98C00" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Margin="50,0,0,5"/>
|
||||
|
||||
</Grid>
|
||||
<TextBlock x:Name="IP" TextWrapping="Wrap" HorizontalAlignment="Left" VerticalAlignment="Top" Foreground="{x:Null}" />
|
||||
<TextBlock x:Name="PORT" TextWrapping="Wrap" HorizontalAlignment="Left" VerticalAlignment="Top" Foreground="{x:Null}" />
|
||||
<TextBlock x:Name="USER" TextWrapping="Wrap" HorizontalAlignment="Left" VerticalAlignment="Top" Foreground="{x:Null}" />
|
||||
<TextBlock x:Name="PASSWD" TextWrapping="Wrap" HorizontalAlignment="Left" VerticalAlignment="Top" Foreground="{x:Null}" />
|
||||
<TextBlock x:Name="type_" TextWrapping="Wrap" HorizontalAlignment="Left" VerticalAlignment="Top" Foreground="{x:Null}" />
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,73 @@
|
||||
using ScottPlot.Plottables;
|
||||
using SunlightCentralizedControlManagement_SCCM_.EX;
|
||||
using SunlightCentralizedControlManagement_SCCM_.WindowsView;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Animation;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Media.Media3D;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
using System.Windows.Threading;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.UserControls
|
||||
{
|
||||
/// <summary>
|
||||
/// info.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class DispenseMacInfo : UserControl
|
||||
{
|
||||
public DispenseMacInfo()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void State_Click(object sender, RoutedEventArgs e)//状态
|
||||
{
|
||||
if ((mlock.Visibility == Visibility.Visible) || (Disconnect.Visibility == Visibility.Visible))
|
||||
{
|
||||
MessageBox.Show(Properties.Resources.Not_a,"Dispense",MessageBoxButton.OK);
|
||||
return;
|
||||
}
|
||||
UserMessage userMessage = new UserMessage();
|
||||
userMessage.DispenseMacInfo(mac.Text, macg.Text);
|
||||
userMessage.Show();
|
||||
}
|
||||
|
||||
private void Manual_Click(object sender, RoutedEventArgs e)//手动呼叫
|
||||
{
|
||||
if ((mlock.Visibility == Visibility.Visible) || (Disconnect.Visibility == Visibility.Visible))
|
||||
{
|
||||
MessageBox.Show(Properties.Resources.Not_a, "Dispense", MessageBoxButton.OK);
|
||||
return;
|
||||
}
|
||||
ManualDyelot manualDyelot = new ManualDyelot();
|
||||
manualDyelot.MAC(mac.Text,Convert.ToInt16(type_.Text));
|
||||
manualDyelot.Show();
|
||||
}
|
||||
|
||||
private void Screen_Click(object sender, RoutedEventArgs e)//远程画面
|
||||
{
|
||||
if ((mlock.Visibility == Visibility.Visible)||(Disconnect.Visibility == Visibility.Visible))
|
||||
{
|
||||
MessageBox.Show(Properties.Resources.Not_a, "Dispense", MessageBoxButton.OK);
|
||||
return;
|
||||
}
|
||||
VNC screen = new VNC();
|
||||
screen.Parameter(IP.Text,PORT.Text,USER.Text,PASSWD.Text);
|
||||
screen.Show();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -5,20 +5,25 @@
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:SunlightCentralizedControlManagement_SCCM_.UserControls"
|
||||
xmlns:lang="clr-namespace:SunlightCentralizedControlManagement_SCCM_.Properties"
|
||||
xmlns:lvc="clr-namespace:LiveChartsCore.SkiaSharpView.WPF;assembly=LiveChartsCore.SkiaSharpView.WPF"
|
||||
mc:Ignorable="d"
|
||||
Loaded="UserControl_Loaded"
|
||||
d:DesignHeight="400" d:DesignWidth="300" Background="White">
|
||||
<Grid>
|
||||
<TextBlock x:Name="name" VerticalAlignment="Top" Height="50" Background="#FF646464" Text="-----" FontWeight="Bold" FontSize="36" />
|
||||
<TextBlock x:Name="temp" VerticalAlignment="Top" Height="50" Text="---.-°C" FontWeight="Bold" FontSize="36" HorizontalAlignment="Right" Padding="5,0,5,0"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.process}" Height="30" FontWeight="Bold" FontSize="24" Margin="5,50,5,0" VerticalAlignment="Top" Focusable="False"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.Step}" Height="30" FontWeight="Bold" FontSize="24" Margin="5,100,5,0" VerticalAlignment="Top" Focusable="False"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.message}" Height="30" FontWeight="Bold" FontSize="24" Margin="5,150,5,0" VerticalAlignment="Top" Focusable="False"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.orders}" Height="30" FontWeight="Bold" FontSize="24" Margin="5,200,5,0" VerticalAlignment="Top" Focusable="False"/>
|
||||
<TextBlock x:Name="time" Text="----------------------------" Height="30" FontWeight="Bold" FontSize="24" Margin="5,250,5,0" VerticalAlignment="Top" Focusable="False"/>
|
||||
<local:RoilingTextBlock Foreground="Black" x:Name="Process" Text="NO Information" FontSize="21" Height="30" Margin="120,50,0,0" VerticalAlignment="Top"/>
|
||||
<local:RoilingTextBlock Foreground="Black" x:Name="Step" Text="NO Information" FontSize="21" Height="30" Margin="120,100,0,0" VerticalAlignment="Top"/>
|
||||
<local:RoilingTextBlock Foreground="Black" x:Name="Message" Text="NO Information" FontSize="21" Height="30" Margin="120,150,0,0" VerticalAlignment="Top"/>
|
||||
<local:RoilingTextBlock Foreground="Black" x:Name="Orders" Text="NO Information" FontSize="21" Height="30" Margin="120,200,0,0" VerticalAlignment="Top"/>
|
||||
<StackPanel x:Name="log" Margin="0,300,0,0"/>
|
||||
<Grid Background="#FFBFBFBF">
|
||||
<TextBlock x:Name="name" VerticalAlignment="Top" Height="50" Background="#FF646464" Text="-----" FontWeight="Bold" FontSize="36" />
|
||||
<TextBlock x:Name="temp" VerticalAlignment="Top" Height="50" Text="---.-°C" FontWeight="Bold" FontSize="36" HorizontalAlignment="Right" Padding="5,0,5,0"/>
|
||||
<Grid Margin="2,50,2,2" Background="White">
|
||||
<TextBlock Text="{x:Static lang:Resources.process}" Height="30" FontWeight="Bold" FontSize="24" Margin="5,0,5,0" VerticalAlignment="Top" Focusable="False"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.Step}" Height="30" FontWeight="Bold" FontSize="24" Margin="5,50,5,0" VerticalAlignment="Top" Focusable="False"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.message}" Height="30" FontWeight="Bold" FontSize="24" Margin="5,100,5,0" VerticalAlignment="Top" Focusable="False"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.orders}" Height="30" FontWeight="Bold" FontSize="24" Margin="5,150,5,0" VerticalAlignment="Top" Focusable="False"/>
|
||||
<TextBlock x:Name="time" Text="----------------------------" Height="30" FontWeight="Bold" FontSize="24" Margin="5,180,5,0" VerticalAlignment="Top" Focusable="False"/>
|
||||
<local:RoilingTextBlock Foreground="Black" x:Name="Process" Text="NO Information" FontSize="21" Height="30" Margin="120,0,0,0" VerticalAlignment="Top"/>
|
||||
<local:RoilingTextBlock Foreground="Black" x:Name="Step" Text="NO Information" FontSize="21" Height="30" Margin="120,50,0,0" VerticalAlignment="Top"/>
|
||||
<local:RoilingTextBlock Foreground="Black" x:Name="Message" Text="NO Information" FontSize="21" Height="30" Margin="120,100,0,0" VerticalAlignment="Top"/>
|
||||
<local:RoilingTextBlock Foreground="Black" x:Name="Orders" Text="NO Information" FontSize="21" Height="30" Margin="120,150,0,0" VerticalAlignment="Top"/>
|
||||
<lvc:CartesianChart x:Name="OscChart" Margin="0,200,0,0" EasingFunction="{x:Null}" ZoomMode="PanX"
|
||||
Series="{Binding Series}" YAxes="{Binding YAxes}" XAxes="{Binding XAxes}"/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -1,8 +1,22 @@
|
||||
using ScottPlot.Plottables;
|
||||
using LiveChartsCore;
|
||||
using LiveChartsCore.Defaults;
|
||||
using LiveChartsCore.Kernel.Sketches;
|
||||
using LiveChartsCore.SkiaSharpView;
|
||||
using LiveChartsCore.SkiaSharpView.Painting;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using ScottPlot;
|
||||
using ScottPlot.Plottables;
|
||||
using ScottPlot.Statistics;
|
||||
using SkiaSharp;
|
||||
using SunlightCentralizedControlManagement_SCCM_.ViewModel;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder;
|
||||
using System.Linq;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
@@ -23,27 +37,128 @@ namespace SunlightCentralizedControlManagement_SCCM_.UserControls
|
||||
/// <summary>
|
||||
/// info.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class info : UserControl
|
||||
public partial class info : UserControl, INotifyPropertyChanged
|
||||
{
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
protected virtual void OnPropertyChanged(string propertyName)
|
||||
{
|
||||
if (PropertyChanged != null)
|
||||
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
public void RaisePropertyChanged(string propertyName)
|
||||
{
|
||||
if (PropertyChanged != null)
|
||||
{
|
||||
if (propertyName != null)
|
||||
{
|
||||
PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
}
|
||||
}
|
||||
private ObservableCollection<DateTimePoint> MTH_values = new ObservableCollection<DateTimePoint>();
|
||||
|
||||
public ObservableCollection<ISeries> _series { get; set; }
|
||||
public ObservableCollection<ISeries> Series
|
||||
{
|
||||
get => _series;
|
||||
set
|
||||
{
|
||||
_series = value;
|
||||
OnPropertyChanged(nameof(Series));
|
||||
}
|
||||
}
|
||||
//x轴时间格式
|
||||
public Axis[] XAxes { get; set; } =
|
||||
{
|
||||
new DateTimeAxis(TimeSpan.FromSeconds(5) , date => date.ToString("HH:mm"))
|
||||
{
|
||||
MinLimit = DateTime.Now.AddHours(-6).Ticks,
|
||||
MaxLimit = DateTime.Now.AddHours(0.5).Ticks,
|
||||
CrosshairLabelsBackground = SKColors.DarkGray.AsLvcColor(),
|
||||
CrosshairLabelsPaint = new SolidColorPaint(SKColors.DarkSlateBlue, 1),
|
||||
CrosshairPaint = new SolidColorPaint(SKColors.DarkSlateGray, 1),
|
||||
},
|
||||
};
|
||||
//颜色
|
||||
private static readonly SKColor s_blue = new SKColor(25, 118, 210);
|
||||
private static readonly SKColor s_red = new SKColor(229, 57, 53);
|
||||
public ICartesianAxis[] YAxes { get; set; } ={
|
||||
new Axis //y在此轴上缩放
|
||||
{
|
||||
MinLimit =0,
|
||||
MaxLimit =160,
|
||||
NamePadding = new LiveChartsCore.Drawing.Padding(0, 20),
|
||||
Padding = new LiveChartsCore.Drawing.Padding(0, 0, 20, 0),
|
||||
TextSize = 12,
|
||||
LabelsPaint = new SolidColorPaint(s_blue),
|
||||
TicksPaint = new SolidColorPaint(s_blue),
|
||||
SubticksPaint = new SolidColorPaint(s_blue),
|
||||
DrawTicksPath = true,
|
||||
CrosshairSnapEnabled = true,
|
||||
Position = LiveChartsCore.Measure.AxisPosition.Start
|
||||
},//温度轴
|
||||
|
||||
};
|
||||
|
||||
public info()
|
||||
{
|
||||
InitializeComponent();
|
||||
CountDown();
|
||||
DataContext = this;
|
||||
}
|
||||
|
||||
private void CountDown()
|
||||
public void DataAdd(DateTime dateTime, double dat)
|
||||
{
|
||||
DispatcherTimer timer1s = new DispatcherTimer//初始化循环,每1秒调用一次Tick
|
||||
Dispatcher.Invoke(() =>
|
||||
{
|
||||
Interval = TimeSpan.FromSeconds(10)//秒
|
||||
};
|
||||
timer1s.Tick += Tick_Event_1S;
|
||||
timer1s.Start();
|
||||
}//时间周期初始化
|
||||
void Tick_Event_1S(object sender, EventArgs e)//Tick_Event周期执行事件1S
|
||||
{
|
||||
|
||||
// 添加新数据点
|
||||
MTH_values.Add(new DateTimePoint(dateTime, dat));
|
||||
// 更新X轴范围,始终保持最近6小时
|
||||
XAxes[0].MinLimit = dateTime.AddHours(-6).Ticks;
|
||||
XAxes[0].MaxLimit = dateTime.AddMinutes(1).Ticks;
|
||||
// 移除6小时前的旧数据
|
||||
while (MTH_values.Count > 0 &&
|
||||
MTH_values[0].DateTime < dateTime.AddHours(-6))
|
||||
{
|
||||
MTH_values.RemoveAt(0);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public void DataROW(DataRow[] dataRows)
|
||||
{
|
||||
DateTime dateTime = DateTime.Now;
|
||||
foreach (DataRow row in dataRows)
|
||||
{
|
||||
// 添加新数据点
|
||||
MTH_values.Add(new DateTimePoint((DateTime)row["DateTime"], (double)row["DAT"]));
|
||||
}
|
||||
Dispatcher.Invoke(() =>
|
||||
{
|
||||
// 更新X轴范围,始终保持最近6小时
|
||||
XAxes[0].MinLimit = dateTime.AddHours(-6).Ticks;
|
||||
XAxes[0].MaxLimit = dateTime.AddMinutes(1).Ticks;
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
private void UserControl_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// 初始化系列
|
||||
Series = new ObservableCollection<ISeries>
|
||||
{
|
||||
new LineSeries<DateTimePoint>
|
||||
{
|
||||
Name = Properties.Resources.Temperature,
|
||||
Values = MTH_values,
|
||||
Stroke = new SolidColorPaint(s_red, 2),
|
||||
GeometrySize = 0,
|
||||
GeometryStroke = new SolidColorPaint(s_red, 2),
|
||||
Fill = null,
|
||||
LineSmoothness = 0,
|
||||
ScalesYAt = 0,
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -21,9 +21,20 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
/// </summary>
|
||||
public partial class CurveDiagram : UserControl
|
||||
{
|
||||
public CurveDiagram()
|
||||
public static string Curve;
|
||||
public static string starT;
|
||||
public static string endT;
|
||||
public static string mac;
|
||||
public static bool mode;
|
||||
//搜索方式0时间加机台1工单 ,机台,开始时间,结束时间,工单
|
||||
public CurveDiagram(bool i,string m,string s,string e,string w)
|
||||
{
|
||||
InitializeComponent();
|
||||
mode = i;
|
||||
starT = s;
|
||||
endT = e;
|
||||
mac = m;
|
||||
Curve = w;
|
||||
DataContext = new CurveDiagramViewModel();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
<UserControl x:Class="SunlightCentralizedControlManagement_SCCM_.View.CurveTemp"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:SunlightCentralizedControlManagement_SCCM_.View"
|
||||
xmlns:lvc="clr-namespace:LiveChartsCore.SkiaSharpView.WPF;assembly=LiveChartsCore.SkiaSharpView.WPF"
|
||||
xmlns:ConvertMoels="clr-namespace:SunlightCentralizedControlManagement_SCCM_.ConvertMoels"
|
||||
xmlns:viewmodel="clr-namespace:SunlightCentralizedControlManagement_SCCM_.ViewModel"
|
||||
mc:Ignorable="d"
|
||||
d:DataContext="{d:DesignInstance Type=viewmodel:CurveTempModel}"
|
||||
d:DesignHeight="300" d:DesignWidth="400">
|
||||
<Grid>
|
||||
<lvc:CartesianChart x:Name="OscChart" EasingFunction="{x:Null}" ZoomMode="X"
|
||||
Series="{Binding Series}" YAxes="{Binding YAxes}" XAxes="{Binding XAxes}" Margin="0,0,0,0"/>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,35 @@
|
||||
using SunlightCentralizedControlManagement_SCCM_.ViewModel;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
{
|
||||
/// <summary>
|
||||
/// CurveDiagram.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class CurveTemp : UserControl
|
||||
{
|
||||
public static DataTable dataTable;
|
||||
public CurveTemp(DataTable db)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
dataTable = db;
|
||||
|
||||
DataContext = new CurveTempModel();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,10 @@
|
||||
Loaded="UserControl_Loaded"
|
||||
d:DesignHeight="900" d:DesignWidth="1800">
|
||||
<UserControl.Resources>
|
||||
<ConvertMoels:StatexmlConvert x:Key="StatexmlConvert"/>
|
||||
<ConvertMoels:StateToColorConvert x:Key="StateToColorConvert"/>
|
||||
<ConvertMoels:BoolToVisidilityConvert x:Key="BoolToVisidilityConvert"/>
|
||||
<ConvertMoels:StatenToImageConvert x:Key="StatenToImageConvert"/>
|
||||
</UserControl.Resources>
|
||||
<Grid>
|
||||
<DataGrid x:Name="Griddata" AlternationCount="2" IsReadOnly="True" d:ItemsSource="{d:SampleData ItemCount=999}"
|
||||
@@ -21,7 +24,7 @@
|
||||
GridLinesVisibility="All" ColumnHeaderHeight="40" HorizontalContentAlignment="Right" FontSize="15"
|
||||
Grid.ColumnSpan="2" CanUserResizeRows="False" AutoGenerateColumns="False" MinColumnWidth="30"
|
||||
CanUserAddRows="False" CanUserDeleteRows="False" HeadersVisibility ="Column" SelectionMode="Single"
|
||||
Margin="0,0,0,60" HorizontalAlignment="Right" Width="300" MouseDoubleClick="Griddata_MouseDoubleClick">
|
||||
Margin="0,0,0,60" HorizontalAlignment="Right" Width="330" MouseDoubleClick="Griddata_MouseDoubleClick">
|
||||
<DataGrid.RowStyle >
|
||||
<Style TargetType="{x:Type DataGridRow}">
|
||||
<Setter Property="Height" Value="30" />
|
||||
@@ -52,11 +55,26 @@
|
||||
</DataGrid.CellStyle>
|
||||
<DataGrid.Columns>
|
||||
<!--列信息绑定-->
|
||||
<DataGridTemplateColumn Width="70" Header="{x:Static lang:Resources.State}">
|
||||
<DataGridTemplateColumn Width="100" Header="{x:Static lang:Resources.State}">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<materialDesign:PackIcon Kind="StateMachine" Width="25" Height="30" VerticalAlignment="Center" HorizontalAlignment="Center"
|
||||
Foreground="{Binding Path=State,Converter={StaticResource StateToColorConvert}}"/>
|
||||
<UniformGrid VerticalAlignment="Bottom" HorizontalAlignment="Left">
|
||||
<Border>
|
||||
<Grid>
|
||||
<StackPanel Width="100" Orientation="Horizontal">
|
||||
<materialDesign:PackIcon Width="25" Height="30"
|
||||
Kind="{Binding Path=State,Converter={StaticResource StatexmlConvert}}"
|
||||
Foreground="{Binding Path=State,Converter={StaticResource StateToColorConvert}}"/>
|
||||
<materialDesign:PackIcon Width="25" Height="30" Kind="Lock"
|
||||
Visibility="{Binding Path=LOCK,Converter={StaticResource StatexmlConvert}}"
|
||||
Foreground="{Binding Path=State,Converter={StaticResource StateToColorConvert}}"/>
|
||||
<materialDesign:PackIcon Width="25" Height="30" Kind="HandBackRight"
|
||||
Visibility="{Binding Path=AUTO,Converter={StaticResource StatexmlConvert}}"
|
||||
Foreground="{Binding Path=State,Converter={StaticResource StateToColorConvert}}"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
</UniformGrid>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
@@ -68,7 +86,7 @@
|
||||
GridLinesVisibility="All" ColumnHeaderHeight="40" HorizontalContentAlignment="Right" FontSize="15"
|
||||
Grid.ColumnSpan="2" CanUserResizeRows="False" AutoGenerateColumns="False" MinColumnWidth="30"
|
||||
CanUserAddRows="False" CanUserDeleteRows="False" HeadersVisibility ="Column" SelectionMode="Single"
|
||||
VerticalAlignment="Top" Height="500" Margin="0,0,300,0" MouseDoubleClick="GridWorkOrder_MouseDoubleClick" >
|
||||
VerticalAlignment="Top" Height="500" Margin="0,0,330,0" MouseDoubleClick="GridWorkOrder_MouseDoubleClick" >
|
||||
<DataGrid.RowStyle >
|
||||
<Style TargetType="{x:Type DataGridRow}">
|
||||
<Setter Property="Height" Value="30" />
|
||||
@@ -153,8 +171,19 @@
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
</StackPanel>
|
||||
<StackPanel VerticalAlignment="Bottom" Height="60" Background="#FF00204E" Orientation="Horizontal" Margin="0,0,0,0" Width="400" HorizontalAlignment="Right">
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<materialDesign:PackIcon Kind="ChatProcessing" Width="40" Height="30" Margin="10" VerticalAlignment="Center" Foreground="#FF1368BD"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.Machine}" FontSize="20" VerticalAlignment="Center" Margin="20 10" Foreground="White" />
|
||||
<TextBlock x:Name="mac" FontSize="20" VerticalAlignment="Center" Margin="20 10" Foreground="White" FontWeight="Bold" />
|
||||
</StackPanel>
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
</StackPanel>
|
||||
|
||||
<Grid Background="White" Margin="0,500,300,60">
|
||||
<Grid Background="White" Margin="0,500,330,60">
|
||||
<ContentControl x:Name="Picture"/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
@@ -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;
|
||||
@@ -62,35 +60,89 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
|
||||
private void UserControl_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Griddata.ItemsSource = MainWindowViewModel.Machines.DefaultView;
|
||||
|
||||
Sdatepicker.Text = DateTime.Now.ToString("yyyy/MM/dd");
|
||||
|
||||
Picture.Content = new View.CurveDiagram();
|
||||
Picture.Content = new View.CurveDiagram(false,"","","", CurveDiagram);
|
||||
Griddata.ItemsSource = MainWindowViewModel.Machines.DefaultView;
|
||||
}
|
||||
|
||||
private void WorkOrderNumder_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
CurveDiagram =Select_WorkOrderNumder.Text;
|
||||
Picture.Content = new View.CurveDiagram();
|
||||
Picture.Content = new View.CurveDiagram(true, "", "", "", CurveDiagram);
|
||||
}
|
||||
|
||||
private void ListViewItem_Before(object sender, MouseButtonEventArgs e)//前一天
|
||||
{
|
||||
Sdatepicker.Text = DateTime.Parse(Sdatepicker.Text).AddDays(-1).ToString("yyyy/MM/dd");
|
||||
if (!string.IsNullOrEmpty(SYS_machines)) { }
|
||||
if (!string.IsNullOrEmpty(SYS_machines))
|
||||
{
|
||||
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);
|
||||
|
||||
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]; //读取表写入缓存
|
||||
|
||||
GridWorkOrder.ItemsSource = WorkOrder.DefaultView;
|
||||
}
|
||||
else
|
||||
{
|
||||
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]; //读取表写入缓存
|
||||
|
||||
GridWorkOrder.ItemsSource = WorkOrder.DefaultView;
|
||||
}
|
||||
}
|
||||
|
||||
private void ListViewItem_Today(object sender, MouseButtonEventArgs e)//今天
|
||||
{
|
||||
Sdatepicker.Text = DateTime.Now.ToString("yyyy/MM/dd");
|
||||
if (!string.IsNullOrEmpty(SYS_machines)) { }
|
||||
if (!string.IsNullOrEmpty(SYS_machines))
|
||||
{
|
||||
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);//刷新图表
|
||||
|
||||
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]; //读取表写入缓存
|
||||
|
||||
GridWorkOrder.ItemsSource = WorkOrder.DefaultView; }
|
||||
else
|
||||
{
|
||||
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]; //读取表写入缓存
|
||||
|
||||
GridWorkOrder.ItemsSource = WorkOrder.DefaultView;
|
||||
}
|
||||
}
|
||||
|
||||
private void ListViewItem_DayAfter(object sender, MouseButtonEventArgs e)//后一天
|
||||
{
|
||||
Sdatepicker.Text = DateTime.Parse(Sdatepicker.Text).AddDays(1).ToString("yyyy/MM/dd");
|
||||
if (!string.IsNullOrEmpty(SYS_machines)) { }
|
||||
if (!string.IsNullOrEmpty(SYS_machines))
|
||||
{
|
||||
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);
|
||||
|
||||
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]; //读取表写入缓存
|
||||
|
||||
GridWorkOrder.ItemsSource = WorkOrder.DefaultView;
|
||||
}
|
||||
else
|
||||
{
|
||||
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]; //读取表写入缓存
|
||||
|
||||
GridWorkOrder.ItemsSource = WorkOrder.DefaultView;
|
||||
}
|
||||
}
|
||||
|
||||
private void Griddata_MouseDoubleClick(object sender, MouseButtonEventArgs e)//选择机台
|
||||
@@ -99,6 +151,16 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
if (rownum != -1)//判断鼠标定位是否有效
|
||||
{
|
||||
SYS_machines = (Griddata.Columns[1].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第1列,
|
||||
mac.Text = SYS_machines;
|
||||
|
||||
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]; //读取表写入缓存
|
||||
|
||||
GridWorkOrder.ItemsSource = WorkOrder.DefaultView;
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,7 +169,9 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
int rownum = Griddata.SelectedIndex;//获取鼠标选中行并定义变量
|
||||
if (rownum != -1)//判断鼠标定位是否有效
|
||||
{
|
||||
SYS_machines = (Griddata.Columns[1].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第1列,
|
||||
string Cd = (Griddata.Columns[1].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第1列,
|
||||
Select_WorkOrderNumder.Text = Cd;
|
||||
Picture.Content = new View.CurveDiagram(true, "", "", "", Cd);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,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;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
<UserControl x:Class="SunlightCentralizedControlManagement_SCCM_.View.DispenseMachinesSet"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:SunlightCentralizedControlManagement_SCCM_.View"
|
||||
xmlns:lang="clr-namespace:SunlightCentralizedControlManagement_SCCM_.Properties"
|
||||
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
||||
xmlns:ConvertMoels="clr-namespace:SunlightCentralizedControlManagement_SCCM_.ConvertMoels"
|
||||
mc:Ignorable="d"
|
||||
Loaded="UserControl_Loaded"
|
||||
d:DesignHeight="900" d:DesignWidth="1200">
|
||||
<UserControl.Resources>
|
||||
<ConvertMoels:StateToColorConvert x:Key="StateToColorConvert"/>
|
||||
</UserControl.Resources>
|
||||
<Grid>
|
||||
<DataGrid x:Name="Griddata" AlternationCount="2" IsReadOnly="True" d:ItemsSource="{d:SampleData ItemCount=999}"
|
||||
Background="#FFC7C7C7" HorizontalGridLinesBrush="{x:Null}" VerticalGridLinesBrush="#FFC9C9C9"
|
||||
GridLinesVisibility="All" ColumnHeaderHeight="40" HorizontalContentAlignment="Right" FontSize="15"
|
||||
Grid.ColumnSpan="2" CanUserResizeRows="False" AutoGenerateColumns="False" MinColumnWidth="30"
|
||||
CanUserAddRows="False" CanUserDeleteRows="False" HeadersVisibility ="Column" SelectionMode="Single"
|
||||
HorizontalAlignment="Right" Width="500" MouseDoubleClick="Griddata_MouseDoubleClick">
|
||||
<DataGrid.RowStyle >
|
||||
<Style TargetType="{x:Type DataGridRow}">
|
||||
<Setter Property="Height" Value="30" />
|
||||
<Setter Property="FontSize" Value="25" />
|
||||
<Style.Triggers>
|
||||
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
|
||||
<Setter Property="Background" Value="#FFFFFFFF" />
|
||||
</Trigger>
|
||||
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
|
||||
<Setter Property="Background" Value="#FFF0F0F0" />
|
||||
</Trigger>
|
||||
<Trigger Property="IsMouseOver" Value="False"/>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</DataGrid.RowStyle>
|
||||
<DataGrid.CellStyle>
|
||||
<Style TargetType="DataGridCell">
|
||||
<Setter Property="BorderThickness" Value="0"/>
|
||||
<Setter Property="MinWidth" Value="20"/>
|
||||
<Style.Triggers>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Setter Property="Background" Value="#FFC0C0C0"/>
|
||||
<Setter Property="BorderBrush" Value="#FFC0C0C0"/>
|
||||
<Setter Property="Foreground" Value="Black"/>
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</DataGrid.CellStyle>
|
||||
<DataGrid.Columns>
|
||||
<!--列信息绑定-->
|
||||
<DataGridTemplateColumn Width="70" Header="{x:Static lang:Resources.State}">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<materialDesign:PackIcon Kind="StateMachine" Width="25" Height="30" VerticalAlignment="Center" HorizontalAlignment="Center"
|
||||
Foreground="{Binding Path=State,Converter={StaticResource StateToColorConvert}}"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Machine}" Binding="{Binding Name}" Width="210" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Group}" Binding="{Binding Groups}" Width="210" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Binding="{Binding IP}" Width="0" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Binding="{Binding PORT}" Width="0" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Binding="{Binding User}" Width="0" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Binding="{Binding Passsword}" Width="0" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Binding="{Binding LOCK}" Width="0" IsReadOnly="True"/>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
<Image HorizontalAlignment="Left" x:Name="IMAGE" VerticalAlignment="Bottom" Width="400" Height="400" Margin="10,200,0,100" />
|
||||
<TextBox HorizontalAlignment="Left" Height="30" Margin="150,10,0,0" x:Name="comboBoxMachine" VerticalAlignment="Top" Width="270" FontSize="20" />
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,10,0,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.Machine}" VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBox HorizontalAlignment="Left" Height="30" Margin="150,150,0,0" x:Name="User" VerticalAlignment="Top" Width="270" FontSize="20" />
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,150,0,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.USER}" VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBox HorizontalAlignment="Left" Height="30" Margin="150,200,0,0" x:Name="Password" VerticalAlignment="Top" Width="270" FontSize="20" />
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,200,0,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.Password}" VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<CheckBox x:Name="dLICK" Content="{x:Static lang:Resources._lock}" HorizontalAlignment="Left" Height="35 " Margin="10,250,0,0" VerticalAlignment="Top" Width="200" FontSize="20"/>
|
||||
<ComboBox HorizontalAlignment="Left" Height="30" Margin="150,50,0,0" x:Name="TextMachineGroup" VerticalAlignment="Top" Width="270" FontSize="20"
|
||||
DropDownClosed="TextMachineGroup_DropDownClosed" TextBoxBase.TextChanged="TextMachineGroup_DropDownClosed"/>
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,50,0,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.MachineGroup}" VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBox HorizontalAlignment="Left" Height="30" Margin="150,100,0,0" x:Name="IP" VerticalAlignment="Top" Width="200" FontSize="20" MaxLines="1"/>
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="350,100,0,0" TextWrapping="Wrap" Text=":" VerticalAlignment="Top" Width="20" FontSize="25"/>
|
||||
<TextBox HorizontalAlignment="Left" Height="30" Margin="360,100,0,0" x:Name="PORT" VerticalAlignment="Top" Width="60" FontSize="20" MaxLines="1" Text="5901"/>
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,100,0,0" TextWrapping="Wrap" Text="IP/PORT" VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,600,0,15" x:Name="textlog" TextWrapping="Wrap" Text="------------" VerticalAlignment="Bottom" Width="140" FontSize="20"/>
|
||||
<Button Content="{x:Static lang:Resources.Save}" HorizontalAlignment="Left" Height="35" Margin="250,600,0,15" VerticalAlignment="Bottom" Width="80" Click="Save_Click"/>
|
||||
<Button Content="{x:Static lang:Resources.Delete}" HorizontalAlignment="Left" Height="35" Margin="340,600,0,15" VerticalAlignment="Bottom" Width="80" Click="Delete_Click"/>
|
||||
<Button Content="{x:Static lang:Resources.Test}" HorizontalAlignment="Left" Height="35" Margin="160,600,50,15" VerticalAlignment="Bottom" Width="80" Click="Test_Click"/>
|
||||
|
||||
|
||||
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,272 @@
|
||||
using SkiaSharp;
|
||||
using SunlightCentralizedControlManagement_SCCM_.UserClass;
|
||||
using SunlightCentralizedControlManagement_SCCM_.ViewModel;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.NetworkInformation;
|
||||
using System.Net.Sockets;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
using static SunlightCentralizedControlManagement_SCCM_.UserClass.SqliteHelper;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
{
|
||||
/// <summary>
|
||||
/// MachinesSet.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class DispenseMachinesSet : UserControl
|
||||
{
|
||||
int type_;
|
||||
public DispenseMachinesSet()
|
||||
{
|
||||
InitializeComponent();
|
||||
//
|
||||
string[] Machine_ = { "252", "252RB", "252-2T", "252RDRM", "242W", "302", "303", "303PDW" };
|
||||
TextMachineGroup.ItemsSource = Machine_;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
DataTable dataTable = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from MachinesDispense Order by id", null).Tables[0];
|
||||
Griddata.ItemsSource = dataTable.DefaultView;
|
||||
}
|
||||
|
||||
private void Griddata_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
int rownum = Griddata.SelectedIndex;//获取鼠标选中行并定义变量
|
||||
if (rownum != -1)//判断鼠标定位是否有效
|
||||
{
|
||||
comboBoxMachine.Text = (Griddata.Columns[1].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第1列,
|
||||
TextMachineGroup.Text = (Griddata.Columns[2].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第列,
|
||||
IP.Text = (Griddata.Columns[3].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第列,
|
||||
PORT.Text = (Griddata.Columns[4].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第列,
|
||||
User.Text = (Griddata.Columns[5].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第列,
|
||||
Password.Text = (Griddata.Columns[6].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第列,
|
||||
string TYR= (Griddata.Columns[7].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;
|
||||
dLICK.IsChecked = Convert.ToBoolean((Griddata.Columns[7].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text);//定位第列,
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void Save_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(comboBoxMachine.Text) && !string.IsNullOrEmpty(TextMachineGroup.Text) && !string.IsNullOrEmpty(IP .Text))
|
||||
{
|
||||
WriteableBitmap wb = new WriteableBitmap((BitmapSource)IMAGE.Source);
|
||||
byte[] imageData = SourceToArray(wb);
|
||||
|
||||
Dictionary<string, object> dr_new = new Dictionary<string, object>();//缓存函数
|
||||
dr_new.Add("Name", comboBoxMachine.Text);
|
||||
dr_new.Add("Groups", TextMachineGroup.Text);
|
||||
dr_new.Add("IP", IP.Text);
|
||||
dr_new.Add("PORT", PORT.Text);
|
||||
dr_new.Add("type", type_);
|
||||
dr_new.Add("State", "899");
|
||||
dr_new.Add("User", User.Text);
|
||||
dr_new.Add("Password", Password.Text);
|
||||
dr_new.Add("LOCK", dLICK.IsChecked.ToString());
|
||||
dr_new.Add("DATA",imageData);
|
||||
|
||||
if (MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from MachinesDispense where name ='" + comboBoxMachine.Text + "'", null).Tables[0].Rows.Count == 0)
|
||||
{
|
||||
MainWindowViewModel.SQLiteHelpers.InsertData("MachinesDispense", dr_new);
|
||||
}
|
||||
else
|
||||
{
|
||||
MainWindowViewModel.SQLiteHelpers.Update("MachinesDispense", dr_new, "name='" + comboBoxMachine.Text + "'", null);
|
||||
}
|
||||
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)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(comboBoxMachine.Text))
|
||||
{
|
||||
MessageBoxResult vr = System.Windows.MessageBox.Show(Properties.Resources.Delete + comboBoxMachine.Text, "SCCM", MessageBoxButton.OKCancel, MessageBoxImage.Question);
|
||||
if (vr == MessageBoxResult.OK) // 如果是确定,就执行下面代码
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
textlog.Text = "Invalid";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0));
|
||||
}
|
||||
}
|
||||
private void Test_Click(object sender, RoutedEventArgs e)//测试按钮
|
||||
{
|
||||
if (!string.IsNullOrEmpty(IP.Text) && !string.IsNullOrEmpty(PORT.Text))
|
||||
{
|
||||
textlog.Text = "TEST";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(0, 0, 255));
|
||||
//------------使用ping类------
|
||||
string host = IP.Text;
|
||||
Ping p1 = new Ping();
|
||||
PingReply reply = p1.Send(host); //发送主机名或Ip地址
|
||||
//StringBuilder sbuilder;
|
||||
if (reply.Status == IPStatus.Success)
|
||||
{
|
||||
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||
//连接服务器,绑定IP 与 端口
|
||||
IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse(IP.Text), int.Parse(PORT.Text));
|
||||
try
|
||||
{
|
||||
socket.Connect(iPEndPoint);
|
||||
socket.Close();//离线
|
||||
textlog.Text = "Link succeed";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(0, 255, 0));
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
textlog.Text = "Link failed";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 255, 0));
|
||||
}
|
||||
}
|
||||
else if (reply.Status == IPStatus.TimedOut)
|
||||
{
|
||||
textlog.Text = "Link timeout";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0));
|
||||
}
|
||||
else
|
||||
{
|
||||
textlog.Text = "No links";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
textlog.Text = "Invalid";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void TextMachineGroup_DropDownClosed(object sender, EventArgs e)
|
||||
{
|
||||
Uri uri;
|
||||
BitmapImage bitmapImage;
|
||||
switch (TextMachineGroup.Text)//步骤用时计算
|
||||
{
|
||||
case "252":
|
||||
uri = new Uri("pack://application:,,,/LOGO/252-2t.png");
|
||||
bitmapImage = new BitmapImage(uri);
|
||||
IMAGE.Source = bitmapImage;
|
||||
type_ = 1;
|
||||
break;
|
||||
case "252-2T":
|
||||
uri = new Uri("pack://application:,,,/LOGO/252-2t.png");
|
||||
bitmapImage = new BitmapImage(uri);
|
||||
IMAGE.Source = bitmapImage;
|
||||
type_ = 1;
|
||||
break;
|
||||
case "252RB":
|
||||
uri = new Uri("pack://application:,,,/LOGO/252RB.png");
|
||||
bitmapImage = new BitmapImage(uri);
|
||||
IMAGE.Source = bitmapImage;
|
||||
type_ = 1;
|
||||
break;
|
||||
case "252RDRM":
|
||||
uri = new Uri("pack://application:,,,/LOGO/252RMRD.png");
|
||||
bitmapImage = new BitmapImage(uri);
|
||||
IMAGE.Source = bitmapImage;
|
||||
type_ = 1;
|
||||
break;
|
||||
case "242W":
|
||||
uri = new Uri("pack://application:,,,/LOGO/242w.png");
|
||||
bitmapImage = new BitmapImage(uri);
|
||||
IMAGE.Source = bitmapImage;
|
||||
type_ = 1;
|
||||
break;
|
||||
case "302":
|
||||
uri = new Uri("pack://application:,,,/LOGO/302.png");
|
||||
bitmapImage = new BitmapImage(uri);
|
||||
IMAGE.Source = bitmapImage;
|
||||
type_ = 2;
|
||||
break;
|
||||
case "303":
|
||||
uri = new Uri("pack://application:,,,/LOGO/303.png");
|
||||
bitmapImage = new BitmapImage(uri);
|
||||
IMAGE.Source = bitmapImage;
|
||||
type_ = 3;
|
||||
break;
|
||||
case "302PDW":
|
||||
uri = new Uri("pack://application:,,,/LOGO/303pdw.png");
|
||||
bitmapImage = new BitmapImage(uri);
|
||||
IMAGE.Source = bitmapImage;
|
||||
type_ = 3;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public static byte[] BitmapImageToByteArray(BitmapImage bmp)
|
||||
{
|
||||
byte[] byteArray = null;
|
||||
try
|
||||
{
|
||||
Stream sMarket = bmp.StreamSource;
|
||||
if (sMarket != null && sMarket.Length > 0)
|
||||
{
|
||||
//很重要,因为Position经常位于Stream的末尾,导致下面读取到的长度为0。
|
||||
sMarket.Position = 0;
|
||||
|
||||
using (BinaryReader br = new BinaryReader(sMarket))
|
||||
{
|
||||
byteArray = br.ReadBytes((int)sMarket.Length);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
//other exception handling
|
||||
}
|
||||
return byteArray;
|
||||
}
|
||||
|
||||
public static byte[] SourceToArray(WriteableBitmap source)
|
||||
{
|
||||
byte[] byteArray = null;
|
||||
try
|
||||
{
|
||||
using (MemoryStream ms = new MemoryStream())
|
||||
{
|
||||
JpegBitmapEncoder coder = new JpegBitmapEncoder();
|
||||
coder.QualityLevel = 100;
|
||||
coder.Frames.Add(BitmapFrame.Create(source));
|
||||
coder.Save(ms);
|
||||
byteArray = ms.ToArray();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message.ToString());
|
||||
}
|
||||
return byteArray;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
<UserControl x:Class="SunlightCentralizedControlManagement_SCCM_.View.DispenseView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:SunlightCentralizedControlManagement_SCCM_.View"
|
||||
xmlns:lang="clr-namespace:SunlightCentralizedControlManagement_SCCM_.Properties"
|
||||
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
||||
xmlns:ConvertMoels="clr-namespace:SunlightCentralizedControlManagement_SCCM_.ConvertMoels"
|
||||
mc:Ignorable="d"
|
||||
Loaded="UserControl_Loaded"
|
||||
d:DesignHeight="900" d:DesignWidth="1200">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition Height="60"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid Grid.Row="0">
|
||||
<ScrollViewer Margin="0" VerticalScrollBarVisibility="Auto">
|
||||
<WrapPanel Orientation="Horizontal" x:Name="DispenseMacView" Background="White">
|
||||
|
||||
</WrapPanel>
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
|
||||
<StackPanel Grid.Row="1" Height="60" Background="#FF00204E" Orientation="Horizontal">
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,180 @@
|
||||
using LiveChartsCore.Geo;
|
||||
using SkiaSharp;
|
||||
using SunlightCentralizedControlManagement_SCCM_.UserClass;
|
||||
using SunlightCentralizedControlManagement_SCCM_.UserControls;
|
||||
using SunlightCentralizedControlManagement_SCCM_.ViewModel;
|
||||
using SunlightCentralizedControlManagement_SCCM_.ConvertMoels;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.NetworkInformation;
|
||||
using System.Net.Sockets;
|
||||
using System.Numerics;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
using static SunlightCentralizedControlManagement_SCCM_.UserClass.SqliteHelper;
|
||||
using System.Windows.Threading;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Xml.Linq;
|
||||
using static System.Windows.Forms.AxHost;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
{
|
||||
/// <summary>
|
||||
/// MachinesSet.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class DispenseView : UserControl
|
||||
{
|
||||
public DispenseView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
DispenseMac = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from MachinesDispense ", null).Tables[0];//缓存
|
||||
/// <summary>
|
||||
/// 生成总览信息卡
|
||||
/// </summary>
|
||||
for (int i = 0; i < DispenseMac.Rows.Count; i++)
|
||||
{
|
||||
string x = DispenseMac.AsEnumerable().Select(row => row.Field<string>("State")).ElementAt(i);
|
||||
bool y = DispenseMac.AsEnumerable().Select(row => row.Field<bool>("LOCK")).ElementAt(i);
|
||||
|
||||
dispenseMacInfo[i] = new UserControls.DispenseMacInfo();
|
||||
dispenseMacInfo[i].Margin = new Thickness(5, 5, 0, 5);
|
||||
dispenseMacInfo[i].Width = 400;
|
||||
dispenseMacInfo[i].Height = 600;
|
||||
dispenseMacInfo[i].IP.Text = DispenseMac.AsEnumerable().Select(row => row.Field<string>("IP")).ElementAt(i);
|
||||
dispenseMacInfo[i].USER.Text = DispenseMac.AsEnumerable().Select(row => row.Field<string>("User")).ElementAt(i);
|
||||
dispenseMacInfo[i].PORT.Text = DispenseMac.AsEnumerable().Select(row => row.Field<int>("PORT")).ElementAt(i).ToString();
|
||||
dispenseMacInfo[i].PASSWD.Text = DispenseMac.AsEnumerable().Select(row => row.Field<string>("Password")).ElementAt(i);
|
||||
dispenseMacInfo[i].type_.Text = DispenseMac.AsEnumerable().Select(row => row.Field<int>("type")).ElementAt(i).ToString();
|
||||
dispenseMacInfo[i].type_N.Text = StatenClassConvert.Convert(DispenseMac.AsEnumerable().Select(row => row.Field<int>("type")).ElementAt(i));
|
||||
dispenseMacInfo[i].mac.Text = DispenseMac.AsEnumerable().Select(row => row.Field<string>("name")).ElementAt(i);
|
||||
dispenseMacInfo[i].macg.Text = DispenseMac.AsEnumerable().Select(row => row.Field<string>("Groups")).ElementAt(i);
|
||||
dispenseMacInfo[i].state.Text = StatenClassConvert.Convert(x);
|
||||
if (x == "899")
|
||||
{
|
||||
dispenseMacInfo[i].state.Background = new SolidColorBrush(Color.FromRgb(255, 0, 0));
|
||||
}
|
||||
else
|
||||
{
|
||||
dispenseMacInfo[i].state.Background = new SolidColorBrush(Color.FromRgb(255, 255, 255));
|
||||
}
|
||||
dispenseMacInfo[i].WorkingStatus.Text = DispenseMac.AsEnumerable().Select(row => row.Field<string>("WorkingStatus")).ElementAt(i);
|
||||
if (y)
|
||||
{
|
||||
dispenseMacInfo[i].mlock.Visibility = Visibility.Visible;
|
||||
}
|
||||
else
|
||||
{
|
||||
dispenseMacInfo[i].mlock.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
||||
//dispenseMacInfo[i].name.Text = Selet_Machines(MainWindowViewModel.Machines, "name", i).ToString();
|
||||
// dispenseMacInfo[i].IMAGE = ;
|
||||
|
||||
MemoryStream memoryStream = new MemoryStream(DispenseMac.AsEnumerable().Select(row => row.Field<byte[]>("DATA")).ElementAt(i));
|
||||
//数据流生成图片显示
|
||||
BitmapImage bitmapImage = new BitmapImage();
|
||||
bitmapImage.BeginInit();
|
||||
bitmapImage.StreamSource = memoryStream;
|
||||
bitmapImage.EndInit();
|
||||
dispenseMacInfo[i].IMAGE.Source = bitmapImage;
|
||||
DispenseMacView.Children.Add(dispenseMacInfo[i]);
|
||||
|
||||
CountDown();
|
||||
}
|
||||
}
|
||||
|
||||
private void CountDown()
|
||||
{
|
||||
DispatcherTimer timer1s = new DispatcherTimer//初始化循环,每10秒调用一次Tick
|
||||
{
|
||||
Interval = TimeSpan.FromSeconds(10)//秒
|
||||
};
|
||||
timer1s.Tick += Tick_Event_1S;
|
||||
timer1s.Start();
|
||||
}//时间周期初始化
|
||||
async void Tick_Event_1S(object sender, EventArgs e)//Tick_Event周期执行事件1S
|
||||
{
|
||||
for (int i = 0; i < DispenseMac.Rows.Count; i++)
|
||||
{
|
||||
if (await PingTest(dispenseMacInfo[i].IP.Text))
|
||||
{
|
||||
DataRow drEmployee = DispenseMac.Select("IP='" + dispenseMacInfo[i].IP.Text + "'").First();
|
||||
drEmployee.BeginEdit();
|
||||
drEmployee["State"] = "802";
|
||||
drEmployee.EndEdit();
|
||||
drEmployee.AcceptChanges();
|
||||
drEmployee.ClearErrors();
|
||||
}
|
||||
|
||||
string x = DispenseMac.AsEnumerable().Select(row => row.Field<string>("State")).ElementAt(i);
|
||||
bool y = DispenseMac.AsEnumerable().Select(row => row.Field<bool>("LOCK")).ElementAt(i);
|
||||
|
||||
dispenseMacInfo[i].state.Text = StatenClassConvert.Convert(x);
|
||||
dispenseMacInfo[i].WorkingStatus.Text = DispenseMac.AsEnumerable().Select(row => row.Field<string>("WorkingStatus")).ElementAt(i);
|
||||
if (x == "899")
|
||||
{
|
||||
dispenseMacInfo[i].state.Background = new SolidColorBrush(Color.FromRgb(255, 0, 0));
|
||||
dispenseMacInfo[i].Disconnect.Visibility = Visibility.Visible;
|
||||
}
|
||||
else
|
||||
{
|
||||
dispenseMacInfo[i].state.Background = new SolidColorBrush(Color.FromRgb(255, 255, 255));
|
||||
dispenseMacInfo[i].Disconnect.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
if (y)
|
||||
{
|
||||
dispenseMacInfo[i].mlock.Visibility = Visibility.Visible;
|
||||
}
|
||||
else
|
||||
{
|
||||
dispenseMacInfo[i].mlock.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private async Task<bool> PingTest(string ip)
|
||||
{
|
||||
bool result = false;
|
||||
Ping pingSender = new Ping();
|
||||
|
||||
try
|
||||
{
|
||||
PingReply reply = await pingSender.SendPingAsync(ip, 3000);
|
||||
|
||||
if (reply.Status == IPStatus.Success)
|
||||
{
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
catch (PingException )
|
||||
{
|
||||
result = false;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,218 @@
|
||||
<UserControl x:Class="SunlightCentralizedControlManagement_SCCM_.View.DyeingPlanView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:SunlightCentralizedControlManagement_SCCM_.View"
|
||||
xmlns:lang="clr-namespace:SunlightCentralizedControlManagement_SCCM_.Properties"
|
||||
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
||||
xmlns:ConvertMoels="clr-namespace:SunlightCentralizedControlManagement_SCCM_.ConvertMoels"
|
||||
mc:Ignorable="d" Loaded="UserControl_Loaded"
|
||||
d:DesignHeight="900" d:DesignWidth="1100">
|
||||
<UserControl.Resources>
|
||||
<ConvertMoels:StatexmlConvert x:Key="StatexmlConvert"/>
|
||||
<ConvertMoels:StateToColorConvert x:Key="StateToColorConvert"/>
|
||||
<ConvertMoels:StatenToImageConvert x:Key="StatenToImageConvert"/>
|
||||
</UserControl.Resources>
|
||||
<Grid Background="White" Cursor="">
|
||||
<ComboBox HorizontalAlignment="Left" Height="40" Margin="140,30,10,0" x:Name="comboBoxWorkOrder" VerticalAlignment="Top" Width="270"
|
||||
FontSize="15" IsEditable="True" BorderBrush="#FF673AB7" KeyDown="comboBoxWorkOrder_KeyDown"/>
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,30,280,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.orders}"
|
||||
VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<ComboBox HorizontalAlignment="Left" Height="40" Margin="140,80,10,0" x:Name="comboBoxDyelot" VerticalAlignment="Top" Width="270"
|
||||
FontSize="15" IsEditable="True" BorderBrush="#FF673AB7" KeyDown="comboBoxDyelot_KeyDown" />
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,80,280,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.Dyelot}"
|
||||
VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<ComboBox HorizontalAlignment="Left" Height="40" Margin="140,130,10,0" x:Name="comboBoxMachine" VerticalAlignment="Top" Width="270"
|
||||
FontSize="15" IsEditable="True" BorderBrush="#FF673AB7" DropDownClosed="comboBoxMachine_DropDownClosed" IsReadOnly="True" />
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,130,280,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.Machine}"
|
||||
VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,180,280,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.ColorNumber}"
|
||||
VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="360,180,280,0" x:Name="color" TextWrapping="Wrap"
|
||||
VerticalAlignment="Top" Width="50" Background="#FF336FA8" MouseDown="color_color_MouseDoubleClick"/>
|
||||
<TextBox HorizontalAlignment="Left" Height="40" Margin="140,180,10,0" x:Name="TEXTColorNumber" VerticalAlignment="Top" Width="200"
|
||||
FontSize="15" BorderBrush="#FF673AB7" />
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,230,280,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.ColorName}"
|
||||
VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBox HorizontalAlignment="Left" Height="40" Margin="140,230,10,0" x:Name="TEXTColorName" VerticalAlignment="Top" Width="270"
|
||||
FontSize="15" BorderBrush="#FF673AB7" />
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,280,280,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.Client}"
|
||||
VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBox HorizontalAlignment="Left" Height="40" Margin="140,280,10,0" x:Name="TEXTClient" VerticalAlignment="Top" Width="270"
|
||||
FontSize="15" BorderBrush="#FF673AB7" />
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,330,280,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.ClothSpecies}"
|
||||
VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBox HorizontalAlignment="Left" Height="40" Margin="140,330,10,0" x:Name="TEXTClothSpecies" VerticalAlignment="Top" Width="270"
|
||||
FontSize="15" BorderBrush="#FF673AB7" />
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,380,280,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.ClothWeight}"
|
||||
VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBox HorizontalAlignment="Left" Height="40" Margin="140,380,10,0" x:Name="TEXTClothWeight" VerticalAlignment="Top" Width="270"
|
||||
FontSize="15" BorderBrush="#FF673AB7" PreviewTextInput="Tb_KeyTEXTClothWeight" InputMethod.IsInputMethodEnabled="False"/>
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,430,280,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.BathRatio}"
|
||||
VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBox HorizontalAlignment="Left" Height="40" Margin="140,430,10,0" x:Name="TEXTBathRatio" VerticalAlignment="Top" Width="270"
|
||||
FontSize="15" BorderBrush="#FF673AB7" PreviewTextInput="Tb_KeyTEXTBathRatio" InputMethod.IsInputMethodEnabled="False"/>
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,480,280,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.Total}"
|
||||
VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBox HorizontalAlignment="Left" Height="40" Margin="140,480,10,0" x:Name="TEXTTotal" VerticalAlignment="Top" Width="270"
|
||||
FontSize="15" BorderBrush="#FF673AB7" PreviewTextInput="Tb_KeyTEXTTotal" InputMethod.IsInputMethodEnabled="False"/>
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,530,280,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.USER}"
|
||||
VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBox HorizontalAlignment="Left" Height="40" Margin="140,530,10,0" x:Name="TEXTUSER" VerticalAlignment="Top" Width="270"
|
||||
FontSize="15" BorderBrush="#FF673AB7" />
|
||||
|
||||
<TextBlock HorizontalAlignment="Right" Height="40" Margin="10,80,480,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.Pump}"
|
||||
VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBox HorizontalAlignment="Right" Height="40" Margin="140,80,380,0" x:Name="PumpSpeed" VerticalAlignment="Top" Width="100"
|
||||
FontSize="15" BorderBrush="#FF673AB7" />
|
||||
<TextBlock HorizontalAlignment="Right" Height="40" Margin="240,80,150,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.Blower}"
|
||||
VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBox HorizontalAlignment="Right" Height="40" Margin="360,80,50,0" x:Name="Blower" VerticalAlignment="Top" Width="100"
|
||||
FontSize="15" BorderBrush="#FF673AB7" />
|
||||
<TextBlock HorizontalAlignment="Right" Height="40" Margin="10,130,480,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.Swing}"
|
||||
VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBox HorizontalAlignment="Right" Height="40" Margin="140,130,380,0" x:Name="Swing" VerticalAlignment="Top" Width="100"
|
||||
FontSize="15" BorderBrush="#FF673AB7" />
|
||||
<TextBlock HorizontalAlignment="Right" Height="40" Margin="240,130,150,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.ClothWheel}"
|
||||
VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBox HorizontalAlignment="Right" Height="40" Margin="360,130,50,0" x:Name="ClothWheel" VerticalAlignment="Top" Width="100"
|
||||
FontSize="15" BorderBrush="#FF673AB7" />
|
||||
<TextBlock HorizontalAlignment="Right" Height="40" Margin="10,180,480,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.Nozzle}"
|
||||
VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBox HorizontalAlignment="Right" Height="40" Margin="140,180,380,0" x:Name="Nozzle" VerticalAlignment="Top" Width="100"
|
||||
FontSize="15" BorderBrush="#FF673AB7" />
|
||||
|
||||
<ComboBox HorizontalAlignment="Right" Height="40" Margin="150,30,50,0" x:Name="comboBoxProgram" VerticalAlignment="Top" Width="470"
|
||||
FontSize="15" IsEditable="True" BorderBrush="#FF673AB7" DropDownClosed="comboBoxProgram_DropDownClosed"
|
||||
TextBoxBase.TextChanged="comboBoxProgram_TextChanged"/>
|
||||
<TextBlock HorizontalAlignment="Right" Height="40" Margin="10,30,480,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.process}"
|
||||
VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<DataGrid x:Name="Grid_data" AlternationCount="2" IsReadOnly="True" d:ItemsSource="{d:SampleData ItemCount=99}"
|
||||
Background="White" HorizontalGridLinesBrush="#FFC9C9C9" VerticalGridLinesBrush="#FFC9C9C9"
|
||||
GridLinesVisibility="All" ColumnHeaderHeight="40" MouseDoubleClick="Grid_data_MouseDoubleClick"
|
||||
Grid.ColumnSpan="2" CanUserResizeRows="False" AutoGenerateColumns="False" MinColumnWidth="30"
|
||||
CanUserAddRows="False" CanUserDeleteRows="False" HeadersVisibility ="Column" SelectionMode="Single"
|
||||
Margin="0,250,10,60" Width="600" HorizontalAlignment="Right" BorderBrush="#FFC9C9C9" FontSize="16" BorderThickness="5,5,5,5" >
|
||||
<DataGrid.RowStyle >
|
||||
<Style TargetType="{x:Type DataGridRow}">
|
||||
<Setter Property="Height" Value="100" />
|
||||
<Setter Property="FontSize" Value="15" />
|
||||
<Style.Triggers>
|
||||
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
|
||||
<Setter Property="Background" Value="#FFFFFFFF" />
|
||||
</Trigger>
|
||||
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
|
||||
<Setter Property="Background" Value="#FFF0F0F0" />
|
||||
</Trigger>
|
||||
<Trigger Property="IsMouseOver" Value="False"/>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</DataGrid.RowStyle>
|
||||
<DataGrid.CellStyle>
|
||||
<Style TargetType="DataGridCell">
|
||||
<Setter Property="BorderThickness" Value="0"/>
|
||||
<Setter Property="MinWidth" Value="20"/>
|
||||
<Style.Triggers>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Setter Property="Background" Value="#FFC0C0C0"/>
|
||||
<Setter Property="BorderBrush" Value="#FFC0C0C0"/>
|
||||
<Setter Property="Foreground" Value="Black"/>
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</DataGrid.CellStyle>
|
||||
<DataGrid.ContextMenu>
|
||||
<ContextMenu>
|
||||
<MenuItem Header="{x:Static lang:Resources.edit}" Click="MenuItem_edit"/>
|
||||
<MenuItem Header="{x:Static lang:Resources.Insert}" Click="MenuItem_Insert"/>
|
||||
<MenuItem Header="{x:Static lang:Resources.Delete}" Click="MenuItem_Delete"/>
|
||||
</ContextMenu>
|
||||
</DataGrid.ContextMenu>
|
||||
<DataGrid.Columns>
|
||||
<!--列信息绑定-->
|
||||
<DataGridTextColumn Binding="{Binding ProgramID}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Program}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Step}" Binding="{Binding Step}"
|
||||
Width="60" IsReadOnly="True">
|
||||
<DataGridTextColumn.ElementStyle>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
<Setter Property="HorizontalAlignment" Value="Center"/>
|
||||
</Style>
|
||||
</DataGridTextColumn.ElementStyle>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Code}" Width="0" MinWidth="0"
|
||||
MaxWidth="0" Binding="{Binding StepID}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Directives}" Width="0" MinWidth="0"
|
||||
MaxWidth="0" Binding="{Binding StepName}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.ParameterSet}" Width="0" MinWidth="0"
|
||||
MaxWidth="0" Binding="{Binding ParameterName}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter1}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter2}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter3}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter4}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter5}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTemplateColumn Header="{x:Static lang:Resources.Directives}" Width="100" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image Source="{Binding Path=StepID,Converter={StaticResource StatenToImageConvert}}" Height="100" Width="100"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="{x:Static lang:Resources.Directives}" Width="300" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel>
|
||||
<Border BorderBrush="#FFC9C9C9" BorderThickness="0,0,0,0.5">
|
||||
<TextBlock Height="50" >
|
||||
<Run Text="{x:Static lang:Resources.Function}"/>
|
||||
<Run Text=":"/>
|
||||
<Run Text="{Binding StepName}"/>
|
||||
</TextBlock>
|
||||
</Border>
|
||||
<Border BorderBrush="#FFC9C9C9" BorderThickness="0,0.5,0,0">
|
||||
<TextBlock Height="50" >
|
||||
<Run Text="{x:Static lang:Resources.ParameterSet}"/>
|
||||
<Run Text=":"/>
|
||||
<Run Text="{Binding ParameterName}"/>
|
||||
</TextBlock>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="{x:Static lang:Resources.Subroutine}" Width="100" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image Source="{Binding Path=StepID_S1,Converter={StaticResource StatenToImageConvert}}" Height="100" Width="100"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="{x:Static lang:Resources.Subroutine}" Width="100" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image Source="{Binding Path=StepID_S2,Converter={StaticResource StatenToImageConvert}}" Height="100" Width="100"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="{x:Static lang:Resources.Subroutine}" Width="100" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image Source="{Binding Path=StepID_S3 ,Converter={StaticResource StatenToImageConvert}}" Height="100" Width="100"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
<Button x:Name="Save" Content="{x:Static lang:Resources.Save}" HorizontalAlignment="Right" Height="35" Margin="450,0,50,10" VerticalAlignment="Bottom" Width="80" Click="Button_Click"/>
|
||||
<Button HorizontalAlignment="Left" Height="35" Margin="0,0,50,10" VerticalAlignment="Bottom" Width="60" Click="Button_Quit" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="{x:Null}">
|
||||
<materialDesign:PackIcon Kind="ArrowRight" Foreground="#FF00204E" HorizontalAlignment="Center" VerticalAlignment="Center" Width="50" Height="35" />
|
||||
</Button>
|
||||
|
||||
<Grid Background="White" Margin="10,500,300,45" HorizontalAlignment="Left" VerticalAlignment="Bottom" Height="250" Width="400">
|
||||
<ContentControl x:Name="Picture"/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,672 @@
|
||||
using Newtonsoft.Json.Linq;
|
||||
using nGantt.GanttChart;
|
||||
using ScottPlot.Palettes;
|
||||
using SunlightCentralizedControlManagement_SCCM_.UserClass;
|
||||
using SunlightCentralizedControlManagement_SCCM_.ViewModel;
|
||||
using SunlightCentralizedControlManagement_SCCM_.WindowsView;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
using System.Xml.Linq;
|
||||
using TouchSocket.Core;
|
||||
using static SunlightCentralizedControlManagement_SCCM_.UserClass.SqliteHelper;
|
||||
using static SunlightCentralizedControlManagement_SCCM_.WindowsView.ViewStep;
|
||||
using static System.Windows.Forms.AxHost;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
{
|
||||
/// <summary>
|
||||
/// ProductionPlanningEdit.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class DyeingPlanView : UserControl
|
||||
{
|
||||
DataTable ProgramName = new DataTable();
|
||||
DataTable WorkOrder =new DataTable();
|
||||
DataTable dat = new DataTable();
|
||||
DataTable TEMPTable = new DataTable();
|
||||
DataTable DyelotsBulkedRecipe=new DataTable();
|
||||
public string WorkOrder_n;
|
||||
string Numder = null;
|
||||
string ID = null;
|
||||
string P1, P2, P3, P4, P5;
|
||||
public DyeingPlanView()
|
||||
{
|
||||
InitializeComponent();
|
||||
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_;
|
||||
|
||||
TEMPTable.Columns.Add("Time", Type.GetType("System.String"));
|
||||
TEMPTable.Columns.Add("MST", Type.GetType("System.Double"));
|
||||
}
|
||||
private void UserControl_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
private void comboBoxMachine_DropDownClosed(object sender, EventArgs e)//机台选择
|
||||
{
|
||||
string[] sArray = Regex.Split(comboBoxMachine.Text, @"\+", RegexOptions.IgnoreCase);
|
||||
if (sArray.Length <= 1)
|
||||
{
|
||||
comboBoxDyelot.IsEnabled = true;
|
||||
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();//转换代码
|
||||
}
|
||||
}
|
||||
private void Button_Click(object sender, RoutedEventArgs e)//保存按钮
|
||||
{
|
||||
if (string.IsNullOrEmpty(comboBoxMachine.Text))
|
||||
{
|
||||
MessageBox.Show("Not Machine", "SCCM", MessageBoxButton.OK, MessageBoxImage.Question);
|
||||
return;
|
||||
}
|
||||
if (string.IsNullOrEmpty(comboBoxProgram.Text))
|
||||
{
|
||||
MessageBox.Show("Not Program", "SCCM", MessageBoxButton.OK, MessageBoxImage.Question);
|
||||
return;
|
||||
}
|
||||
string[] pArray = Regex.Split(comboBoxProgram.Text, @"\+", RegexOptions.IgnoreCase);
|
||||
|
||||
//单机器信息写入
|
||||
string sTime;
|
||||
string StartTime_;
|
||||
string WorkOrder_ = comboBoxMachine.Text + "_" + DateTime.Now.ToString("yyMMddHHmmss");
|
||||
if (!string.IsNullOrEmpty(comboBoxWorkOrder.Text)) WorkOrder_ = comboBoxWorkOrder.Text;
|
||||
string ProgramName_ = comboBoxProgram.Text;
|
||||
string ProgramID_ = null;
|
||||
for (int j = 0; j < pArray.Length; j++)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (j == 0)
|
||||
{
|
||||
ProgramID_ = ProgramName.Select("ProgramName='" + pArray[j] + "'").
|
||||
First().Field<object>("ProgramID").ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
ProgramID_ = ProgramID_ + "+" + ProgramName.Select("ProgramName='" + pArray[j] + "'").
|
||||
First().Field<object>("ProgramID").ToString();
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
MessageBox.Show("Not Program", "SCCM", MessageBoxButton.OK, MessageBoxImage.Question);
|
||||
return;
|
||||
}
|
||||
}
|
||||
string Machines_ = comboBoxMachine.Text;
|
||||
string State_ = "100";
|
||||
string Dyelot_ = comboBoxDyelot.Text;
|
||||
string color_ = color.Background.ToString();
|
||||
try
|
||||
{
|
||||
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))
|
||||
{
|
||||
StartTime_ = DateTime.Parse(sTime).AddMinutes(1).ToString("yyyy/MM/dd HH:mm:ss");
|
||||
}
|
||||
else
|
||||
{
|
||||
StartTime_ = DateTime.Now.AddMinutes(1).ToString("yyyy/MM/dd HH:mm:ss");
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
StartTime_ = DateTime.Now.AddMinutes(1).ToString("yyyy/MM/dd HH:mm:ss");
|
||||
}
|
||||
|
||||
string Time_ = "0:00";
|
||||
for (int k = 0; k < pArray.Length; k++)
|
||||
{
|
||||
string t = ProgramName.Select("ProgramName='" + pArray[k] + "'").
|
||||
First().Field<object>("Time").ToString();
|
||||
Time_ = (DateTime.Parse(Time_) + DateTime.Parse(t).TimeOfDay).ToString("HH:mm:ss");
|
||||
}
|
||||
string EndTime_ = (DateTime.Parse(StartTime_) + DateTime.Parse(Time_).TimeOfDay).ToString("yyyy/MM/dd HH:mm:ss");
|
||||
|
||||
//插入数据信息
|
||||
Dictionary<string, object> WorkOrder_new = new Dictionary<string, object>();//缓存函数
|
||||
WorkOrder_new.Add("StartTime", StartTime_);
|
||||
WorkOrder_new.Add("EndTime", EndTime_);
|
||||
WorkOrder_new.Add("Time", Time_);
|
||||
WorkOrder_new.Add("WorkOrder", WorkOrder_);
|
||||
WorkOrder_new.Add("ProgramName", ProgramName_);
|
||||
WorkOrder_new.Add("ProgramID", ProgramID_);
|
||||
WorkOrder_new.Add("Machines", Machines_);
|
||||
WorkOrder_new.Add("State", State_);
|
||||
WorkOrder_new.Add("Dyelot", Dyelot_);
|
||||
WorkOrder_new.Add("Remark", null);
|
||||
WorkOrder_new.Add("lock", 0);
|
||||
WorkOrder_new.Add("color", color_);
|
||||
WorkOrder_new.Add("ColorNumber", TEXTColorNumber.Text);
|
||||
WorkOrder_new.Add("Client", TEXTClient.Text);
|
||||
WorkOrder_new.Add("ClothWeight", TEXTClothWeight.Text);
|
||||
WorkOrder_new.Add("ClothSpecies", TEXTClothSpecies.Text);
|
||||
WorkOrder_new.Add("BathRatio", TEXTBathRatio.Text);
|
||||
WorkOrder_new.Add("Total", TEXTTotal.Text);
|
||||
WorkOrder_new.Add("USER", TEXTUSER.Text);
|
||||
WorkOrder_new.Add("ColorName", TEXTColorName.Text);
|
||||
MainWindowViewModel.SQLiteHelpers.InsertData("WorkOrder", WorkOrder_new);// 执行插入
|
||||
|
||||
//插入信息
|
||||
Dictionary<string, object> WorkOrder_set = new Dictionary<string, object>();//缓存函数
|
||||
WorkOrder_set.Add("WorkOrder", WorkOrder_);
|
||||
WorkOrder_set.Add("PumpSpeed", PumpSpeed.Text);
|
||||
WorkOrder_set.Add("Blower", Blower.Text);
|
||||
WorkOrder_set.Add("Swing", Swing.Text);
|
||||
WorkOrder_set.Add("ClothWheel", ClothWheel.Text);
|
||||
WorkOrder_set.Add("Nozzle", Nozzle.Text);
|
||||
MainWindowViewModel.SQLiteHelpers.InsertData("WorkOrderSet", WorkOrder_set);// 执行插入
|
||||
|
||||
Dictionary<string, object> WorkOrder_DAT = new Dictionary<string, object>();//缓存函数
|
||||
for (int x = 0; x < dat.Rows.Count; x++)
|
||||
{
|
||||
WorkOrder_DAT = MainWindowViewModel.SQLiteHelpers.ToDictionary(dat.Rows[x]);
|
||||
WorkOrder_DAT.Add("WorkOrder", WorkOrder_);
|
||||
WorkOrder_DAT.Add("Dyelot", Dyelot_);
|
||||
MainWindowViewModel.SQLiteHelpers.InsertData("WorkorderSteps", WorkOrder_DAT);//行插入
|
||||
WorkOrder_DAT.Clear();
|
||||
}
|
||||
if (!String.IsNullOrEmpty(comboBoxDyelot.Text))//料单信息
|
||||
{
|
||||
for (int x = 0; x < DyelotsBulkedRecipe.Rows.Count; x++)
|
||||
{
|
||||
WorkOrder_DAT.Add("WorkOrder", comboBoxWorkOrder.Text);
|
||||
WorkOrder_DAT.Add("Dyelot", DyelotsBulkedRecipe.Rows[x]["Dyelot"]);
|
||||
WorkOrder_DAT.Add("Redye", DyelotsBulkedRecipe.Rows[x]["Redye"]);
|
||||
WorkOrder_DAT.Add("Step", DyelotsBulkedRecipe.Rows[x]["StepNumber"]);
|
||||
WorkOrder_DAT.Add("TIME", DyelotsBulkedRecipe.Rows[x]["Created"]);
|
||||
WorkOrder_DAT.Add("Tank", DyelotsBulkedRecipe.Rows[x]["TankNo"]);
|
||||
WorkOrder_DAT.Add("State", DyelotsBulkedRecipe.Rows[x]["DispenseResult"]);
|
||||
WorkOrder_DAT.Add("Machine", comboBoxMachine.Text);
|
||||
WorkOrder_DAT.Add("ProductCode", DyelotsBulkedRecipe.Rows[x]["ProductCode"]);
|
||||
WorkOrder_DAT.Add("ProductName", DyelotsBulkedRecipe.Rows[x]["ProductName"]);
|
||||
WorkOrder_DAT.Add("ProductType", DyelotsBulkedRecipe.Rows[x]["ProductType"]);
|
||||
WorkOrder_DAT.Add("Grams", DyelotsBulkedRecipe.Rows[x]["Grams"]);
|
||||
WorkOrder_DAT.Add("Amount", DyelotsBulkedRecipe.Rows[x]["Amount"]);
|
||||
WorkOrder_DAT.Add("DispenseStartTime", DyelotsBulkedRecipe.Rows[x]["DispenseStartTime"]);
|
||||
WorkOrder_DAT.Add("DispenseEndTime", DyelotsBulkedRecipe.Rows[x]["DispenseEndTime"]);
|
||||
WorkOrder_DAT.Add("DispenseGrams", DyelotsBulkedRecipe.Rows[x]["DispenseGrams"]);
|
||||
WorkOrder_DAT.Add("Dispense", DyelotsBulkedRecipe.Rows[x]["Dispenser"]);
|
||||
WorkOrder_DAT.Add("UserAccount", DyelotsBulkedRecipe.Rows[x]["UserAccount"]);
|
||||
MainWindowViewModel.SQLiteHelpers.InsertData("Dyelot", WorkOrder_DAT);//行插入
|
||||
WorkOrder_DAT.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
LogGing.ExchangeDATA("Dyelot=" + comboBoxWorkOrder.Text + ";Machine=" + comboBoxMachine.Text +
|
||||
";Program=" + comboBoxProgram.Text + ";User=" + TEXTUSER.Text + ";");
|
||||
|
||||
this.Visibility = Visibility.Collapsed;
|
||||
ProductionPlanningView.UI = true;
|
||||
}
|
||||
private void Button_Quit(object sender, RoutedEventArgs e)//退出
|
||||
{
|
||||
this.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
public void DatSteps(DataTable db)//行号刷新
|
||||
{
|
||||
int a = db.Rows.Count;
|
||||
for (int i = 0; i < a; i++)
|
||||
{
|
||||
DataRow dr = db.Rows[i];
|
||||
dr.BeginEdit();
|
||||
dr["Step"] = i + 1;
|
||||
dr.EndEdit();
|
||||
}
|
||||
}
|
||||
private void comboBoxProgram_DropDownClosed(object sender, EventArgs e)//工艺选择事件
|
||||
{
|
||||
if (!string.IsNullOrEmpty(comboBoxProgram.Text))
|
||||
{
|
||||
dat.Clear();
|
||||
dat = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet(
|
||||
"select * from ProgramSteps where Program='" + comboBoxProgram.SelectedValue + "' order by Step asc", null).Tables[0]; //读取计划表写入缓存
|
||||
DatSteps(dat);
|
||||
Grid_data.ItemsSource = dat.DefaultView;
|
||||
}
|
||||
}
|
||||
private void comboBoxProgram_TextChanged(object sender, TextChangedEventArgs e)
|
||||
{
|
||||
dat.Clear();
|
||||
string text = comboBoxProgram.Text;
|
||||
if (!string.IsNullOrEmpty(text))
|
||||
{
|
||||
try
|
||||
{
|
||||
string[] sArray = Regex.Split(text, @"\+", RegexOptions.IgnoreCase);
|
||||
/* if (!string.IsNullOrEmpty(WorkOrder_n))
|
||||
{
|
||||
dat = SQLiteHelpers.ExecuteDataSet(
|
||||
"select * from WorkorderSteps where WorkOrder='" + WorkOrder_n + "' order by Step asc", null).Tables[0]; //读取计划表写入缓存
|
||||
}//插入工单不为空时载入细节信息*/
|
||||
for (int i = 0; i < sArray.Length; i++)
|
||||
{
|
||||
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)
|
||||
{
|
||||
dat.Rows.Add(drT.ItemArray);
|
||||
}
|
||||
}//以工艺名组合工艺细节
|
||||
|
||||
DatSteps(dat);
|
||||
Grid_data.ItemsSource = dat.DefaultView;
|
||||
|
||||
TEMP();
|
||||
}
|
||||
catch (Exception) { }
|
||||
}
|
||||
|
||||
}//工艺修改事件
|
||||
private void MenuItem_edit(object sender, RoutedEventArgs e)
|
||||
{
|
||||
int rownum = Grid_data.SelectedIndex;//获取鼠标选中行并定义变量
|
||||
if (rownum != -1)//判断鼠标定位是否有效
|
||||
{
|
||||
ID = (Grid_data.Columns[2].GetCellContent(Grid_data.Items[rownum]) as TextBlock).Text;//定位第0列,
|
||||
Numder = (Grid_data.Columns[3].GetCellContent(Grid_data.Items[rownum]) as TextBlock).Text;//定位第1列,
|
||||
P1 = (Grid_data.Columns[6].GetCellContent(Grid_data.Items[rownum]) as TextBlock).Text;//定位第6列,
|
||||
P2 = (Grid_data.Columns[7].GetCellContent(Grid_data.Items[rownum]) as TextBlock).Text;//定位第7列,
|
||||
P3 = (Grid_data.Columns[8].GetCellContent(Grid_data.Items[rownum]) as TextBlock).Text;//定位第8列,
|
||||
P4 = (Grid_data.Columns[9].GetCellContent(Grid_data.Items[rownum]) as TextBlock).Text;//定位第9列,
|
||||
P5 = (Grid_data.Columns[10].GetCellContent(Grid_data.Items[rownum]) as TextBlock).Text;//定位第10列,
|
||||
|
||||
if (string.IsNullOrEmpty(Numder)) { Numder = null; P1 = "0"; P2 = "0"; P3 = "0"; P4 = "0"; P5 = "0"; }
|
||||
if (ID == null) ID = dat.Rows.Count.ToString();
|
||||
ViewStep viewstop = new ViewStep(Numder, dat.Select("STEP = " + ID).First());
|
||||
viewstop.AddressUpdated += new ViewStep.AddressUpdateHandler(Address_ButtonClicked);
|
||||
viewstop.data = ID;
|
||||
viewstop.ShowDialog();
|
||||
}
|
||||
}
|
||||
private void MenuItem_Insert(object sender, RoutedEventArgs e)//右键插入
|
||||
{
|
||||
int rownum = Grid_data.SelectedIndex;//获取鼠标选中行并定义变量
|
||||
if (rownum != -1)//判断鼠标定位是否有效
|
||||
{
|
||||
ID = (Grid_data.Columns[2].GetCellContent(Grid_data.Items[rownum]) as TextBlock).Text;//定位列,
|
||||
|
||||
int d = 0;
|
||||
if (ID != null) { d = Convert.ToInt32(ID); } else { return; }
|
||||
string ProgramID = dat.Select().First().Field<string>("ProgramID").ToString();
|
||||
string ProgramNAME = dat.Select().First().Field<string>("Program").ToString();
|
||||
DataRow dr = dat.NewRow();//添加表数据
|
||||
dr["ProgramID"] = ProgramID;
|
||||
dr["Program"] = ProgramNAME;
|
||||
dat.Rows.InsertAt(dr, d - 1);
|
||||
|
||||
DatSteps(dat);
|
||||
Grid_data.ItemsSource = dat.DefaultView;
|
||||
|
||||
if (string.IsNullOrEmpty(Numder)) { Numder = null; P1 = "0"; P2 = "0"; P3 = "0"; P4 = "0"; P5 = "0"; }
|
||||
if (ID == null) ID = dat.Rows.Count.ToString();
|
||||
ViewStep viewstop = new ViewStep(Numder, dat.Select("STEP = " + ID).First());
|
||||
viewstop.AddressUpdated += new ViewStep.AddressUpdateHandler(Address_ButtonClicked);
|
||||
viewstop.data = ID;
|
||||
viewstop.ShowDialog();
|
||||
}
|
||||
}
|
||||
private void MenuItem_Delete(object sender, RoutedEventArgs e)//右键删除
|
||||
{
|
||||
int rownum = Grid_data.SelectedIndex;//获取鼠标选中行并定义变量
|
||||
if (rownum != -1)//判断鼠标定位是否有效
|
||||
{
|
||||
ID = (Grid_data.Columns[2].GetCellContent(Grid_data.Items[rownum]) as TextBlock).Text;//定位第0列,
|
||||
dat.Rows.RemoveAt( Convert.ToInt32(ID)-1);
|
||||
|
||||
DatSteps(dat);
|
||||
Grid_data.ItemsSource = dat.DefaultView;
|
||||
}
|
||||
}
|
||||
private void Grid_data_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
int rownum = Grid_data.SelectedIndex;//获取鼠标选中行并定义变量
|
||||
if (rownum != -1)//判断鼠标定位是否有效
|
||||
{
|
||||
ID = (Grid_data.Columns[2].GetCellContent(Grid_data.Items[rownum]) as TextBlock).Text;//定位第0列,
|
||||
Numder = (Grid_data.Columns[3].GetCellContent(Grid_data.Items[rownum]) as TextBlock).Text;//定位第1列,
|
||||
P1 = (Grid_data.Columns[6].GetCellContent(Grid_data.Items[rownum]) as TextBlock).Text;//定位第6列,
|
||||
P2 = (Grid_data.Columns[7].GetCellContent(Grid_data.Items[rownum]) as TextBlock).Text;//定位第7列,
|
||||
P3 = (Grid_data.Columns[8].GetCellContent(Grid_data.Items[rownum]) as TextBlock).Text;//定位第8列,
|
||||
P4 = (Grid_data.Columns[9].GetCellContent(Grid_data.Items[rownum]) as TextBlock).Text;//定位第9列,
|
||||
P5 = (Grid_data.Columns[10].GetCellContent(Grid_data.Items[rownum]) as TextBlock).Text;//定位第10列,
|
||||
|
||||
if (string.IsNullOrEmpty(Numder)) { Numder = null; P1 = "0"; P2 = "0"; P3 = "0"; P4 = "0"; P5 = "0"; }
|
||||
if (ID == null) ID = dat.Rows.Count.ToString();
|
||||
ViewStep viewstop = new ViewStep(Numder, dat.Select("STEP = " + ID).First());
|
||||
viewstop.AddressUpdated += new ViewStep.AddressUpdateHandler(Address_ButtonClicked);
|
||||
viewstop.data = ID;
|
||||
viewstop.ShowDialog();
|
||||
}
|
||||
}
|
||||
private void Address_ButtonClicked(object sender, AddressUpdateEventArgs e)//编辑返回结果
|
||||
{
|
||||
int n = Convert.ToInt16(ID);
|
||||
ID = null;
|
||||
if (e.PNAME != "")
|
||||
{
|
||||
DataRow dr = dat.Rows[n - 1];
|
||||
dr.BeginEdit();
|
||||
dr["StepID"] = e.StepID;
|
||||
dr["StepName"] = e.StepNAME;
|
||||
dr["ParameterName"] = e.PNAME;
|
||||
dr["Parameter1"] = e.Row_DAT.Field<double>("Parameter1");
|
||||
dr["Parameter2"] = e.Row_DAT.Field<double>("Parameter1");
|
||||
dr["Parameter3"] = e.Row_DAT.Field<double>("Parameter1");
|
||||
dr["Parameter4"] = e.Row_DAT.Field<double>("Parameter1");
|
||||
dr["Parameter5"] = e.Row_DAT.Field<double>("Parameter1");
|
||||
dr["Parameter1_S1"] = e.Row_DAT.Field<double>("Parameter1_S1");
|
||||
dr["Parameter2_S1"] = e.Row_DAT.Field<double>("Parameter2_S1");
|
||||
dr["Parameter3_S1"] = e.Row_DAT.Field<double>("Parameter3_S1");
|
||||
dr["Parameter4_S1"] = e.Row_DAT.Field<double>("Parameter4_S1");
|
||||
dr["Parameter5_S1"] = e.Row_DAT.Field<double>("Parameter5_S1");
|
||||
dr["Parameter1_S2"] = e.Row_DAT.Field<double>("Parameter1_S2");
|
||||
dr["Parameter2_S2"] = e.Row_DAT.Field<double>("Parameter2_S2");
|
||||
dr["Parameter3_S2"] = e.Row_DAT.Field<double>("Parameter3_S2");
|
||||
dr["Parameter4_S2"] = e.Row_DAT.Field<double>("Parameter4_S2");
|
||||
dr["Parameter5_S2"] = e.Row_DAT.Field<double>("Parameter5_S2");
|
||||
dr["Parameter1_S3"] = e.Row_DAT.Field<double>("Parameter1_S3");
|
||||
dr["Parameter2_S3"] = e.Row_DAT.Field<double>("Parameter2_S3");
|
||||
dr["Parameter3_S3"] = e.Row_DAT.Field<double>("Parameter3_S3");
|
||||
dr["Parameter4_S3"] = e.Row_DAT.Field<double>("Parameter4_S3");
|
||||
dr["Parameter5_S3"] = e.Row_DAT.Field<double>("Parameter5_S3");
|
||||
dr["StepName_S1"] = e.Row_DAT.Field<string>("StepName_S1");
|
||||
dr["StepName_S2"] = e.Row_DAT.Field<string>("StepName_S2");
|
||||
dr["StepName_S3"] = e.Row_DAT.Field<string>("StepName_S3");
|
||||
dr["StepID_S1"] = e.Row_DAT.Field<string>("StepID_S1");
|
||||
dr["StepID_S2"] = e.Row_DAT.Field<string>("StepID_S2");
|
||||
dr["StepID_S3"] = e.Row_DAT.Field<string>("StepID_S3");
|
||||
dr.EndEdit();
|
||||
Grid_data.SelectedIndex = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
MainWindowViewModel.dt_TP.Rows.RemoveAt(n - 1);
|
||||
DatSteps(dat);
|
||||
Grid_data.SelectedIndex = -1;
|
||||
}
|
||||
Grid_data.ItemsSource = dat.DefaultView;
|
||||
}
|
||||
private void TEMP()
|
||||
{
|
||||
//处理计划温度图表
|
||||
TEMPTable.Clear();
|
||||
|
||||
string TIMET = "00:00:00";
|
||||
Double MSTT = 30.0;
|
||||
Double TT;
|
||||
Double TC;
|
||||
TEMPTable.Rows.Add(new object[] { TIMET, MSTT });
|
||||
for (int i = 0; i < dat.Rows.Count; i++)
|
||||
{
|
||||
switch (dat.Rows[i].Field<string>("StepID"))//步骤用时计算
|
||||
{
|
||||
case "001":
|
||||
TT = MSTT;
|
||||
TC = dat.Rows[i].Field<double>("Parameter2");
|
||||
if (TC > 9.9 || TC < 0.1) TC = 9.9;//计算限制
|
||||
MSTT = dat.Rows[i].Field<double>("Parameter1");
|
||||
TT = Math.Abs(MSTT - TT) / TC * 60;
|
||||
TIMET = Convert.ToDateTime(TIMET).AddSeconds(TT).ToString("HH:mm:ss");
|
||||
TEMPTable.Rows.Add(new object[] { TIMET, MSTT });
|
||||
TIMET = Convert.ToDateTime(TIMET).AddMinutes(dat.Rows[i].Field<double>("Parameter3")).ToString("HH:mm:ss");
|
||||
TEMPTable.Rows.Add(new object[] { TIMET, MSTT });
|
||||
break;
|
||||
case "007":
|
||||
TIMET = Convert.ToDateTime(TIMET).AddMinutes(5).ToString("HH:mm:ss");
|
||||
TEMPTable.Rows.Add(new object[] { TIMET, MSTT });
|
||||
break;
|
||||
case "008":
|
||||
TIMET = Convert.ToDateTime(TIMET).AddMinutes(5).ToString("HH:mm:ss");
|
||||
TEMPTable.Rows.Add(new object[] { TIMET, MSTT });
|
||||
break;
|
||||
case "013":
|
||||
TIMET = Convert.ToDateTime(TIMET).AddMinutes(dat.Rows[i].Field<double>("Parameter3") * dat.Rows[i].Field<double>("Parameter4")).ToString("HH:mm:ss");
|
||||
TEMPTable.Rows.Add(new object[] { TIMET, MSTT });
|
||||
break;
|
||||
case "015":
|
||||
TIMET = Convert.ToDateTime(TIMET).AddMinutes(dat.Rows[i].Field<double>("Parameter3")).ToString("HH:mm:ss");
|
||||
TEMPTable.Rows.Add(new object[] { TIMET, MSTT });
|
||||
break;
|
||||
case "017":
|
||||
TIMET = Convert.ToDateTime(TIMET).AddMinutes(dat.Rows[i].Field<double>("Parameter3")).ToString("HH:mm:ss");
|
||||
TEMPTable.Rows.Add(new object[] { TIMET, MSTT });
|
||||
break;
|
||||
case "020":
|
||||
TIMET = Convert.ToDateTime(TIMET).AddMinutes(5).ToString("HH:mm:ss");
|
||||
TEMPTable.Rows.Add(new object[] { TIMET, MSTT });
|
||||
break;
|
||||
case "022":
|
||||
TIMET = Convert.ToDateTime(TIMET).AddMinutes(5).ToString("HH:mm:ss");
|
||||
TEMPTable.Rows.Add(new object[] { TIMET, MSTT });
|
||||
break;
|
||||
case "031":
|
||||
TIMET = Convert.ToDateTime(TIMET).AddMinutes(dat.Rows[i].Field<double>("Parameter1")).ToString("HH:mm:ss");
|
||||
TEMPTable.Rows.Add(new object[] { TIMET, MSTT });
|
||||
break;
|
||||
case "065":
|
||||
TIMET = Convert.ToDateTime(TIMET).AddMinutes(dat.Rows[i].Field<double>("Parameter3")).ToString("HH:mm:ss");
|
||||
TEMPTable.Rows.Add(new object[] { TIMET, MSTT });
|
||||
break;
|
||||
case "091":
|
||||
TT = MSTT;
|
||||
TC = (Double)dat.Rows[i][7];
|
||||
if (TC > 9.9 || TC < 0.1) TC = 9.9;//计算限制
|
||||
MSTT = (Double)dat.Rows[i][6];
|
||||
TT = Math.Abs(MSTT - TT) / TC * 60;
|
||||
TIMET = Convert.ToDateTime(TIMET).AddSeconds(TT).ToString("HH:mm:ss");
|
||||
TEMPTable.Rows.Add(new object[] { TIMET, MSTT });
|
||||
break;
|
||||
case "093":
|
||||
TIMET = Convert.ToDateTime(TIMET).AddMinutes(dat.Rows[i].Field<double>("Parameter1")).ToString("HH:mm:ss");
|
||||
TEMPTable.Rows.Add(new object[] { TIMET, MSTT });
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
Picture.Content = new View.CurveTemp(TEMPTable);
|
||||
} //计划温度图表
|
||||
private async void comboBoxWorkOrder_KeyDown(object sender, KeyEventArgs e)//工单输入
|
||||
{
|
||||
if (e.Key == Key.Enter && MainWindowViewModel.DyelotsDispenser)
|
||||
{
|
||||
int dat_c = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from WorkOrder where WorkOrder = '" + comboBoxWorkOrder.Text + "'", null).Tables[0].Rows.Count;//缓存
|
||||
|
||||
if (dat_c > 0)//查询料单是否可用
|
||||
{
|
||||
comboBoxWorkOrder.Text = null;
|
||||
MessageBox.Show(Properties.Resources.TTAE, "WorkOrder", MessageBoxButton.OK, MessageBoxImage.Information); //连接成功提示是否保存
|
||||
return;
|
||||
}
|
||||
|
||||
string Connstr_SC;
|
||||
string DYELOTS_sql = "SELECT * FROM [dbo].[DYELOTS] WHERE Dyelot = '" + comboBoxWorkOrder.Text + "'";//单号查询语句
|
||||
string DyelotsBulkedRecipe_sql = "SELECT * FROM [dbo].[DyelotsBulkedRecipe] WHERE Dyelot = '" + comboBoxWorkOrder.Text + "'";
|
||||
try
|
||||
{
|
||||
if (MainWindowViewModel.SQMOD == "Windows Authentication")
|
||||
{
|
||||
Connstr_SC = "server=" + MainWindowViewModel.SQLIP + ";database=" + MainWindowViewModel.SQLNAME + ";Trusted_Connection=SSPI";
|
||||
}
|
||||
else
|
||||
{
|
||||
Connstr_SC = "server=" + MainWindowViewModel.SQLIP + ";database=" + MainWindowViewModel.SQLNAME + ";User ID=" + MainWindowViewModel.SQLUSER + ";Password=" + MainWindowViewModel.SQLPASWORD;
|
||||
}
|
||||
SqlConnection conn_SC = new SqlConnection(Connstr_SC);
|
||||
await conn_SC.OpenAsync(); //连接数据库
|
||||
SqlDataAdapter DYELOTS_data = new SqlDataAdapter(DYELOTS_sql, Connstr_SC); //查询
|
||||
SqlDataAdapter DyelotsBulkedRecipe_ = new SqlDataAdapter(DyelotsBulkedRecipe_sql, Connstr_SC);
|
||||
conn_SC.Close();
|
||||
DyelotsBulkedRecipe_.Fill(DyelotsBulkedRecipe);
|
||||
|
||||
DataTable ds = new DataTable();//载入信息
|
||||
DYELOTS_data.Fill(ds);
|
||||
TEXTColorNumber.Text = ds.AsEnumerable().Select(row => row.Field<string>("ColorNo")).First();
|
||||
TEXTColorName.Text = ds.AsEnumerable().Select(row => row.Field<string>("ColorName")).First();
|
||||
TEXTClient.Text = ds.AsEnumerable().Select(row => row.Field<string>("CustomerName")).First();
|
||||
TEXTClothSpecies.Text = ds.AsEnumerable().Select(row => row.Field<string>("FabricName")).First();
|
||||
TEXTClothWeight.Text = ds.AsEnumerable().Select(row => row.Field<Double>("TotalWeight")).First().ToString();
|
||||
TEXTBathRatio.Text = ds.AsEnumerable().Select(row => row.Field<string>("LiquidRatio")).First();
|
||||
TEXTTotal.Text = ds.AsEnumerable().Select(row => row.Field<string>("TotalVolume")).First();
|
||||
comboBoxDyelot.Text = ds.AsEnumerable().Select(row => row.Field<string>("Dyelot")).First();
|
||||
|
||||
string machine_ = ds.AsEnumerable().Select(row => row.Field<string>("Machine")).First();//机台
|
||||
if (MainWindowViewModel.Machines.Select("Name ='"+machine_+"'").Length == 0)
|
||||
{
|
||||
comboBoxMachine.Text = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
comboBoxMachine.Text = machine_;
|
||||
}
|
||||
string user_ = ds.AsEnumerable().Select(row => row.Field<string>("UserAccount")).First();//用户名
|
||||
if (!String.IsNullOrEmpty(user_)) TEXTUSER.Text = user_;
|
||||
comboBoxProgram.Text = ds.AsEnumerable().Select(row => row.Field<string>("Program")).First();
|
||||
|
||||
if (ds.AsEnumerable().Select(row => row.Field<int>("color")).First() > 0)//颜色
|
||||
{
|
||||
string colorValue = string.Format("{0:X6}", ds.AsEnumerable().Select(row => row.Field<int>("color")).First());//十进制RGB数值转十六进制六位RGB并补0位例“C0C0C0”
|
||||
color.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString(
|
||||
"#FF" + colorValue.Substring(4, 2) + colorValue.Substring(2, 2) + colorValue.Substring(0, 2)));
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogGing.ERRDATA(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
private async void comboBoxDyelot_KeyDown(object sender, KeyEventArgs e)//料单输入
|
||||
{
|
||||
if (e.Key == Key.Enter && MainWindowViewModel.DyelotsDispenser)
|
||||
{
|
||||
string Connstr_SC;
|
||||
string DYELOTS_sql = "SELECT * FROM [dbo].[DYELOTS] WHERE Dyelot = '" + comboBoxDyelot.Text + "'";//单号查询语句
|
||||
try
|
||||
{
|
||||
int dat_c = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from Dyelot where Dyelot = '" + comboBoxDyelot.Text + "'", null).Tables[0].Rows.Count;//缓存
|
||||
|
||||
if (dat_c > 0)//查询料单是否可用
|
||||
{
|
||||
comboBoxDyelot.Text = null;
|
||||
MessageBox.Show(Properties.Resources.TPLHBU, "Dyelot", MessageBoxButton.OK, MessageBoxImage.Information); //连接成功提示是否保存
|
||||
return;
|
||||
}
|
||||
|
||||
if (MainWindowViewModel.SQMOD == "Windows Authentication")
|
||||
{
|
||||
Connstr_SC = "server=" + MainWindowViewModel.SQLIP + ";database=" + MainWindowViewModel.SQLNAME + ";Trusted_Connection=SSPI";
|
||||
}
|
||||
else
|
||||
{
|
||||
Connstr_SC = "server=" + MainWindowViewModel.SQLIP + ";database=" + MainWindowViewModel.SQLNAME + ";User ID=" + MainWindowViewModel.SQLUSER + ";Password=" + MainWindowViewModel.SQLPASWORD;
|
||||
}
|
||||
SqlConnection conn_SC = new SqlConnection(Connstr_SC);
|
||||
await conn_SC.OpenAsync(); //连接数据库
|
||||
SqlDataAdapter DYELOTS_data = new SqlDataAdapter(DYELOTS_sql, Connstr_SC); //查询
|
||||
conn_SC.Close();
|
||||
|
||||
DataTable ds = new DataTable();//载入信息
|
||||
DYELOTS_data.Fill(ds);
|
||||
TEXTColorNumber.Text = ds.AsEnumerable().Select(row => row.Field<string>("ColorNo")).First();
|
||||
TEXTColorName.Text = ds.AsEnumerable().Select(row => row.Field<string>("ColorName")).First();
|
||||
TEXTClient.Text = ds.AsEnumerable().Select(row => row.Field<string>("CustomerName")).First();
|
||||
TEXTClothSpecies.Text = ds.AsEnumerable().Select(row => row.Field<string>("FabricName")).First();
|
||||
TEXTClothWeight.Text = ds.AsEnumerable().Select(row => row.Field<Double>("TotalWeight")).First().ToString();
|
||||
TEXTBathRatio.Text = ds.AsEnumerable().Select(row => row.Field<string>("LiquidRatio")).First();
|
||||
TEXTTotal.Text = ds.AsEnumerable().Select(row => row.Field<string>("TotalVolume")).First();
|
||||
// comboBoxDyelot.Text = ds.AsEnumerable().Select(row => row.Field<string>("Dyelot")).First();
|
||||
|
||||
string machine_ = ds.AsEnumerable().Select(row => row.Field<string>("Machine")).First();//机台
|
||||
if (MainWindowViewModel.Machines.Select("Name ='" + machine_ + "'").Length == 0)
|
||||
{
|
||||
comboBoxMachine.Text = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
comboBoxMachine.Text = machine_;
|
||||
}
|
||||
string user_ = ds.AsEnumerable().Select(row => row.Field<string>("UserAccount")).First();//用户名
|
||||
if (!String.IsNullOrEmpty(user_)) TEXTUSER.Text = user_;
|
||||
comboBoxProgram.Text = ds.AsEnumerable().Select(row => row.Field<string>("Program")).First();
|
||||
|
||||
if (ds.AsEnumerable().Select(row => row.Field<int>("color")).First() > 0)//颜色
|
||||
{
|
||||
string colorValue = string.Format("{0:X6}", ds.AsEnumerable().Select(row => row.Field<int>("color")).First());//十进制RGB数值转十六进制六位RGB并补0位例“C0C0C0”
|
||||
color.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString(
|
||||
"#FF" + colorValue.Substring(4, 2) + colorValue.Substring(2, 2) + colorValue.Substring(0, 2)));
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogGing.ERRDATA(ex);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
private void Tb_KeyTEXTClothWeight(object sender, TextCompositionEventArgs e)//输入事件
|
||||
{
|
||||
Regex numbeRegex = new Regex("^[.][0-9]+$|^[0-9]*[.]{0,1}[0-9]*$");
|
||||
e.Handled =
|
||||
!numbeRegex.IsMatch(
|
||||
TEXTClothWeight.Text.Insert(
|
||||
TEXTClothWeight.SelectionStart, e.Text));
|
||||
TEXTClothWeight.Text = TEXTClothWeight.Text.Trim();
|
||||
}
|
||||
private void Tb_KeyTEXTBathRatio(object sender, TextCompositionEventArgs e)//输入事件
|
||||
{
|
||||
Regex numbeRegex = new Regex("^[.][0-9]+$|^[0-9]*[.]{0,1}[0-9]*$");
|
||||
e.Handled =
|
||||
!numbeRegex.IsMatch(
|
||||
TEXTBathRatio.Text.Insert(
|
||||
TEXTBathRatio.SelectionStart, e.Text));
|
||||
TEXTBathRatio.Text = TEXTBathRatio.Text.Trim();
|
||||
}
|
||||
private void Tb_KeyTEXTTotal(object sender, TextCompositionEventArgs e)//输入事件
|
||||
{
|
||||
Regex numbeRegex = new Regex("^[.][0-9]+$|^[0-9]*[.]{0,1}[0-9]*$");
|
||||
e.Handled =
|
||||
!numbeRegex.IsMatch(
|
||||
TEXTTotal.Text.Insert(
|
||||
TEXTTotal.SelectionStart, e.Text));
|
||||
TEXTTotal.Text = TEXTTotal.Text.Trim();
|
||||
}
|
||||
private void color_color_MouseDoubleClick(object sender, MouseButtonEventArgs e)//颜色
|
||||
{
|
||||
System.Windows.Forms.ColorDialog colorDialog = new System.Windows.Forms.ColorDialog();//使用调色盘控件ColorDialog
|
||||
if (colorDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)//打开调色盘
|
||||
{
|
||||
|
||||
System.Drawing.Color DColor = colorDialog.Color;////获取选中色彩信息
|
||||
//System.Windows.Media.Color MColor = new System.Windows.Media.Color();//转换
|
||||
System.Windows.Media.Color MColor = System.Windows.Media.Color.FromArgb(DColor.A, DColor.R, DColor.G, DColor.B);//转换并配置ARGB参数
|
||||
color.Background = new SolidColorBrush(MColor);//ARGB参数输出至Color的背景色
|
||||
//string colorCode = string.Format("{0:X2}", DColor.B) + string.Format("{0:X2}", DColor.G) + string.Format("{0:X2}", DColor.R);//反向十六进制RGB
|
||||
//string colorCode = string.Format("{0:X2}", DColor.R) + string.Format("{0:X2}", DColor.G) + string.Format("{0:X2}", DColor.B);//正向十六进制RGB
|
||||
//ColorCode_SQL = Convert.ToInt32(colorCode, 16);//十六进制RGB转存储数值
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
<UserControl x:Class="SunlightCentralizedControlManagement_SCCM_.View.DyelotView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:lang="clr-namespace:SunlightCentralizedControlManagement_SCCM_.Properties"
|
||||
xmlns:local="clr-namespace:SunlightCentralizedControlManagement_SCCM_.View"
|
||||
xmlns:ConvertMoels="clr-namespace:SunlightCentralizedControlManagement_SCCM_.ConvertMoels"
|
||||
xmlns:viewmodel="clr-namespace:SunlightCentralizedControlManagement_SCCM_.ViewModel"
|
||||
mc:Ignorable="d" Loaded="UserControl_Loaded"
|
||||
d:DesignHeight="450" d:DesignWidth="800">
|
||||
<UserControl.Resources>
|
||||
<ConvertMoels:StatenConvert x:Key="StatenConvert"/>
|
||||
<ConvertMoels:StateToColorConvert x:Key="StateToColorConvert"/>
|
||||
</UserControl.Resources>
|
||||
<Grid>
|
||||
<DataGrid x:Name="Grid_data" AlternationCount="2" IsReadOnly="True" d:ItemsSource="{d:SampleData ItemCount=99}"
|
||||
Background="White" HorizontalGridLinesBrush="#FFC9C9C9" VerticalGridLinesBrush="#FFC9C9C9"
|
||||
GridLinesVisibility="All" ColumnHeaderHeight="40"
|
||||
Grid.ColumnSpan="2" CanUserResizeRows="False" AutoGenerateColumns="False" MinColumnWidth="30"
|
||||
CanUserAddRows="False" CanUserDeleteRows="False" HeadersVisibility ="Column" SelectionMode="Single"
|
||||
Margin="0,0,0,0" BorderBrush="#FFC9C9C9" FontSize="16" BorderThickness="5,5,5,5" >
|
||||
<DataGrid.RowStyle >
|
||||
<Style TargetType="{x:Type DataGridRow}">
|
||||
<Setter Property="Height" Value="25" />
|
||||
<Setter Property="FontSize" Value="15" />
|
||||
<Style.Triggers>
|
||||
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
|
||||
<Setter Property="Background" Value="#FFFFFFFF" />
|
||||
</Trigger>
|
||||
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
|
||||
<Setter Property="Background" Value="#FFF0F0F0" />
|
||||
</Trigger>
|
||||
<Trigger Property="IsMouseOver" Value="False"/>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</DataGrid.RowStyle>
|
||||
<DataGrid.CellStyle>
|
||||
<Style TargetType="DataGridCell">
|
||||
<Setter Property="BorderThickness" Value="0"/>
|
||||
<Setter Property="MinWidth" Value="20"/>
|
||||
<Style.Triggers>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Setter Property="Background" Value="#FFC0C0C0"/>
|
||||
<Setter Property="BorderBrush" Value="#FFC0C0C0"/>
|
||||
<Setter Property="Foreground" Value="Black"/>
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</DataGrid.CellStyle>
|
||||
|
||||
<DataGrid.Columns>
|
||||
<!--列信息绑定-->
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Step}" Binding="{Binding Step}" Width="80" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.ProductCode}" Width="150" Binding="{Binding ProductCode}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.ProductName}" Width="150" Binding="{Binding ProductName}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.ProductType}" Width="100" Binding="{Binding ProductType}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.State}" Width="80" Binding="{Binding Path=State,Converter={StaticResource StatenConvert}}" IsReadOnly="True">
|
||||
<DataGridTextColumn.ElementStyle>
|
||||
<Style TargetType="{x:Type TextBlock}">
|
||||
<Setter Property="Foreground" Value="{Binding Path=State,Converter={StaticResource StateToColorConvert}}"/>
|
||||
</Style>
|
||||
</DataGridTextColumn.ElementStyle>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Grams}" Width="150" Binding="{Binding Grams}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.DispenseGrams}" Width="150" Binding="{Binding Amount}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.DispenseEndTime}" Width="200" Binding="{Binding DispenseEndTime}" IsReadOnly="True"/>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,51 @@
|
||||
using DyeingComputer.UserClass;
|
||||
using SunlightCentralizedControlManagement_SCCM_.UserClass;
|
||||
using SunlightCentralizedControlManagement_SCCM_.ViewModel;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
using System.Windows.Threading;
|
||||
using static SunlightCentralizedControlManagement_SCCM_.UserClass.SqliteHelper;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
{
|
||||
/// <summary>
|
||||
/// Whole.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class DyelotView : UserControl
|
||||
{
|
||||
public DyelotView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void UserControl_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
public void Dyelot(object dat)
|
||||
{
|
||||
DataTable dat_c = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from Dyelot where WorkOrder = '" + dat + "'", null).Tables[0];//缓存
|
||||
|
||||
Grid_data.ItemsSource = dat_c.DefaultView;
|
||||
}
|
||||
public void DyelotDatatable(DataTable dat)
|
||||
{
|
||||
Grid_data.ItemsSource = dat.DefaultView;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -8,10 +8,10 @@
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="630" d:DesignWidth="1280" VerticalAlignment="Top">
|
||||
<Grid>
|
||||
<ComboBox HorizontalAlignment="Left" Height="30" Margin="150,10,0,0" x:Name="comboBoxCOM0" VerticalAlignment="Top" Width="200" SelectionChanged="comboBoxCOM_SelectionChanged" FontSize="16" />
|
||||
<ComboBox HorizontalAlignment="Left" Height="30" Margin="150,10,0,0" x:Name="comboBoxCOM0" VerticalAlignment="Top" Width="200" SelectionChanged="comboBoxCOM_SelectionChanged0" FontSize="16" />
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,10,0,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.Port}" VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<ComboBox HorizontalAlignment="Left" Height="30" Margin="150,50,0,0" x:Name="comboBoxCOM1" VerticalAlignment="Top" Width="200" SelectionChanged="comboBoxCOM_SelectionChanged" FontSize="16"/>
|
||||
<ComboBox HorizontalAlignment="Left" Height="30" Margin="150,90,0,0" x:Name="comboBoxCOM2" VerticalAlignment="Top" Width="200" SelectionChanged="comboBoxCOM_SelectionChanged" FontSize="16"/>
|
||||
<ComboBox HorizontalAlignment="Left" Height="30" Margin="150,50,0,0" x:Name="comboBoxCOM1" VerticalAlignment="Top" Width="200" SelectionChanged="comboBoxCOM_SelectionChanged1" FontSize="16"/>
|
||||
<ComboBox HorizontalAlignment="Left" Height="30" Margin="150,90,0,0" x:Name="comboBoxCOM2" VerticalAlignment="Top" Width="200" SelectionChanged="comboBoxCOM_SelectionChanged2" FontSize="16"/>
|
||||
<ComboBox HorizontalAlignment="Left" Height="30" Margin="150,130,0,0" x:Name="comboBoxLanguage" VerticalAlignment="Top" Width="200" SelectionChanged="comboBoxLanguage_SelectionChanged" FontSize="16"/>
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,130,0,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.Language}" VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,170,0,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.SERVER}" VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
@@ -26,6 +26,13 @@
|
||||
<TextBox x:Name="TEXT_SQLPASWORD" HorizontalAlignment="Left" Height="40" Margin="150,330,0,0" TextWrapping="NoWrap" VerticalAlignment="Top" Width="200" FontSize="16"/>
|
||||
<Button Content="{x:Static lang:Resources.Test}" HorizontalAlignment="Left" Height="35" Margin="270,375,0,0" VerticalAlignment="Top" Width="80" Click="Test_Click"/>
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,375,0,0" x:Name="textlog" TextWrapping="Wrap" Text="------------" VerticalAlignment="Top" Width="140" FontSize="20"/>
|
||||
<CheckBox x:Name="dDispenser" Content="{x:Static lang:Resources.LinkDispenser}" HorizontalAlignment="Left" Height="35 " Margin="410,10,0,0" VerticalAlignment="Top" Width="200"
|
||||
Checked="dDispenser_Checked" Unchecked="dDispenser_Checked" FontSize="20"/>
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,450,0,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.Speed}" VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBox x:Name="VOICE_V1" HorizontalAlignment="Left" Height="40" Margin="150,450,0,0" TextWrapping="NoWrap" VerticalAlignment="Top" Width="200" FontSize="16"/>
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,490,0,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.Vol}" VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBox x:Name="VOICE_V2" HorizontalAlignment="Left" Height="40" Margin="150,490,0,0" TextWrapping="NoWrap" VerticalAlignment="Top" Width="200" FontSize="16"/>
|
||||
<Button Content="{x:Static lang:Resources.VOICE}" HorizontalAlignment="Left" Height="35" Margin="270,535,0,0" VerticalAlignment="Top" Width="80" Click="VOICE_Click"/>
|
||||
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -1,8 +1,11 @@
|
||||
using SunlightCentralizedControlManagement_SCCM_.ViewModel;
|
||||
using ScottPlot.TickGenerators.TimeUnits;
|
||||
using SunlightCentralizedControlManagement_SCCM_.UserClass;
|
||||
using SunlightCentralizedControlManagement_SCCM_.ViewModel;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Speech.Synthesis;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
@@ -27,36 +30,56 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
InitializeComponent();
|
||||
// 获取所有可用串口端口,并添加到comboBoxCOM
|
||||
string[] ports = System.IO.Ports.SerialPort.GetPortNames();
|
||||
ports.Append("COM");
|
||||
comboBoxCOM0.ItemsSource = ports;
|
||||
comboBoxCOM0.Text = Configini.IniReadvalue("SYS", "COM");
|
||||
comboBoxCOM0.Text = Configini.IniReadvalue("SYS", "COMP1");
|
||||
|
||||
comboBoxCOM1.ItemsSource = ports;
|
||||
comboBoxCOM1.Text = Configini.IniReadvalue("SYS", "COM");
|
||||
comboBoxCOM1.Text = Configini.IniReadvalue("SYS", "COMP2");
|
||||
|
||||
comboBoxCOM2.ItemsSource = ports;
|
||||
comboBoxCOM2.Text = Configini.IniReadvalue("SYS", "COM");
|
||||
comboBoxCOM2.Text = Configini.IniReadvalue("SYS", "COMP3");
|
||||
|
||||
string[] Language = {"en-US","zh-CN","zh-TW" };
|
||||
string[] SQMOD = { "Windows Authentication", "SQL SERVER"};
|
||||
comboBoxLanguage.ItemsSource = Language;
|
||||
TEXT_SQMOD.ItemsSource = SQMOD;
|
||||
comboBoxLanguage.Text = Configini.IniReadvalue("SYS", "Language");
|
||||
TEXT_SQLIP.Text = Configini.IniReadvalue("SQL_SERVER", "SQL1"); //读配置文件
|
||||
TEXT_SQLNAME.Text = Configini.IniReadvalue("SQL_SERVER", "SQL2");
|
||||
TEXT_SQMOD.Text = Configini.IniReadvalue("SQL_SERVER", "SQL3");
|
||||
TEXT_SQLUSER.Text = Configini.IniReadvalue("SQL_SERVER", "SQL4");
|
||||
TEXT_SQLPASWORD.Text = Configini.IniReadvalue("SQL_SERVER", "SQL5");
|
||||
try
|
||||
{
|
||||
comboBoxLanguage.Text = Configini.IniReadvalue("SYS", "Language");
|
||||
TEXT_SQLIP.Text = Configini.IniReadvalue("SQL_SERVER", "SQL1"); //读配置文件
|
||||
TEXT_SQLNAME.Text = Configini.IniReadvalue("SQL_SERVER", "SQL2");
|
||||
TEXT_SQMOD.Text = Configini.IniReadvalue("SQL_SERVER", "SQL3");
|
||||
TEXT_SQLUSER.Text = Configini.IniReadvalue("SQL_SERVER", "SQL4");
|
||||
TEXT_SQLPASWORD.Text = Configini.IniReadvalue("SQL_SERVER", "SQL5");
|
||||
dDispenser.IsChecked = Convert.ToBoolean(Configini.IniReadvalue("SYS", "DyelotsDispenser"));
|
||||
VOICE_V1.Text = Configini.IniReadvalue("VOICE", "V1");
|
||||
VOICE_V2.Text = Configini.IniReadvalue("VOICE", "V2");
|
||||
}
|
||||
catch (Exception ex) { LogGing.ERRDATA(ex); }
|
||||
}
|
||||
//调用配置文件
|
||||
private UserClass.IniFile.IniFiles Configini = new UserClass.IniFile.IniFiles(Convert.ToString(System.AppDomain.CurrentDomain.BaseDirectory) + "SCCM.ini");
|
||||
private SpeechSynthesizer synth = new SpeechSynthesizer();//语音
|
||||
|
||||
private void comboBoxCOM_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
private void comboBoxCOM_SelectionChanged0(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
Configini.IniWritevalue("SYS", "COM0", comboBoxCOM0.SelectedValue.ToString());
|
||||
Configini.IniWritevalue("SYS", "COM1", comboBoxCOM1.SelectedValue.ToString());
|
||||
Configini.IniWritevalue("SYS", "COM2", comboBoxCOM2.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", "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", "COMP3", comboBoxCOM2.SelectedValue.ToString());
|
||||
}
|
||||
|
||||
private void comboBoxLanguage_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
Configini.IniWritevalue("SYS", "Language", comboBoxLanguage.SelectedValue.ToString());
|
||||
@@ -102,9 +125,27 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
MainWindowViewModel.SQLNAME = TEXT_SQLNAME.Text;
|
||||
MainWindowViewModel.SQMOD = TEXT_SQMOD.Text;
|
||||
MainWindowViewModel.SQLUSER = TEXT_SQLUSER.Text;
|
||||
MainWindowViewModel.SQLNAME = TEXT_SQLNAME.Text;
|
||||
MainWindowViewModel.SQL_LINK();//更新设定
|
||||
MainWindowViewModel.SQLPASWORD = TEXT_SQLPASWORD.Text;
|
||||
}
|
||||
}
|
||||
|
||||
private void dDispenser_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Configini.IniWritevalue("SYS", "DyelotsDispenser", dDispenser.IsChecked.ToString());
|
||||
MainWindowViewModel.DyelotsDispenser = (bool)dDispenser.IsChecked;
|
||||
}
|
||||
|
||||
private void VOICE_Click(object sender, RoutedEventArgs e)//语言测试按钮
|
||||
{
|
||||
try
|
||||
{
|
||||
synth.Rate = int.Parse(VOICE_V1.Text);
|
||||
synth.Volume = int.Parse(VOICE_V2.Text);
|
||||
synth.SpeakAsync(Properties.Resources.TESTVOICE);
|
||||
Configini.IniWritevalue("VOICE", "V1", VOICE_V1.Text);
|
||||
Configini.IniWritevalue("VOICE", "V2", VOICE_V2.Text);
|
||||
}
|
||||
catch (Exception) { }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -27,14 +27,6 @@
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
<GridSplitter Grid.Column="1" Width="5" HorizontalAlignment="Stretch" Background="#FF00204E"/>
|
||||
<RichTextBox Grid.Column="2" x:Name="Logtext" IsReadOnly="True" VerticalScrollBarVisibility="Visible" Background="White" SelectionBrush="White">
|
||||
<FlowDocument>
|
||||
<Paragraph>
|
||||
<Run Text="LOG"/>
|
||||
</Paragraph>
|
||||
</FlowDocument>
|
||||
</RichTextBox>
|
||||
<!--遮罩-->
|
||||
|
||||
<RichTextBox Grid.Column="2" x:Name="Logtext" IsReadOnly="True" Background="White" SelectionBrush="White"/>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -24,6 +24,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
{
|
||||
string Log_time = DateTime.Now.ToString("yyyy-MM-dd");
|
||||
DataTable logdataTable = new DataTable(); //建立RRODUCT缓存
|
||||
long TEXT_L;
|
||||
|
||||
public LogView()
|
||||
{
|
||||
@@ -46,7 +47,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
foreach (var item in loginfo.GetFiles())
|
||||
{
|
||||
DataRow FileRow = logdataTable.NewRow();
|
||||
|
||||
FileRow["Name"] = item.Name;
|
||||
FileRow["Length"] = item.Length / 1024;
|
||||
FileRow["CreationTimeUtc"] = item.CreationTimeUtc;
|
||||
@@ -64,25 +64,37 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
{
|
||||
/*定位选中行及指定列单元格文本信息*/
|
||||
LOGDATA_file((gridLog.Columns[0].GetCellContent(gridLog.Items[rownum]) as TextBlock).Text.TrimEnd());//
|
||||
TEXT_L = long.Parse((gridLog.Columns[1].GetCellContent(gridLog.Items[rownum]) as TextBlock).Text.ToString()) *1024+1024;//
|
||||
}
|
||||
}
|
||||
|
||||
private void LOGDATA_file(string dat) //读取文件显示到前端
|
||||
private async void LOGDATA_file(string dat) //读取文件显示到前端
|
||||
{
|
||||
Logtext.SelectAll();
|
||||
Logtext.Cut();
|
||||
Logtext.Document = new FlowDocument();
|
||||
string filePath = System.Environment.CurrentDirectory + "\\"+comboBox_log.Text+"\\";
|
||||
string filePath = System.Environment.CurrentDirectory + "\\"+comboBox_log.Text+ "\\";
|
||||
try
|
||||
{
|
||||
// 使用StreamReader读取文件
|
||||
using (StreamReader reader = new StreamReader(filePath + dat))
|
||||
Logtext.AppendText("Loading...");
|
||||
string log_ = null;
|
||||
string log_DAT = await Task<string>.Run(() =>
|
||||
{
|
||||
// 读取文件直到文件的末尾
|
||||
while (!reader.EndOfStream)
|
||||
// 使用StreamReader读取文件
|
||||
using (StreamReader reader = new StreamReader(filePath + dat))
|
||||
{
|
||||
// 添加文件的每一行到RichTextBox
|
||||
Logtext.AppendText(reader.ReadLine() + "\r\n");
|
||||
// 读取文件直到文件的末尾
|
||||
while (!reader.EndOfStream)
|
||||
{
|
||||
// 添加文件的每一行到RichTextBox
|
||||
log_ = log_ + reader.ReadLine() + "\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
return log_;
|
||||
});
|
||||
Logtext.SelectAll();
|
||||
Logtext.Cut();
|
||||
Logtext.AppendText(log_DAT);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@@ -63,26 +63,31 @@
|
||||
<DataGridTextColumn Binding="{Binding IP}" Width="0" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Binding="{Binding PORT}" Width="0" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Binding="{Binding Serial}" Width="0" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Binding="{Binding Baud}" Width="0" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Binding="{Binding Station}" Width="0" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Binding="{Binding ID}" Width="0" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Binding="{Binding Model}" Width="0" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Binding="{Binding Type}" Width="0" IsReadOnly="True"/>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
<ComboBox HorizontalAlignment="Left" Height="30" Margin="150,10,0,0" x:Name="comboBoxMachine" VerticalAlignment="Top" Width="270" FontSize="20" IsEditable="True" />
|
||||
<ComboBox HorizontalAlignment="Left" Height="40" Margin="150,10,0,0" x:Name="comboBoxMachine" VerticalAlignment="Top" Width="270" FontSize="20" IsEditable="True" />
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,10,0,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.Machine}" VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBox HorizontalAlignment="Left" Height="30" Margin="150,50,0,0" x:Name="TextMachineGroup" VerticalAlignment="Top" Width="270" FontSize="20" MaxLines="1"/>
|
||||
<TextBox HorizontalAlignment="Left" Height="40" Margin="150,50,0,0" x:Name="TextMachineGroup" VerticalAlignment="Top" Width="270" FontSize="20" MaxLines="1"/>
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,50,0,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.MachineGroup}" VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBox HorizontalAlignment="Left" Height="30" Margin="150,100,0,0" x:Name="IP" VerticalAlignment="Top" Width="200" FontSize="20" MaxLines="1"/>
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="350,100,0,0" TextWrapping="Wrap" Text=":" VerticalAlignment="Top" Width="20" FontSize="25"/>
|
||||
<TextBox HorizontalAlignment="Left" Height="30" Margin="360,100,0,0" x:Name="PORT" VerticalAlignment="Top" Width="60" FontSize="20" MaxLines="1" Text="7789"/>
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,100,0,0" TextWrapping="Wrap" Text="IP/PORT" VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<ComboBox HorizontalAlignment="Left" Height="30" Margin="150,150,0,0" x:Name="comboBoxCOM0" VerticalAlignment="Top" Width="200" FontSize="20" />
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,150,0,0" TextWrapping="Wrap" Text="COM" VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBox HorizontalAlignment="Left" Height="30" Margin="360,150,0,0" x:Name="BAUD" VerticalAlignment="Top" Width="60" FontSize="20" MaxLines="1" Text="57600"/>
|
||||
<ComboBox HorizontalAlignment="Left" Height="40" Margin="150,100,0,0" x:Name="comboBoxtype" VerticalAlignment="Top" Width="270" FontSize="20" IsEditable="True" />
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,100,0,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.Type}" VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBox HorizontalAlignment="Left" Height="40" Margin="150,150,0,0" x:Name="IP" VerticalAlignment="Top" Width="200" FontSize="20" MaxLines="1"/>
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="350,150,0,0" TextWrapping="Wrap" Text=":" VerticalAlignment="Top" Width="20" FontSize="25"/>
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,200,0,0" x:Name="textlog" TextWrapping="Wrap" Text="------------" VerticalAlignment="Top" Width="140" FontSize="20"/>
|
||||
<Button Content="{x:Static lang:Resources.Save}" HorizontalAlignment="Left" Height="35" Margin="250,200,0,5" VerticalAlignment="Top" Width="80" Click="Save_Click"/>
|
||||
<Button Content="{x:Static lang:Resources.Delete}" HorizontalAlignment="Left" Height="35" Margin="340,200,0,5" VerticalAlignment="Top" Width="80" Click="Delete_Click"/>
|
||||
<Button Content="{x:Static lang:Resources.Test}" HorizontalAlignment="Left" Height="35" Margin="160,200,50,5" VerticalAlignment="Top" Width="80" Click="Test_Click"/>
|
||||
<TextBox HorizontalAlignment="Left" Height="40" Margin="360,150,0,0" x:Name="PORT" VerticalAlignment="Top" Width="60" FontSize="20" MaxLines="1" Text="7789"/>
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,150,0,0" TextWrapping="Wrap" Text="IP/PORT" VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<ComboBox HorizontalAlignment="Left" Height="40" Margin="150,200,0,0" x:Name="comboBoxCOM0" VerticalAlignment="Top" Width="200" FontSize="20" />
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,200,0,0" TextWrapping="Wrap" Text="COM" VerticalAlignment="Top" Width="120" FontSize="25"/>
|
||||
<TextBox HorizontalAlignment="Left" Height="40" Margin="360,200,0,0" x:Name="Station" VerticalAlignment="Top" Width="60" FontSize="20" MaxLines="1" Text="00"/>
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="350,200,0,0" TextWrapping="Wrap" Text=":" VerticalAlignment="Top" Width="20" FontSize="25"/>
|
||||
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,250,0,0" x:Name="textlog" TextWrapping="Wrap" Text="------------" VerticalAlignment="Top" Width="140" FontSize="20"/>
|
||||
<Button Content="{x:Static lang:Resources.Save}" HorizontalAlignment="Left" Height="35" Margin="250,250,0,5" VerticalAlignment="Top" Width="80" Click="Save_Click"/>
|
||||
<Button Content="{x:Static lang:Resources.Delete}" HorizontalAlignment="Left" Height="35" Margin="340,250,0,5" VerticalAlignment="Top" Width="80" Click="Delete_Click"/>
|
||||
<Button Content="{x:Static lang:Resources.Test}" HorizontalAlignment="Left" Height="35" Margin="160,250,50,5" VerticalAlignment="Top" Width="80" Click="Test_Click"/>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.NetworkInformation;
|
||||
using System.Net.Sockets;
|
||||
using System.Runtime.Remoting.Metadata.W3cXsd2001;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
@@ -34,17 +35,19 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
InitializeComponent();
|
||||
|
||||
// 获取所有可用串口端口,并添加到comboBoxCOM
|
||||
string[] ports = System.IO.Ports.SerialPort.GetPortNames();
|
||||
// string[] ports = System.IO.Ports.SerialPort.GetPortNames();
|
||||
comboBoxCOM0.ItemsSource = ports;
|
||||
comboBoxCOM0.Text = Configini.IniReadvalue("SYS", "COM");
|
||||
comboBoxMachine.ItemsSource = MainWindowViewModel.Machines.AsEnumerable().Select(rowdata => rowdata.Field<string>("name")).ToList();//转换机台
|
||||
|
||||
comboBoxtype.ItemsSource = type_;
|
||||
}
|
||||
|
||||
private SQLiteHelper SQLiteHelpers = null; //定义数据库
|
||||
private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db"; //数据库路径
|
||||
string[] ports = { "PORT1", "PORT2", "PORT3", "PORT4" };
|
||||
string[] type_ = { "828", "838" };
|
||||
string link_model = "838" ;
|
||||
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)
|
||||
{
|
||||
Griddata.ItemsSource = MainWindowViewModel.Machines.DefaultView;
|
||||
@@ -55,47 +58,129 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
int rownum = Griddata.SelectedIndex;//获取鼠标选中行并定义变量
|
||||
if (rownum != -1)//判断鼠标定位是否有效
|
||||
{
|
||||
ID_ = int.Parse((Griddata.Columns[7].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text);
|
||||
comboBoxMachine.Text = (Griddata.Columns[1].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第1列,
|
||||
TextMachineGroup.Text = (Griddata.Columns[2].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第列,
|
||||
IP.Text = (Griddata.Columns[3].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第列,
|
||||
PORT.Text = (Griddata.Columns[4].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第列,
|
||||
comboBoxCOM0.Text = (Griddata.Columns[5].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第列,
|
||||
BAUD.Text = (Griddata.Columns[6].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第列,
|
||||
Station.Text = (Griddata.Columns[6].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第列,
|
||||
comboBoxtype.Text = (Griddata.Columns[8].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;
|
||||
}
|
||||
}
|
||||
|
||||
private void Save_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (string.IsNullOrEmpty(Station.Text)) Station.Text = "255";
|
||||
if (!string.IsNullOrEmpty(comboBoxMachine.Text))
|
||||
{
|
||||
Dictionary<string, object> dr_new = new Dictionary<string, object>();//缓存函数
|
||||
dr_new.Add("Name", comboBoxMachine.Text);
|
||||
dr_new.Add("Groups", TextMachineGroup.Text);
|
||||
dr_new.Add("IP", IP.Text);
|
||||
dr_new.Add("PORT", PORT.Text);
|
||||
dr_new.Add("Serial", comboBoxCOM0.Text);
|
||||
dr_new.Add("Baud", BAUD.Text);
|
||||
|
||||
SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
|
||||
SQLiteHelpers.Open(); //打开数据库
|
||||
|
||||
if (SQLiteHelpers.ExecuteDataSet("select * from Machines where name ='" + comboBoxMachine.Text + "'", null).Tables[0].Rows.Count == 0)
|
||||
Dictionary<string, object> Machines_DAT = new Dictionary<string, object>();//缓存函数
|
||||
if (MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from Machines where name ='" + comboBoxMachine.Text + "'", null).Tables[0].Rows.Count == 0)
|
||||
{
|
||||
SQLiteHelpers.InsertData("Machines", dr_new);
|
||||
lock (MainWindowViewModel.Machines.Rows.SyncRoot)
|
||||
{
|
||||
DataRow dat_ = MainWindowViewModel.Machines.NewRow();
|
||||
dat_.BeginEdit();
|
||||
dat_["Name"] = comboBoxMachine.Text;
|
||||
dat_["Groups"] = TextMachineGroup.Text;
|
||||
dat_["IP"] = IP.Text;
|
||||
dat_["PORT"] = PORT.Text;
|
||||
dat_["Serial"] = comboBoxCOM0.Text;
|
||||
dat_["Model"] = comboBoxtype.Text;
|
||||
dat_["Station"] = Station.Text;
|
||||
dat_["ID"] = 999;
|
||||
dat_["ERR"] = false;
|
||||
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.Contains(link_model))
|
||||
{
|
||||
dat_["Desktop"] = true;
|
||||
dat_["Type"] = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
dat_["Desktop"] = false;
|
||||
dat_["Type"] = false;
|
||||
}
|
||||
dat_.EndEdit();
|
||||
MainWindowViewModel.Machines.Rows.Add(dat_);
|
||||
DatSteps(MainWindowViewModel.Machines);
|
||||
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"]);
|
||||
Machines_DAT.Add("Name", MainWindowViewModel.Machines.Rows[x]["Name"]);
|
||||
Machines_DAT.Add("IP", MainWindowViewModel.Machines.Rows[x]["IP"]);
|
||||
Machines_DAT.Add("PORT", MainWindowViewModel.Machines.Rows[x]["PORT"]);
|
||||
Machines_DAT.Add("Serial", MainWindowViewModel.Machines.Rows[x]["Serial"]);
|
||||
Machines_DAT.Add("Station", MainWindowViewModel.Machines.Rows[x]["Station"]);
|
||||
Machines_DAT.Add("Groups", MainWindowViewModel.Machines.Rows[x]["Groups"]);
|
||||
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"]);
|
||||
Machines_DAT.Add("Model", MainWindowViewModel.Machines.Rows[x]["Model"]);
|
||||
MainWindowViewModel.SQLiteHelpers.InsertData("Machines", Machines_DAT);//行插入
|
||||
Machines_DAT.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SQLiteHelpers.Update("Machines",dr_new,"name='"+comboBoxMachine.Text+"'",null);
|
||||
lock (MainWindowViewModel.Machines.Rows.SyncRoot)
|
||||
{
|
||||
DataRow dr = MainWindowViewModel.Machines.Rows[ID_];
|
||||
dr.BeginEdit();
|
||||
dr["Name"] = comboBoxMachine.Text;
|
||||
dr["Groups"] = TextMachineGroup.Text;
|
||||
dr["IP"] = IP.Text;
|
||||
dr["PORT"] = PORT.Text;
|
||||
dr["Serial"] = comboBoxCOM0.Text;
|
||||
dr["Model"] = comboBoxtype.Text;
|
||||
dr["Station"] = Station.Text;
|
||||
if (comboBoxtype.Text.Contains(link_model))
|
||||
{
|
||||
dr["Desktop"] = true;
|
||||
dr["Type"] = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
dr["Desktop"] = false;
|
||||
dr["Type"] = false;
|
||||
}
|
||||
dr.EndEdit();
|
||||
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"]);
|
||||
Machines_DAT.Add("Name", MainWindowViewModel.Machines.Rows[x]["Name"]);
|
||||
Machines_DAT.Add("IP", MainWindowViewModel.Machines.Rows[x]["IP"]);
|
||||
Machines_DAT.Add("PORT", MainWindowViewModel.Machines.Rows[x]["PORT"]);
|
||||
Machines_DAT.Add("Serial", MainWindowViewModel.Machines.Rows[x]["Serial"]);
|
||||
Machines_DAT.Add("Station", MainWindowViewModel.Machines.Rows[x]["Station"]);
|
||||
Machines_DAT.Add("Groups", MainWindowViewModel.Machines.Rows[x]["Groups"]);
|
||||
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"]);
|
||||
Machines_DAT.Add("Model", MainWindowViewModel.Machines.Rows[x]["Model"]);
|
||||
Machines_DAT.Add("LOCK", "FALSE");
|
||||
MainWindowViewModel.SQLiteHelpers.InsertData("Machines", Machines_DAT);//行插入
|
||||
Machines_DAT.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
MainWindowViewModel.Machines = SQLiteHelpers.ExecuteDataSet("select * from Machines Order by id", null).Tables[0]; //读取表写入缓存
|
||||
SQLiteHelpers.Close();
|
||||
Griddata.ItemsSource = MainWindowViewModel.Machines.DefaultView;
|
||||
comboBoxMachine.Text = null;
|
||||
TextMachineGroup.Text = null;
|
||||
IP.Text = null;
|
||||
PORT.Text = "7789";
|
||||
comboBoxCOM0.Text = null;
|
||||
BAUD.Text = "57600";
|
||||
Station.Text = "00";
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -103,18 +188,37 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0));
|
||||
}
|
||||
}
|
||||
private void Delete_Click(object sender, RoutedEventArgs e)
|
||||
private void Delete_Click(object sender, RoutedEventArgs e)//删除
|
||||
{
|
||||
if (!string.IsNullOrEmpty(comboBoxMachine.Text))
|
||||
{
|
||||
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("Machines", "Name='" + comboBoxMachine.Text + "'", null);
|
||||
MainWindowViewModel.Machines = SQLiteHelpers.ExecuteDataSet("select * from Machines Order by id", null).Tables[0]; //读取表写入缓存
|
||||
SQLiteHelpers.Close();
|
||||
lock (MainWindowViewModel.Machines.Rows.SyncRoot)
|
||||
{
|
||||
MainWindowViewModel.Machines.Rows.RemoveAt(ID_ - 1);
|
||||
DatSteps(MainWindowViewModel.Machines);
|
||||
}
|
||||
Dictionary<string, object> Machines_DAT = new Dictionary<string, object>();//缓存函数
|
||||
|
||||
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"]);
|
||||
Machines_DAT.Add("Name", MainWindowViewModel.Machines.Rows[x]["Name"]);
|
||||
Machines_DAT.Add("IP", MainWindowViewModel.Machines.Rows[x]["IP"]);
|
||||
Machines_DAT.Add("PORT", MainWindowViewModel.Machines.Rows[x]["PORT"]);
|
||||
Machines_DAT.Add("Serial", MainWindowViewModel.Machines.Rows[x]["Serial"]);
|
||||
Machines_DAT.Add("Station", MainWindowViewModel.Machines.Rows[x]["Station"]);
|
||||
Machines_DAT.Add("Groups", MainWindowViewModel.Machines.Rows[x]["Groups"]);
|
||||
Machines_DAT.Add("Desktop", MainWindowViewModel.Machines.Rows[x]["Desktop"]);
|
||||
Machines_DAT.Add("Dispense", MainWindowViewModel.Machines.Rows[x]["Dispense"]);
|
||||
Machines_DAT.Add("LOCK", "FALSE");
|
||||
MainWindowViewModel.SQLiteHelpers.InsertData("Machines", Machines_DAT);//行插入
|
||||
Machines_DAT.Clear();
|
||||
}
|
||||
|
||||
Griddata.ItemsSource = MainWindowViewModel.Machines.DefaultView;
|
||||
comboBoxMachine.Text = null;
|
||||
}
|
||||
@@ -125,56 +229,117 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0));
|
||||
}
|
||||
}
|
||||
|
||||
public void DatSteps(DataTable db)//行号刷新
|
||||
{
|
||||
int a = db.Rows.Count;
|
||||
for (int i = 0; i < a; i++)
|
||||
{
|
||||
DataRow dr = db.Rows[i];
|
||||
dr.BeginEdit();
|
||||
dr["ID"] = i;
|
||||
dr.EndEdit();
|
||||
}
|
||||
}
|
||||
private void Test_Click(object sender, RoutedEventArgs e)//测试按钮
|
||||
{
|
||||
if (!string.IsNullOrEmpty(IP.Text) && !string.IsNullOrEmpty(PORT.Text))
|
||||
{
|
||||
textlog.Text = "TEST";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(0, 0, 255));
|
||||
//------------使用ping类------
|
||||
string host = IP.Text;
|
||||
Ping p1 = new Ping();
|
||||
PingReply reply = p1.Send(host); //发送主机名或Ip地址
|
||||
//StringBuilder sbuilder;
|
||||
if (reply.Status == IPStatus.Success)
|
||||
|
||||
if (comboBoxtype.Text.Contains(link_model))
|
||||
{//网络
|
||||
if (!string.IsNullOrEmpty(IP.Text) && !string.IsNullOrEmpty(PORT.Text))
|
||||
{
|
||||
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||
//连接服务器,绑定IP 与 端口
|
||||
IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse(IP.Text), int.Parse(PORT.Text));
|
||||
textlog.Text = "TEST";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(0, 0, 255));
|
||||
//------------使用ping类------
|
||||
string host = IP.Text;
|
||||
try
|
||||
{
|
||||
socket.Connect(iPEndPoint);
|
||||
socket.Close();//离线
|
||||
textlog.Text = "Link succeed";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(0, 255, 0));
|
||||
Ping p1 = new Ping();
|
||||
PingReply reply = p1.Send(host); //发送主机名或Ip地址
|
||||
//StringBuilder sbuilder;
|
||||
if (reply.Status == IPStatus.Success)
|
||||
{
|
||||
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||
//连接服务器,绑定IP 与 端口
|
||||
IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse(IP.Text), int.Parse(PORT.Text));
|
||||
try
|
||||
{
|
||||
socket.Connect(iPEndPoint);
|
||||
socket.Close();//离线
|
||||
textlog.Text = "Link succeed";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(0, 255, 0));
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
textlog.Text = "Link failed";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 255, 0));
|
||||
}
|
||||
}
|
||||
else if (reply.Status == IPStatus.TimedOut)
|
||||
{
|
||||
textlog.Text = "Link timeout";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0));
|
||||
}
|
||||
else
|
||||
{
|
||||
textlog.Text = "No links";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0));
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
textlog.Text = "Link failed";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 255, 0));
|
||||
textlog.Text = "No links";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0));
|
||||
}
|
||||
}
|
||||
else if (reply.Status == IPStatus.TimedOut)
|
||||
else if (!string.IsNullOrEmpty(comboBoxCOM0.Text))
|
||||
{
|
||||
textlog.Text = "Link timeout";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0));
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
textlog.Text = "No links";
|
||||
textlog.Text = "Invalid";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0));
|
||||
}
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(comboBoxCOM0.Text))
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
textlog.Text = "Invalid";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0));
|
||||
}
|
||||
{//串口
|
||||
if (!string.IsNullOrEmpty(comboBoxCOM0.Text) && !string.IsNullOrEmpty(Station.Text))
|
||||
{
|
||||
textlog.Text = "TEST";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(0, 0, 255));
|
||||
//------------使用ping类------
|
||||
string host = IP.Text;
|
||||
Ping p1 = new Ping();
|
||||
PingReply reply = p1.Send(host); //发送主机名或Ip地址
|
||||
//StringBuilder sbuilder;
|
||||
if (reply.Status == IPStatus.Success)
|
||||
{
|
||||
try
|
||||
{
|
||||
textlog.Text = "Link succeed";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(0, 255, 0));
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
textlog.Text = "Link failed";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 255, 0));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
textlog.Text = "No links";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
textlog.Text = "Invalid";
|
||||
textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9,12 +9,15 @@
|
||||
xmlns:ConvertMoels="clr-namespace:SunlightCentralizedControlManagement_SCCM_.ConvertMoels"
|
||||
xmlns:localUserClass="clr-namespace:DyeingComputer.UserClass"
|
||||
xmlns:viewmodel="clr-namespace:SunlightCentralizedControlManagement_SCCM_.ViewModel"
|
||||
d:DataContext="{d:DesignInstance Type=viewmodel:MainWindowViewModel}"
|
||||
d:DataContext="{d:DesignInstance Type=local:MachinesView}"
|
||||
mc:Ignorable="d"
|
||||
Loaded="UserControl_Loaded"
|
||||
d:DesignHeight="900" d:DesignWidth="1200">
|
||||
<UserControl.Resources>
|
||||
<ConvertMoels:StatexmlConvert x:Key="StatexmlConvert"/>
|
||||
<ConvertMoels:StateToColorConvert x:Key="StateToColorConvert"/>
|
||||
<ConvertMoels:BoolToVisidilityConvert x:Key="BoolToVisidilityConvert"/>
|
||||
<ConvertMoels:StatenToImageConvert x:Key="StatenToImageConvert"/>
|
||||
<ConvertMoels:BoolRBConvert x:Key="BoolRBConvert"/>
|
||||
<ConvertMoels:IORBConvert x:Key="IORBConvert"/>
|
||||
</UserControl.Resources>
|
||||
@@ -29,7 +32,7 @@
|
||||
CanUserReorderColumns="False" CanUserSortColumns="False" CanUserResizeRows="False" CanUserResizeColumns="False"
|
||||
CanUserDeleteRows="False" SelectionMode="Single" FontSize="15" Focusable="True"
|
||||
AutoGenerateColumns="False" MinColumnWidth="30"
|
||||
HorizontalAlignment="Left" Width="280" MouseDoubleClick="Griddata_MouseDoubleClick">
|
||||
HorizontalAlignment="Left" Width="250" MouseDoubleClick="Griddata_MouseDoubleClick">
|
||||
<DataGrid.RowStyle >
|
||||
<Style TargetType="{x:Type DataGridRow}">
|
||||
<Setter Property="Height" Value="30" />
|
||||
@@ -68,25 +71,72 @@
|
||||
</DataGrid.Resources>
|
||||
<DataGrid.Columns>
|
||||
<!--列信息绑定-->
|
||||
<DataGridTemplateColumn Width="70" Header="{x:Static lang:Resources.State}">
|
||||
<DataGridTemplateColumn Width="100" Header="{x:Static lang:Resources.State}">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<materialDesign:PackIcon Kind="StateMachine" Width="25" Height="30" VerticalAlignment="Center" HorizontalAlignment="Center"
|
||||
Foreground="{Binding Path=State,Converter={StaticResource StateToColorConvert}}"/>
|
||||
<UniformGrid VerticalAlignment="Bottom" HorizontalAlignment="Left">
|
||||
<Border>
|
||||
<Grid>
|
||||
<StackPanel Width="100" Orientation="Horizontal">
|
||||
<materialDesign:PackIcon Width="25" Height="30"
|
||||
Kind="{Binding Path=State,Converter={StaticResource StatexmlConvert}}"
|
||||
Foreground="{Binding Path=State,Converter={StaticResource StateToColorConvert}}"/>
|
||||
<materialDesign:PackIcon Width="25" Height="30" Kind="Lock"
|
||||
Visibility="{Binding Path=LOCK,Converter={StaticResource StatexmlConvert}}"
|
||||
Foreground="{Binding Path=State,Converter={StaticResource StateToColorConvert}}"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
</UniformGrid>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Machine}" Binding="{Binding Name}" Width="210" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Machine}" Binding="{Binding Name}" Width="150" IsReadOnly="True"/>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
<Grid Grid.Row="0" Margin="280,0,0,0">
|
||||
<Grid Grid.Row="0" Margin="250,0,0,0">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition Height="0"/>
|
||||
<RowDefinition Height="5"/>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<ContentControl Grid.Row="0" x:Name="machineView"/>
|
||||
<GridSplitter Grid.Row="1" Height="5" HorizontalAlignment="Stretch" Background="#FF00204E"/>
|
||||
<Grid Grid.Row="2" x:Name="LOG_GRID" Visibility="Collapsed">
|
||||
<DataGrid x:Name="LOG_Grid" AlternationCount="2" Margin="0,0,0,0"
|
||||
HorizontalGridLinesBrush="#FFC9C9C9" VerticalGridLinesBrush="#FFC9C9C9" GridLinesVisibility="All" BorderBrush="#CCCCCC"
|
||||
BorderThickness="1,1,1,1" ColumnHeaderHeight="40" HorizontalContentAlignment="Right" Grid.ColumnSpan="2"
|
||||
Background="White" SelectionMode="Single" FontSize="15" >
|
||||
<DataGrid.RowStyle >
|
||||
<Style TargetType="{x:Type DataGridRow}">
|
||||
<Setter Property="Height" Value="30" />
|
||||
<Setter Property="FontSize" Value="25" />
|
||||
<Style.Triggers>
|
||||
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
|
||||
<Setter Property="Background" Value="#FFFFFFFF" />
|
||||
</Trigger>
|
||||
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
|
||||
<Setter Property="Background" Value="#FFF0F0F0" />
|
||||
</Trigger>
|
||||
<Trigger Property="IsMouseOver" Value="False"/>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</DataGrid.RowStyle>
|
||||
<DataGrid.CellStyle>
|
||||
<Style TargetType="DataGridCell">
|
||||
<Setter Property="BorderThickness" Value="0"/>
|
||||
<Setter Property="MinWidth" Value="20"/>
|
||||
<Style.Triggers>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Setter Property="Background" Value="#FFC0C0C0"/>
|
||||
<Setter Property="BorderBrush" Value="#FFC0C0C0"/>
|
||||
<Setter Property="Foreground" Value="Black"/>
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</DataGrid.CellStyle>
|
||||
</DataGrid>
|
||||
</Grid>
|
||||
<Grid Grid.Row="2" x:Name="SET_GRID" Visibility="Collapsed">
|
||||
<DataGrid x:Name="SET_Grid" AlternationCount="2" Margin="0,0,0,0" d:ItemsSource="{d:SampleData ItemCount=99}" AutoGenerateColumns="False"
|
||||
ItemsSource="{Binding Path=Paramete_Set,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
|
||||
@@ -376,6 +426,14 @@
|
||||
</StackPanel>
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_LOG">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<materialDesign:PackIcon Kind="MathLog" Width="40" Height="30" Margin="10" VerticalAlignment="Center" Foreground="#FF1368BD"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.log}" VerticalAlignment="Center" Margin="20 10" Foreground="White"/>
|
||||
</StackPanel>
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
</StackPanel>
|
||||
<StackPanel Grid.Row="2" VerticalAlignment="Bottom" Height="60" Background="#FF00204E" Orientation="Horizontal" Margin="0,0,0,0" Width="400" HorizontalAlignment="Right">
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
|
||||
@@ -4,11 +4,14 @@ using SunlightCentralizedControlManagement_SCCM_.ViewModel;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.NetworkInformation;
|
||||
using System.Net.Sockets;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
@@ -23,28 +26,45 @@ using System.Windows.Shapes;
|
||||
using System.Windows.Threading;
|
||||
using TouchSocket.Core;
|
||||
using static SunlightCentralizedControlManagement_SCCM_.UserClass.SqliteHelper;
|
||||
using static SunlightCentralizedControlManagement_SCCM_.ViewModel.MainWindowViewModel;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
{
|
||||
/// <summary>
|
||||
/// MachinesSet.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class MachinesView : UserControl
|
||||
public partial class MachinesView : UserControl, INotifyPropertyChanged
|
||||
{
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
protected virtual void OnPropertyChanged(string propertyName)
|
||||
{
|
||||
if (PropertyChanged != null)
|
||||
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
public void RaisePropertyChanged(string propertyName)
|
||||
{
|
||||
if (PropertyChanged != null)
|
||||
{
|
||||
if (propertyName != null)
|
||||
{
|
||||
PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
}
|
||||
}
|
||||
public MachinesView()
|
||||
{
|
||||
DataContext = this;
|
||||
InitializeComponent();
|
||||
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)
|
||||
{
|
||||
|
||||
}
|
||||
string machine;
|
||||
int LOG_ = 0;
|
||||
public static DataTable LOG_dataTable = new DataTable();
|
||||
private void Griddata_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
int rownum = Griddata.SelectedIndex;//获取鼠标选中行并定义变量
|
||||
@@ -63,6 +83,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
|
||||
private void ListViewItem_ArrowLeftRight(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
LOG_GRID.Visibility = Visibility.Collapsed;
|
||||
IO_GRID.Visibility = Visibility.Visible;
|
||||
SYS_GRID.Visibility = Visibility.Collapsed;
|
||||
SET_GRID.Visibility = Visibility.Collapsed;
|
||||
@@ -70,13 +91,81 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
}
|
||||
private void ListViewItem_VideoHomeSystem(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
LOG_GRID.Visibility = Visibility.Collapsed;
|
||||
IO_GRID.Visibility = Visibility.Collapsed;
|
||||
SYS_GRID.Visibility = Visibility.Visible;
|
||||
SET_GRID.Visibility = Visibility.Collapsed;
|
||||
view = 2;
|
||||
}
|
||||
private void ListViewItem_LOG(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
if (LOG_ >= 3) { LOG_ = 0; }
|
||||
else
|
||||
{ LOG_++; }
|
||||
|
||||
LOG_GRID.Visibility = Visibility.Visible;
|
||||
IO_GRID.Visibility = Visibility.Collapsed;
|
||||
SYS_GRID.Visibility = Visibility.Collapsed;
|
||||
SET_GRID.Visibility = Visibility.Collapsed;
|
||||
view = 3;
|
||||
LOG_dataTable.Clear();
|
||||
Dictionary<string, object> dat_859 =new Dictionary<string, object>();
|
||||
|
||||
if (LOG_ == 0)
|
||||
{
|
||||
MAC_name.Text = machine+ "(SERVER)";
|
||||
dat_859.Add("INSTRUCTION", "SERVER");
|
||||
dat_859.Add("TIME_S", DateTime.Now.AddDays(-1).ToString("yyyy/MM/dd HH:mm:ss"));
|
||||
dat_859.Add("TIME_E", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
|
||||
}
|
||||
else if (LOG_ == 1)
|
||||
{
|
||||
MAC_name.Text = machine + "(OperationLog)";
|
||||
dat_859.Add("INSTRUCTION", "OperationLog");
|
||||
dat_859.Add("TIME_S", DateTime.Now.AddDays(-1).ToString("yyyy/MM/dd HH:mm:ss"));
|
||||
dat_859.Add("TIME_E", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
|
||||
}
|
||||
else if (LOG_ == 2)
|
||||
{
|
||||
MAC_name.Text = machine + "(IOLog)";
|
||||
dat_859.Add("INSTRUCTION", "IOLog");
|
||||
dat_859.Add("TIME_S", DateTime.Now.AddDays(-1).ToString("yyyy/MM/dd HH:mm:ss"));
|
||||
dat_859.Add("TIME_E", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
|
||||
}
|
||||
else
|
||||
{
|
||||
MAC_name.Text = machine + "(ERRLog)";
|
||||
dat_859.Add("INSTRUCTION", "ERRLog");
|
||||
dat_859.Add("TIME_S", DateTime.Now.AddDays(-1).ToString("yyyy/MM/dd HH:mm:ss"));
|
||||
dat_859.Add("TIME_E", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(machine))
|
||||
{
|
||||
DataRow drEmployee = MainWindowViewModel.Machines.Select("NAME='" + machine + "'").First();
|
||||
int State_ = Convert.ToInt16(drEmployee.Field<object>("State"));
|
||||
int index = Convert.ToInt16(drEmployee.Field<object>("ID"));
|
||||
if ((State_ == 101) || (State_ == 201) || (State_ == 202) || (State_ == 309))//获得细节信息
|
||||
{
|
||||
if (drEmployee.Field<bool>("Type"))//
|
||||
{//网络
|
||||
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
|
||||
{
|
||||
ID = index,
|
||||
DAT = "SC859" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'")
|
||||
+ dat_859.ToJsonString()
|
||||
});
|
||||
}
|
||||
else
|
||||
{//串口
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private void ListViewItem_Dharmachakra(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
LOG_GRID.Visibility = Visibility.Collapsed;
|
||||
IO_GRID.Visibility = Visibility.Collapsed;
|
||||
SYS_GRID.Visibility = Visibility.Collapsed;
|
||||
SET_GRID.Visibility = Visibility.Visible;
|
||||
@@ -109,18 +198,15 @@ 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表
|
||||
MainWindowViewModel.D_view = true;
|
||||
D_view = true;
|
||||
}
|
||||
|
||||
private void Grid_D_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
|
||||
{
|
||||
MainWindowViewModel.D_view = false;
|
||||
D_view = false;
|
||||
}
|
||||
|
||||
private void Grid_A_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
|
||||
@@ -135,17 +221,14 @@ 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);//更新
|
||||
}
|
||||
MainWindowViewModel.A_view = true;
|
||||
A_view = true;
|
||||
}
|
||||
|
||||
private void Grid_A_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
|
||||
{
|
||||
MainWindowViewModel.A_view = false;
|
||||
A_view = false;
|
||||
}
|
||||
|
||||
private void SYS_Grid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
|
||||
@@ -162,13 +245,20 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
|
||||
DataRow drEmployee = MainWindowViewModel.Machines.Select("NAME='" + machine + "'").First();
|
||||
int index = Convert.ToInt16(drEmployee.Field<object>("ID"));
|
||||
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
|
||||
{
|
||||
ID = index,
|
||||
DAT = "SC862" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index) + datagrid_v.ToJsonString()
|
||||
});//发送862指令修改系统设置
|
||||
if (drEmployee.Field<bool>("Type"))//
|
||||
{//网络
|
||||
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
|
||||
{
|
||||
ID = index,
|
||||
DAT = "SC862" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'") + datagrid_v.ToJsonString()
|
||||
});//发送862指令修改系统设置
|
||||
}
|
||||
else
|
||||
{//串口
|
||||
|
||||
}
|
||||
}
|
||||
MainWindowViewModel.SysSet_view = true;
|
||||
SysSet_view = true;
|
||||
}
|
||||
|
||||
private void SET_Grid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
|
||||
@@ -185,23 +275,30 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
|
||||
DataRow drEmployee = MainWindowViewModel.Machines.Select("NAME='" + machine + "'").First();
|
||||
int index = Convert.ToInt16(drEmployee.Field<object>("ID"));
|
||||
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
|
||||
{
|
||||
ID = index,
|
||||
DAT = "SC861" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index)+datagrid_v.ToJsonString()
|
||||
});//发送861指令修改程序设置
|
||||
if (drEmployee.Field<bool>("Type"))//
|
||||
{//网络
|
||||
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
|
||||
{
|
||||
ID = index,
|
||||
DAT = "SC861" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'") + datagrid_v.ToJsonString()
|
||||
});//发送861指令修改程序设置
|
||||
}
|
||||
else
|
||||
{//串口
|
||||
|
||||
}
|
||||
}
|
||||
MainWindowViewModel.ParameterSet_view = true;
|
||||
ParameterSet_view = true;
|
||||
}
|
||||
|
||||
private void SYS_Grid_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
|
||||
{
|
||||
MainWindowViewModel.SysSet_view = false;
|
||||
SysSet_view = false;
|
||||
}
|
||||
|
||||
private void SET_Grid_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
|
||||
{
|
||||
MainWindowViewModel.ParameterSet_view = false;
|
||||
ParameterSet_view = false;
|
||||
}
|
||||
|
||||
private int view = 0;
|
||||
@@ -210,42 +307,67 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
if (!string.IsNullOrEmpty(machine))
|
||||
{
|
||||
DataRow drEmployee = MainWindowViewModel.Machines.Select("NAME='" + machine + "'").First();
|
||||
int State_ = Convert.ToInt16(drEmployee.Field<object>("State"));
|
||||
int index = Convert.ToInt16(drEmployee.Field<object>("ID"));
|
||||
if ((State_ == 101) || (State_ == 201) || (State_ == 202) || (State_ == 309))//获得细节信息
|
||||
{
|
||||
if (view == 0)
|
||||
|
||||
if (drEmployee.Field<bool>("Type"))//
|
||||
{//网络
|
||||
int State_ = Convert.ToInt16(drEmployee.Field<object>("State"));
|
||||
int index = Convert.ToInt16(drEmployee.Field<object>("ID"));
|
||||
if ((State_ == 101) || (State_ == 201) || (State_ == 202) || (State_ == 309))//获得细节信息
|
||||
{
|
||||
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
|
||||
if (view == 0)
|
||||
{
|
||||
ID = index,
|
||||
DAT = "SC851" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index)
|
||||
});
|
||||
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
|
||||
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
|
||||
{
|
||||
ID = index,
|
||||
DAT = "SC851" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'")
|
||||
});
|
||||
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
|
||||
{
|
||||
ID = index,
|
||||
DAT = "SC852" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'")
|
||||
});
|
||||
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
|
||||
{
|
||||
ID = index,
|
||||
DAT = "SC853" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'")
|
||||
});
|
||||
}
|
||||
else if (view == 1)
|
||||
{
|
||||
ID = index,
|
||||
DAT = "SC852" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index)
|
||||
});
|
||||
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
|
||||
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
|
||||
{
|
||||
ID = index,
|
||||
DAT = "SC854" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'")
|
||||
});
|
||||
}
|
||||
else if (view == 2)
|
||||
{
|
||||
ID = index,
|
||||
DAT = "SC853" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index)
|
||||
});
|
||||
} else if (view==1)
|
||||
{
|
||||
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
|
||||
{
|
||||
ID = index,
|
||||
DAT = "SC854" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index)
|
||||
});
|
||||
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
|
||||
{
|
||||
ID = index,
|
||||
DAT = "SC855" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", "ID='" + index + "'")
|
||||
});
|
||||
}
|
||||
}
|
||||
else if (view == 2)
|
||||
}
|
||||
else
|
||||
{//串口
|
||||
int State_ = Convert.ToInt16(drEmployee.Field<object>("State"));
|
||||
int index = Convert.ToInt16(drEmployee.Field<object>("ID"));
|
||||
if ((State_ == 101) || (State_ == 201) || (State_ == 202) || (State_ == 309))//获得细节信息
|
||||
{
|
||||
MainWindowViewModel.stringQueue.Enqueue(new MainWindowViewModel.QueueString
|
||||
if (view == 0)
|
||||
{
|
||||
ID = index,
|
||||
DAT = "SC855" + MainWindowViewModel.Selet_Machines(MainWindowViewModel.Machines, "SYSKEY", index)
|
||||
});
|
||||
|
||||
}
|
||||
else if (view == 1)
|
||||
{
|
||||
|
||||
}
|
||||
else if (view == 2)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -261,8 +383,235 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
timer1s.Start();
|
||||
}//时间周期初始化
|
||||
void Tick_Event_1S(object sender, EventArgs e)//Tick_Event周期执行事件1S
|
||||
{ IO_data(); }
|
||||
{
|
||||
IO_data();
|
||||
DATA_view();
|
||||
if (LOG_dataTable.Rows.Count > 0) {
|
||||
LOG_Grid.ItemsSource = LOG_dataTable.DefaultView;
|
||||
// LOG_dataTable.Clear();
|
||||
}
|
||||
}
|
||||
private async void DATA_view()//IO显示
|
||||
{
|
||||
await Task.Run(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
if (dt_m.Rows.Count >= 0)
|
||||
{
|
||||
SYSData_M = ToObservableCollection<DATA_M>(dt_m);
|
||||
}
|
||||
}
|
||||
catch (Exception) { }
|
||||
try
|
||||
{
|
||||
if (dt_a.Rows.Count >= 0)
|
||||
{
|
||||
if ((bool)A_view) SYSData_A = ToObservableCollection<DATA_A>(dt_a);
|
||||
}
|
||||
}
|
||||
catch (Exception) { }
|
||||
try
|
||||
{
|
||||
if (dt_d.Rows.Count >= 0)
|
||||
{
|
||||
if ((bool)D_view) SYSData_D = ToObservableCollection<DATA_D>(dt_d);
|
||||
}
|
||||
}
|
||||
catch (Exception) { }
|
||||
try
|
||||
{
|
||||
TechnologicalMachine_View = ToObservableCollection<TechnologicalM>(Machines);
|
||||
}
|
||||
catch (Exception) { }
|
||||
try
|
||||
{
|
||||
if (dt_ParameterSet.Rows.Count >= 0)
|
||||
{
|
||||
if (ParameterSet_view) Paramete_Set = ToObservableCollection<ParameterSet>(dt_ParameterSet);
|
||||
}
|
||||
}
|
||||
catch (Exception) { }
|
||||
try
|
||||
{
|
||||
if (dt_SysSet.Rows.Count >= 0)
|
||||
{
|
||||
if (SysSet_view) Sys_Set = ToObservableCollection<SysSet>(dt_SysSet);
|
||||
}
|
||||
}
|
||||
catch (Exception) { }
|
||||
});
|
||||
}
|
||||
|
||||
bool A_view =true;
|
||||
bool D_view =true;
|
||||
bool ParameterSet_view = true;
|
||||
bool SysSet_view = true;
|
||||
ObservableCollection<DATA_A> sysData_A = new ObservableCollection<DATA_A>();
|
||||
ObservableCollection<DATA_D> sysData_D = new ObservableCollection<DATA_D>();
|
||||
ObservableCollection<DATA_M> sysData_M = new ObservableCollection<DATA_M>();
|
||||
ObservableCollection<ParameterSet> paramete_Set = new ObservableCollection<ParameterSet>();
|
||||
ObservableCollection<SysSet> sys_Set = new ObservableCollection<SysSet>();
|
||||
ObservableCollection<TechnologicalM> technologicalMachine_View = new ObservableCollection<TechnologicalM>();
|
||||
public ObservableCollection<DATA_A> SYSData_A
|
||||
{
|
||||
|
||||
get { return sysData_A; }
|
||||
set
|
||||
{
|
||||
sysData_A = value;
|
||||
RaisePropertyChanged("SYSData_A");
|
||||
}
|
||||
}
|
||||
public ObservableCollection<DATA_D> SYSData_D
|
||||
{
|
||||
|
||||
get { return sysData_D; }
|
||||
set
|
||||
{
|
||||
sysData_D = value;
|
||||
RaisePropertyChanged("SYSData_D");
|
||||
}
|
||||
}
|
||||
public ObservableCollection<DATA_M> SYSData_M
|
||||
{
|
||||
get { return sysData_M; }
|
||||
set
|
||||
{
|
||||
sysData_M = value;
|
||||
RaisePropertyChanged("SYSData_M");
|
||||
}
|
||||
}
|
||||
public ObservableCollection<TechnologicalM> TechnologicalMachine_View
|
||||
{
|
||||
get { return technologicalMachine_View; }
|
||||
set
|
||||
{
|
||||
technologicalMachine_View = value;
|
||||
RaisePropertyChanged("TechnologicalMachine_View");
|
||||
}
|
||||
}
|
||||
public ObservableCollection<ParameterSet> Paramete_Set
|
||||
{
|
||||
get { return paramete_Set; }
|
||||
set
|
||||
{
|
||||
paramete_Set = value;
|
||||
RaisePropertyChanged("Paramete_Set");
|
||||
}
|
||||
}
|
||||
public ObservableCollection<SysSet> Sys_Set
|
||||
{
|
||||
get { return sys_Set; }
|
||||
set
|
||||
{
|
||||
sys_Set = value;
|
||||
RaisePropertyChanged("Sys_Set");
|
||||
}
|
||||
}
|
||||
public class DATA_A
|
||||
{
|
||||
public string IOName { get; set; }
|
||||
public int AIO { get; set; }
|
||||
public string ID { get; set; }
|
||||
public string PLC { get; set; }
|
||||
public string type { get; set; }
|
||||
}
|
||||
public class DATA_D
|
||||
{
|
||||
public string IOName { get; set; }
|
||||
public bool DIO { get; set; }
|
||||
public string ID { get; set; }
|
||||
public string PLC { get; set; }
|
||||
public string type { get; set; }
|
||||
}
|
||||
public class DATA_M
|
||||
{
|
||||
public string IOName { get; set; }
|
||||
public double Value { get; set; }
|
||||
public string ID { get; set; }
|
||||
public string PLC { get; set; }
|
||||
public string type { get; set; }
|
||||
}
|
||||
public class TechnologicalM
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public string WorkOrder { get; set; }
|
||||
public string Dyelot { get; set; }
|
||||
public string Temperature { get; set; }
|
||||
public string WaterLevel { get; set; }
|
||||
public string Process { get; set; }
|
||||
public string Step { get; set; }
|
||||
public string Message { get; set; }
|
||||
public string State { get; set; }
|
||||
public string LOCK { get; set; }
|
||||
|
||||
}
|
||||
public class ParameterSet
|
||||
{
|
||||
public string Category { get; set; }
|
||||
public string ParameterID { get; set; }
|
||||
public string ParameterName { get; set; }
|
||||
public string Value { get; set; }
|
||||
|
||||
}
|
||||
public class SysSet
|
||||
{
|
||||
public string Category { get; set; }
|
||||
public string ParameterID { get; set; }
|
||||
public string ParameterName { get; set; }
|
||||
public string Value { get; set; }
|
||||
}
|
||||
public ObservableCollection<T> ToObservableCollection<T>(DataTable dt) where T : class, new()
|
||||
{
|
||||
try
|
||||
{
|
||||
Type t = typeof(T);
|
||||
PropertyInfo[] propertys = t.GetProperties();
|
||||
ObservableCollection<T> lst = new ObservableCollection<T>();
|
||||
string typeName = string.Empty;
|
||||
foreach (DataRow dr in dt.Rows)
|
||||
{
|
||||
T entity = new T();
|
||||
foreach (PropertyInfo pi in propertys)
|
||||
{
|
||||
typeName = pi.Name;
|
||||
if (dt.Columns.Contains(typeName))
|
||||
{
|
||||
if (!pi.CanWrite) continue;
|
||||
object value = dr[typeName];
|
||||
if (value == DBNull.Value) continue;
|
||||
if (pi.PropertyType == typeof(string))
|
||||
{
|
||||
pi.SetValue(entity, value.ToString(), null);
|
||||
}
|
||||
else if (pi.PropertyType == typeof(int) || pi.PropertyType == typeof(int?))
|
||||
{
|
||||
pi.SetValue(entity, int.Parse(value.ToString()), null);
|
||||
}
|
||||
else if (pi.PropertyType == typeof(DateTime?) || pi.PropertyType == typeof(DateTime))
|
||||
{
|
||||
pi.SetValue(entity, DateTime.Parse(value.ToString()), null);
|
||||
}
|
||||
else if (pi.PropertyType == typeof(float))
|
||||
{
|
||||
pi.SetValue(entity, float.Parse(value.ToString()), null);
|
||||
}
|
||||
else if (pi.PropertyType == typeof(double))
|
||||
{
|
||||
pi.SetValue(entity, double.Parse(value.ToString()), null);
|
||||
}
|
||||
else
|
||||
{
|
||||
pi.SetValue(entity, value, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
lst.Add(entity);
|
||||
}
|
||||
return lst;
|
||||
}
|
||||
catch (Exception) { return null; }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,13 +6,28 @@
|
||||
xmlns:local="clr-namespace:SunlightCentralizedControlManagement_SCCM_.View"
|
||||
xmlns:lang="clr-namespace:SunlightCentralizedControlManagement_SCCM_.Properties"
|
||||
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
||||
xmlns:rdp="clr-namespace:VncSharpWpf;assembly=VncSharpWpf"
|
||||
xmlns:viewmodel="clr-namespace:SunlightCentralizedControlManagement_SCCM_.ViewModel"
|
||||
xmlns:ConvertMoels="clr-namespace:SunlightCentralizedControlManagement_SCCM_.ConvertMoels"
|
||||
d:DataContext="{d:DesignInstance Type=viewmodel:MainWindowViewModel}"
|
||||
d:DataContext="{d:DesignInstance Type=local:MonitorView}"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="1000" d:DesignWidth="1900">
|
||||
<UserControl.Resources>
|
||||
<ConvertMoels:StatexmlConvert x:Key="StatexmlConvert"/>
|
||||
<ConvertMoels:StateToColorConvert x:Key="StateToColorConvert"/>
|
||||
<ConvertMoels:BoolToVisidilityConvert x:Key="BoolToVisidilityConvert"/>
|
||||
<ConvertMoels:StatenToImageConvert x:Key="StatenToImageConvert"/>
|
||||
<ContextMenu x:Key="PersoncontextMenu">
|
||||
<MenuItem Header="{x:Static lang:Resources._lock}" Click="MenuItem_LOCK_XML"/>
|
||||
<MenuItem Header="{x:Static lang:Resources._Auto}" Click="MenuItem_AUTO_XML"/>
|
||||
<MenuItem Header="{x:Static lang:Resources.Stop}" Click="MenuItem_Stop_XML"/>
|
||||
<MenuItem Header="{x:Static lang:Resources.Start}" Click="MenuItem_Start_XML"/>
|
||||
</ContextMenu>
|
||||
<ContextMenu x:Key="PersoncontextMenuStep">
|
||||
<MenuItem Header="{x:Static lang:Resources.edit}" Click="MenuItem_edit"/>
|
||||
<MenuItem Header="{x:Static lang:Resources.Insert}" Click="MenuItem_Insert"/>
|
||||
<MenuItem Header="{x:Static lang:Resources.Delete}" Click="MenuItem_Delete"/>
|
||||
</ContextMenu>
|
||||
</UserControl.Resources>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
@@ -21,16 +36,19 @@
|
||||
<RowDefinition/>
|
||||
<RowDefinition Height="60"/>
|
||||
</Grid.RowDefinitions>
|
||||
<DataGrid Grid.Row="0" Grid.Column="0" x:Name="Griddata" AlternationCount="2" IsReadOnly="True" SelectionChanged="Griddata_SelectionChanged"
|
||||
<DataGrid Grid.Row="0" Grid.Column="0" x:Name="Griddata" AlternationCount="2" IsReadOnly="True"
|
||||
SelectionChanged="Griddata_SelectionChanged" EnableRowVirtualization="True" EnableColumnVirtualization="True"
|
||||
VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.VirtualizationMode="Recycling"
|
||||
d:ItemsSource="{d:SampleData ItemCount=999}" AutoGenerateColumns="False" MinColumnWidth="30"
|
||||
ItemsSource="{Binding Path=TechnologicalMachine_View,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
|
||||
Background="White" GridLinesVisibility="All" ColumnHeaderHeight="40" HorizontalContentAlignment="Right"
|
||||
CanUserReorderColumns="False" CanUserSortColumns="False" CanUserResizeRows="False" CanUserResizeColumns="False"
|
||||
CanUserReorderColumns="False" CanUserSortColumns="False" CanUserResizeRows="False" CanUserResizeColumns="True"
|
||||
CanUserDeleteRows="False" SelectionMode="Single" FontSize="15" Focusable="True" >
|
||||
<DataGrid.RowStyle >
|
||||
<Style TargetType="{x:Type DataGridRow}">
|
||||
<Setter Property="Height" Value="30" />
|
||||
<Setter Property="FontSize" Value="25" />
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
<Style.Triggers>
|
||||
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
|
||||
<Setter Property="Background" Value="#FFFFFFFF" />
|
||||
@@ -39,6 +57,27 @@
|
||||
<Setter Property="Background" Value="#FFF0F0F0" />
|
||||
</Trigger>
|
||||
<Trigger Property="IsMouseOver" Value="False"/>
|
||||
<DataTrigger Binding="{Binding State}" Value="309">
|
||||
<Setter Property="Background" Value="Red"/>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding State}" Value="308">
|
||||
<Setter Property="Background" Value="Yellow"/>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding State}" Value="800">
|
||||
<Setter Property="IsHitTestVisible" Value="False"/>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding State}" Value="101">
|
||||
<Setter Property="ContextMenu" Value="{StaticResource PersoncontextMenu}"/>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding State}" Value="201">
|
||||
<Setter Property="ContextMenu" Value="{StaticResource PersoncontextMenu}"/>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding State}" Value="202">
|
||||
<Setter Property="ContextMenu" Value="{StaticResource PersoncontextMenu}"/>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding State}" Value="309">
|
||||
<Setter Property="ContextMenu" Value="{StaticResource PersoncontextMenu}"/>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</DataGrid.RowStyle>
|
||||
@@ -46,6 +85,7 @@
|
||||
<Style TargetType="DataGridCell">
|
||||
<Setter Property="BorderThickness" Value="0"/>
|
||||
<Setter Property="MinWidth" Value="20"/>
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
<Style.Triggers>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Setter Property="Background" Value="#FFC0C0C0"/>
|
||||
@@ -65,47 +105,88 @@
|
||||
</DataGrid.Resources>
|
||||
<DataGrid.Columns>
|
||||
<!--列信息绑定-->
|
||||
<DataGridTemplateColumn Width="70" Header="{x:Static lang:Resources.State}">
|
||||
<DataGridTextColumn Binding="{Binding State}" Width="0" MaxWidth="0" IsReadOnly="True"/>
|
||||
<DataGridTemplateColumn Width="100" Header="{x:Static lang:Resources.State}">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<materialDesign:PackIcon Kind="StateMachine" Width="25" Height="30" VerticalAlignment="Center" HorizontalAlignment="Center"
|
||||
Foreground="{Binding Path=State,Converter={StaticResource StateToColorConvert}}"/>
|
||||
<UniformGrid VerticalAlignment="Bottom" HorizontalAlignment="Left">
|
||||
<Border>
|
||||
<Grid>
|
||||
<StackPanel Width="100" Orientation="Horizontal">
|
||||
<materialDesign:PackIcon Width="25" Height="30"
|
||||
Kind="{Binding Path=State,Converter={StaticResource StatexmlConvert}}"
|
||||
Foreground="{Binding Path=State,Converter={StaticResource StateToColorConvert}}"/>
|
||||
<materialDesign:PackIcon Width="25" Height="30" Kind="Lock"
|
||||
Visibility="{Binding Path=LOCK,Converter={StaticResource StatexmlConvert}}"
|
||||
Foreground="{Binding Path=State,Converter={StaticResource StateToColorConvert}}"/>
|
||||
<materialDesign:PackIcon Width="25" Height="30" Kind="HandBackRight"
|
||||
Visibility="{Binding Path=AUTO,Converter={StaticResource StatexmlConvert}}"
|
||||
Foreground="{Binding Path=State,Converter={StaticResource StateToColorConvert}}"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
</UniformGrid>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Machine}" Binding="{Binding Name}" Width="150" IsReadOnly="True">
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Machine}" Binding="{Binding Name}" Width="80" IsReadOnly="True">
|
||||
<DataGridTextColumn.ElementStyle>
|
||||
<Style TargetType="{x:Type TextBlock}">
|
||||
<Setter Property="Foreground" Value="{Binding Path=State,Converter={StaticResource StateToColorConvert}}"/>
|
||||
</Style>
|
||||
</DataGridTextColumn.ElementStyle>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.WorkOrder}" Binding="{Binding WorkOrder}" Width="200" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Dyelot}" Binding="{Binding Dyelot}" Width="200" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.WorkOrder}" Binding="{Binding WorkOrder}" Width="200" IsReadOnly="True">
|
||||
<DataGridTextColumn.ElementStyle>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="TextTrimming" Value="CharacterEllipsis"/>
|
||||
<Setter Property="ToolTip" Value="{Binding WorkOrder}"/>
|
||||
</Style>
|
||||
</DataGridTextColumn.ElementStyle>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Dyelot}" Binding="{Binding Dyelot}" Width="0" MaxWidth="0" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Temperature}" Binding="{Binding Temperature}" Width="100" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.WaterLevel}" Binding="{Binding WaterLevel}" Width="100" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.process}" Binding="{Binding Process}" Width="300" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Step}" Binding="{Binding Step}" Width="300" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.process}" Binding="{Binding Process}" Width="300" IsReadOnly="True">
|
||||
<DataGridTextColumn.ElementStyle>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="TextTrimming" Value="CharacterEllipsis"/>
|
||||
<Setter Property="ToolTip" Value="{Binding Process}"/>
|
||||
</Style>
|
||||
</DataGridTextColumn.ElementStyle>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Step}" Binding="{Binding Step}" Width="300" IsReadOnly="True">
|
||||
<DataGridTextColumn.ElementStyle>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="TextTrimming" Value="CharacterEllipsis"/>
|
||||
<Setter Property="ToolTip" Value="{Binding Step}"/>
|
||||
</Style>
|
||||
</DataGridTextColumn.ElementStyle>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.message}" Binding="{Binding Message}" Width="*" IsReadOnly="True"/>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
<GridSplitter Grid.Row="1" Height="5" HorizontalAlignment="Stretch" Background="#FF00204E"/>
|
||||
<Grid Grid.Row="2" d:DataContext="{d:DesignInstance Type=viewmodel:MainWindowViewModel}">
|
||||
<Grid Grid.Row="2" >
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition Width="5"/>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition MinWidth="1200"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<DataGrid Grid.Column="2" x:Name="Gridstep" AlternationCount="2" IsReadOnly="True" SelectionChanged="Gridstep_SelectionChanged"
|
||||
<DataGrid Grid.Column="2" x:Name="Gridstep" AlternationCount="2" SelectionChanged="Gridstep_SelectionChanged"
|
||||
EnableRowVirtualization="True" EnableColumnVirtualization="True"
|
||||
VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.VirtualizationMode="Recycling"
|
||||
d:ItemsSource="{d:SampleData ItemCount=90}" AutoGenerateColumns="False" MinColumnWidth="30"
|
||||
ItemsSource="{Binding Path=TechnologicalProcess_View,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
|
||||
HorizontalGridLinesBrush="#FFC9C9C9" VerticalGridLinesBrush="#FFC9C9C9" Background="White"
|
||||
GridLinesVisibility="All" ColumnHeaderHeight="40" HorizontalContentAlignment="Right" BorderBrush="{x:Null}"
|
||||
GridLinesVisibility="All" ColumnHeaderHeight="40" HorizontalContentAlignment="Right" BorderBrush="{x:Null}"
|
||||
CanUserReorderColumns="False" CanUserSortColumns="False" CanUserResizeRows="False" CanUserResizeColumns="False"
|
||||
CanUserDeleteRows="False" SelectionMode="Single" FontSize="15" Focusable="True" >
|
||||
CanUserDeleteRows="False" SelectionMode="Single" FontSize="15" Focusable="True" CanUserAddRows="False">
|
||||
<DataGrid.RowStyle >
|
||||
<Style TargetType="{x:Type DataGridRow}">
|
||||
<Setter Property="Height" Value="30" />
|
||||
<Setter Property="IsHitTestVisible" Value="{Binding DataContext.IsInteractive,
|
||||
RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
|
||||
<Setter Property="Height" Value="100" />
|
||||
<Setter Property="FontSize" Value="25" />
|
||||
<Style.Triggers>
|
||||
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
|
||||
@@ -115,6 +196,19 @@
|
||||
<Setter Property="Background" Value="#FFF0F0F0" />
|
||||
</Trigger>
|
||||
<Trigger Property="IsMouseOver" Value="False"/>
|
||||
<DataTrigger Binding="{Binding RUN}" Value="1">
|
||||
<Setter Property="Background" Value="#FF00D6FF"/>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding RUN}" Value="2">
|
||||
<Setter Property="Background" Value="Yellow"/>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding RUN}" Value="9">
|
||||
<Setter Property="Background" Value="Red"/>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding DataContext.IsInteractive,
|
||||
RelativeSource={RelativeSource AncestorType=DataGrid}}" Value="true">
|
||||
<Setter Property="ContextMenu" Value="{StaticResource PersoncontextMenuStep}"/>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</DataGrid.RowStyle>
|
||||
@@ -134,25 +228,102 @@
|
||||
<!--列信息绑定-->
|
||||
<DataGridTextColumn Binding="{Binding ProgramID}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Program}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Step}" Width="70" Header="{x:Static lang:Resources.Step}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Binding="{Binding StepID}" Width="0" MinWidth="0" MaxWidth="0" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Binding="{Binding StepName}" Header="{x:Static lang:Resources.Directives}" Width="300" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Binding="{Binding ParameterName}" Header="{x:Static lang:Resources.ParameterSet}" Width="*" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Step}" Binding="{Binding Step}"
|
||||
Width="80" IsReadOnly="True">
|
||||
<DataGridTextColumn.ElementStyle>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
<Setter Property="HorizontalAlignment" Value="Center"/>
|
||||
</Style>
|
||||
</DataGridTextColumn.ElementStyle>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Code}" Width="0" MinWidth="0"
|
||||
MaxWidth="0" Binding="{Binding StepID}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Directives}" Width="0" MinWidth="0"
|
||||
MaxWidth="0" Binding="{Binding StepName}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.ParameterSet}" Width="0" MinWidth="0"
|
||||
MaxWidth="0" Binding="{Binding ParameterName}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter1}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter2}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter3}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter4}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter5}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding DYELOT}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTemplateColumn Header="{x:Static lang:Resources.Directives}" Width="100" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image Source="{Binding Path=StepID,Converter={StaticResource StatenToImageConvert}}" Height="100" Width="100"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="{x:Static lang:Resources.Directives}" Width="600" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel>
|
||||
<Border BorderBrush="#FFC9C9C9" BorderThickness="0,0,0,0.5">
|
||||
<TextBlock Height="50" >
|
||||
<Run Text="{x:Static lang:Resources.Function}"/>
|
||||
<Run Text=":"/>
|
||||
<Run Text="{Binding StepName}"/>
|
||||
</TextBlock>
|
||||
</Border>
|
||||
<Border BorderBrush="#FFC9C9C9" BorderThickness="0,0.5,0,0">
|
||||
<TextBlock Height="50" >
|
||||
<Run Text="{x:Static lang:Resources.ParameterSet}"/>
|
||||
<Run Text=":"/>
|
||||
<Run Text="{Binding ParameterName}"/>
|
||||
</TextBlock>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="{x:Static lang:Resources.Subroutine}" Width="100" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image Source="{Binding Path=StepID_S1,Converter={StaticResource StatenToImageConvert}}" Height="100" Width="100"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="{x:Static lang:Resources.Subroutine}" Width="100" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image Source="{Binding Path=StepID_S2,Converter={StaticResource StatenToImageConvert}}" Height="100" Width="100"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="{x:Static lang:Resources.Subroutine}" Width="100" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image Source="{Binding Path=StepID_S3 ,Converter={StaticResource StatenToImageConvert}}" Height="100" Width="100"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Remark}" Binding="{Binding Remark}"
|
||||
Width="*" IsReadOnly="True">
|
||||
<DataGridTextColumn.ElementStyle>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
<Setter Property="HorizontalAlignment" Value="Center"/>
|
||||
<Setter Property="TextWrapping" Value="Wrap"/>
|
||||
<Setter Property="TextTrimming" Value="CharacterEllipsis"/>
|
||||
</Style>
|
||||
</DataGridTextColumn.ElementStyle>
|
||||
</DataGridTextColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
<TextBlock Grid.Column="0" x:Name="machin_LOG" TextWrapping="Wrap" FontSize="27" VerticalAlignment="Top" Height="40" Background="#FF2793FF" Foreground="White" FontWeight="Bold"/>
|
||||
<TextBlock Grid.Column="0" x:Name="log" Text="{Binding Sys_machine}" TextWrapping="Wrap" FontSize="25" Background="White" Margin="0,42,4,-2" Grid.ColumnSpan="2"/>
|
||||
<Grid Margin="0,40,0,0" Grid.ColumnSpan="2" Grid.Column="0" >
|
||||
<rdp:RemoteDesktopWpf x:Name="rdp" Visibility="Collapsed" />
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto" PanningMode="VerticalOnly">
|
||||
<TextBlock x:Name="log" Text="{Binding Sys_machine}" TextWrapping="Wrap" FontSize="25" Background="White"/>
|
||||
</ScrollViewer>
|
||||
<ContentControl x:Name="Picture" Background="White"/>
|
||||
</Grid>
|
||||
<GridSplitter Grid.Row="0" Grid.Column="1" Width="5" HorizontalAlignment="Center" Background="#FF00204E"/>
|
||||
</Grid>
|
||||
<StackPanel Grid.Row="3" x:Name="mt" VerticalAlignment="Bottom" Height="60" Background="#FF00204E" Orientation="Horizontal" Margin="0,0,0,0" Width="700" HorizontalAlignment="Left">
|
||||
<StackPanel Grid.Row="3" x:Name="mt" VerticalAlignment="Bottom" Height="60" Background="#FF00204E" Orientation="Horizontal" Width="800" HorizontalAlignment="Left">
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_DyeingMachine">
|
||||
<ListViewItem MinWidth="150" MouseLeftButtonUp="ListViewItem_DyeingMachine" IsHitTestVisible="False" x:Name="DyeingMachine">
|
||||
<StackPanel Orientation="Horizontal" >
|
||||
<materialDesign:PackIcon Kind="CoffeeMachine" Width="40" Height="30" Margin="10" VerticalAlignment="Center" Foreground="#FF1368BD"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.DyeingMachine}" VerticalAlignment="Center" Margin="20 10" Foreground="White"/>
|
||||
@@ -160,15 +331,23 @@
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Conveyor">
|
||||
<ListViewItem MinWidth="150" MouseLeftButtonUp="ListViewItem_Curve" IsHitTestVisible="False" x:Name="Curve">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<materialDesign:PackIcon Kind="Pipe" Width="40" Height="30" Margin="10" VerticalAlignment="Center" Foreground="#FF1368BD"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.Conveyor}" VerticalAlignment="Center" Margin="20 10" Foreground="White"/>
|
||||
<materialDesign:PackIcon Kind="ChartBellCurve" Width="40" Height="30" Margin="10" VerticalAlignment="Center"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.Curve}" VerticalAlignment="Center" Margin="20 10" Foreground="White"/>
|
||||
</StackPanel>
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Receipt">
|
||||
<ListViewItem MinWidth="150" MouseLeftButtonUp="ListViewItem_Screen" IsHitTestVisible="False" x:Name="Screen">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<materialDesign:PackIcon Kind="Monitor" Width="40" Height="30" Margin="10" VerticalAlignment="Center" Foreground="#FF1368BD"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.Screen}" VerticalAlignment="Center" Margin="20 10" Foreground="White"/>
|
||||
</StackPanel>
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem MinWidth="150" MouseLeftButtonUp="ListViewItem_Receipt" IsHitTestVisible="False" x:Name="Receipt">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<materialDesign:PackIcon Kind="ReceiptText" Width="40" Height="30" Margin="10" VerticalAlignment="Center" Foreground="#FF1368BD"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.Receipt}" VerticalAlignment="Center" Margin="20 10" Foreground="White"/>
|
||||
@@ -176,9 +355,9 @@
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
</StackPanel>
|
||||
<StackPanel Grid.Row="3" x:Name="scr" VerticalAlignment="Bottom" Height="60" Background="#FF00204E" Orientation="Horizontal" Margin="700,0,0,0">
|
||||
<StackPanel Grid.Row="3" x:Name="scr" VerticalAlignment="Bottom" Height="60" Background="#FF00204E" Orientation="Horizontal" Margin="800,0,0,0">
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Resume" IsEnabled="False" x:Name="Resume">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Resume" IsHitTestVisible="False" x:Name="Resume">
|
||||
<StackPanel Orientation="Horizontal" >
|
||||
<materialDesign:PackIcon Kind="Resume" Width="40" Height="30" Margin="10" VerticalAlignment="Center" Foreground="#FF1368BD"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.Resume}" VerticalAlignment="Center" Margin="20 10" Foreground="White"/>
|
||||
@@ -186,7 +365,7 @@
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Paused" IsEnabled="False" x:Name="Paused">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Paused" IsHitTestVisible="False" x:Name="Paused">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<materialDesign:PackIcon Kind="Pause" Width="40" Height="30" Margin="10" VerticalAlignment="Center" Foreground="#FF1368BD"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.Paused}" VerticalAlignment="Center" Margin="20 10" Foreground="White"/>
|
||||
@@ -194,7 +373,7 @@
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Stop" IsEnabled="False" x:Name="Stop">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Stop" IsHitTestVisible="False" x:Name="Stop">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<materialDesign:PackIcon Kind="Stop" Width="40" Height="30" Margin="10" VerticalAlignment="Center" Foreground="#FF1368BD"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.Stop}" VerticalAlignment="Center" Margin="20 10" Foreground="White"/>
|
||||
@@ -202,7 +381,7 @@
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_edit" IsEnabled="False" x:Name="edit">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_edit" IsHitTestVisible="False" x:Name="edit">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<materialDesign:PackIcon Kind="Edit" Width="40" Height="30" Margin="10" VerticalAlignment="Center" Foreground="#FF1368BD"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.edit}" VerticalAlignment="Center" Margin="20 10" Foreground="White"/>
|
||||
@@ -210,7 +389,7 @@
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Jump" IsEnabled="False" x:Name="Jump">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Jump" IsHitTestVisible="False" x:Name="Jump">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<materialDesign:PackIcon Kind="Jump" Width="40" Height="30" Margin="10" VerticalAlignment="Center" Foreground="#FF1368BD"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.Jump}" VerticalAlignment="Center" Margin="20 10" Foreground="White"/>
|
||||
@@ -218,7 +397,7 @@
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Insert" IsEnabled="False" x:Name="Insert">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Insert" IsHitTestVisible="False" x:Name="Insert">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<materialDesign:PackIcon Kind="InsertInvitation" Width="40" Height="30" Margin="10" VerticalAlignment="Center" Foreground="#FF1368BD"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.Insert}" VerticalAlignment="Center" Margin="20 10" Foreground="White"/>
|
||||
@@ -226,7 +405,7 @@
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Delete" IsEnabled="False" x:Name="Delete">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Delete" IsHitTestVisible="False" x:Name="Delete">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<materialDesign:PackIcon Kind="Delete" Width="40" Height="30" Margin="10" VerticalAlignment="Center" Foreground="#FF1368BD"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.Delete}" VerticalAlignment="Center" Margin="20 10" Foreground="White"/>
|
||||
|
||||
@@ -6,8 +6,14 @@
|
||||
xmlns:local="clr-namespace:SunlightCentralizedControlManagement_SCCM_.View"
|
||||
xmlns:lang="clr-namespace:SunlightCentralizedControlManagement_SCCM_.Properties"
|
||||
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
||||
xmlns:ConvertMoels="clr-namespace:SunlightCentralizedControlManagement_SCCM_.ConvertMoels"
|
||||
mc:Ignorable="d" Loaded="UserControl_Loaded"
|
||||
d:DesignHeight="900" d:DesignWidth="550">
|
||||
<UserControl.Resources>
|
||||
<ConvertMoels:StatexmlConvert x:Key="StatexmlConvert"/>
|
||||
<ConvertMoels:StateToColorConvert x:Key="StateToColorConvert"/>
|
||||
<ConvertMoels:StatenToImageConvert x:Key="StatenToImageConvert"/>
|
||||
</UserControl.Resources>
|
||||
<Grid Background="White" Cursor="">
|
||||
<ComboBox HorizontalAlignment="Left" Height="30" Margin="150,30,0,0" x:Name="comboBoxMachine" VerticalAlignment="Top" Width="270"
|
||||
FontSize="15" IsEditable="True" BorderBrush="#FF673AB7" DropDownClosed="comboBoxMachine_DropDownClosed" IsReadOnly="True" />
|
||||
@@ -34,7 +40,7 @@
|
||||
Margin="0,200,0,60" >
|
||||
<DataGrid.RowStyle >
|
||||
<Style TargetType="{x:Type DataGridRow}">
|
||||
<Setter Property="Height" Value="25" />
|
||||
<Setter Property="Height" Value="100" />
|
||||
<Setter Property="FontSize" Value="15" />
|
||||
<Style.Triggers>
|
||||
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
|
||||
@@ -64,20 +70,76 @@
|
||||
<!--列信息绑定-->
|
||||
<DataGridTextColumn Binding="{Binding ProgramID}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Program}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Step}" Binding="{Binding Step}" Width="40" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Code}" Width="0" MinWidth="0" MaxWidth="0" Binding="{Binding StepID}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Directives}" Width="200" Binding="{Binding StepName}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.ParameterSet}" Width="*" Binding="{Binding ParameterName}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Step}" Binding="{Binding Step}"
|
||||
Width="60" IsReadOnly="True">
|
||||
<DataGridTextColumn.ElementStyle>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
<Setter Property="HorizontalAlignment" Value="Center"/>
|
||||
</Style>
|
||||
</DataGridTextColumn.ElementStyle>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Code}" Width="0" MinWidth="0"
|
||||
MaxWidth="0" Binding="{Binding StepID}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Directives}" Width="0" MinWidth="0"
|
||||
MaxWidth="0" Binding="{Binding StepName}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.ParameterSet}" Width="0" MinWidth="0"
|
||||
MaxWidth="0" Binding="{Binding ParameterName}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter1}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter2}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter3}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter4}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter5}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter6}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter7}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter8}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter9}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter10}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTemplateColumn Header="{x:Static lang:Resources.Directives}" Width="100" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image Source="{Binding Path=StepID,Converter={StaticResource StatenToImageConvert}}" Height="100" Width="100"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="{x:Static lang:Resources.Directives}" Width="300" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel>
|
||||
<Border BorderBrush="#FFC9C9C9" BorderThickness="0,0,0,0.5">
|
||||
<TextBlock Height="50" >
|
||||
<Run Text="{x:Static lang:Resources.Function}"/>
|
||||
<Run Text=":"/>
|
||||
<Run Text="{Binding StepName}"/>
|
||||
</TextBlock>
|
||||
</Border>
|
||||
<Border BorderBrush="#FFC9C9C9" BorderThickness="0,0.5,0,0">
|
||||
<TextBlock Height="50" >
|
||||
<Run Text="{x:Static lang:Resources.ParameterSet}"/>
|
||||
<Run Text=":"/>
|
||||
<Run Text="{Binding ParameterName}"/>
|
||||
</TextBlock>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="{x:Static lang:Resources.Subroutine}" Width="100" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image Source="{Binding Path=StepID_S1,Converter={StaticResource StatenToImageConvert}}" Height="100" Width="100"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="{x:Static lang:Resources.Subroutine}" Width="100" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image Source="{Binding Path=StepID_S2,Converter={StaticResource StatenToImageConvert}}" Height="100" Width="100"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="{x:Static lang:Resources.Subroutine}" Width="100" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image Source="{Binding Path=StepID_S3 ,Converter={StaticResource StatenToImageConvert}}" Height="100" Width="100"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
|
||||
@@ -32,8 +32,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
/// </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))
|
||||
@@ -197,7 +187,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
WorkOrder_new.Add("Remark", null);
|
||||
WorkOrder_new.Add("lock", 0);
|
||||
WorkOrder_new.Add("color", color_);
|
||||
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++)
|
||||
@@ -220,10 +210,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(); //关闭连接
|
||||
}
|
||||
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;//显示
|
||||
}
|
||||
@@ -442,7 +422,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
|
||||
if (string.IsNullOrEmpty(Numder)) { Numder = null; P1 = "0"; P2 = "0"; P3 = "0"; P4 = "0"; P5 = "0"; }
|
||||
if (ID == null) ID = dat.Rows.Count.ToString();
|
||||
ViewStep viewstop = new ViewStep(Numder, P1, P2, P3, P4, P5);
|
||||
ViewStep viewstop = new ViewStep(Numder, dat.Select("STEP = " + ID).First());
|
||||
viewstop.AddressUpdated += new ViewStep.AddressUpdateHandler(Address_ButtonClicked);
|
||||
viewstop.data = ID;
|
||||
viewstop.ShowDialog();
|
||||
@@ -458,11 +438,32 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
dr["StepID"] = e.StepID;
|
||||
dr["StepName"] = e.StepNAME;
|
||||
dr["ParameterName"] = e.PNAME;
|
||||
dr["Parameter1"] = e.P1;
|
||||
dr["Parameter2"] = e.P2;
|
||||
dr["Parameter3"] = e.P3;
|
||||
dr["Parameter4"] = e.P4;
|
||||
dr["Parameter5"] = e.P5;
|
||||
dr["Parameter1"] = e.Row_DAT.Field<double>("Parameter1");
|
||||
dr["Parameter2"] = e.Row_DAT.Field<double>("Parameter1");
|
||||
dr["Parameter3"] = e.Row_DAT.Field<double>("Parameter1");
|
||||
dr["Parameter4"] = e.Row_DAT.Field<double>("Parameter1");
|
||||
dr["Parameter5"] = e.Row_DAT.Field<double>("Parameter1");
|
||||
dr["Parameter1_S1"] = e.Row_DAT.Field<double>("Parameter1_S1");
|
||||
dr["Parameter2_S1"] = e.Row_DAT.Field<double>("Parameter2_S1");
|
||||
dr["Parameter3_S1"] = e.Row_DAT.Field<double>("Parameter3_S1");
|
||||
dr["Parameter4_S1"] = e.Row_DAT.Field<double>("Parameter4_S1");
|
||||
dr["Parameter5_S1"] = e.Row_DAT.Field<double>("Parameter5_S1");
|
||||
dr["Parameter1_S2"] = e.Row_DAT.Field<double>("Parameter1_S2");
|
||||
dr["Parameter2_S2"] = e.Row_DAT.Field<double>("Parameter2_S2");
|
||||
dr["Parameter3_S2"] = e.Row_DAT.Field<double>("Parameter3_S2");
|
||||
dr["Parameter4_S2"] = e.Row_DAT.Field<double>("Parameter4_S2");
|
||||
dr["Parameter5_S2"] = e.Row_DAT.Field<double>("Parameter5_S2");
|
||||
dr["Parameter1_S3"] = e.Row_DAT.Field<double>("Parameter1_S3");
|
||||
dr["Parameter2_S3"] = e.Row_DAT.Field<double>("Parameter2_S3");
|
||||
dr["Parameter3_S3"] = e.Row_DAT.Field<double>("Parameter3_S3");
|
||||
dr["Parameter4_S3"] = e.Row_DAT.Field<double>("Parameter4_S3");
|
||||
dr["Parameter5_S3"] = e.Row_DAT.Field<double>("Parameter5_S3");
|
||||
dr["StepName_S1"] = e.Row_DAT.Field<string>("StepName_S1");
|
||||
dr["StepName_S2"] = e.Row_DAT.Field<string>("StepName_S2");
|
||||
dr["StepName_S3"] = e.Row_DAT.Field<string>("StepName_S3");
|
||||
dr["StepID_S1"] = e.Row_DAT.Field<string>("StepID_S1");
|
||||
dr["StepID_S2"] = e.Row_DAT.Field<string>("StepID_S2");
|
||||
dr["StepID_S3"] = e.Row_DAT.Field<string>("StepID_S3");
|
||||
dr.EndEdit();
|
||||
|
||||
Grid_data.ItemsSource = dat.DefaultView;
|
||||
|
||||
@@ -74,6 +74,14 @@
|
||||
|
||||
</StackPanel>
|
||||
<StackPanel Grid.Row="1" Height="60" Background="#FF00204E" Orientation="Horizontal" HorizontalAlignment="Right">
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Plan" IsEnabled="{Binding USER_Capacity[5]}">
|
||||
<StackPanel Orientation="Horizontal" >
|
||||
<materialDesign:PackIcon Kind="MoonNew" Width="40" Height="30" Margin="10" VerticalAlignment="Center" Foreground="#FF1368BD"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.Plan}" VerticalAlignment="Center" Margin="20 10" Foreground="White"/>
|
||||
</StackPanel>
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_New" x:Name="Quit" IsEnabled="{Binding USER_Capacity[5]}">
|
||||
<StackPanel Orientation="Horizontal" >
|
||||
|
||||
@@ -42,6 +42,7 @@ using System.Windows.Markup;
|
||||
using System.Collections.ObjectModel;
|
||||
using SkiaSharp;
|
||||
using System.Windows.Threading;
|
||||
using SunlightCentralizedControlManagement_SCCM_.ConvertMoels;
|
||||
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
@@ -59,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;
|
||||
@@ -70,6 +69,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
minDate = DateTime.Now.Date;
|
||||
maxDate = minDate.AddDays(1);
|
||||
//添加表右键功能
|
||||
ganttTaskContextMenuItems.Add(new ContextMenuItem(DyelotClicked, Properties.Resources.Dyelot + "..."));
|
||||
ganttTaskContextMenuItems.Add(new ContextMenuItem(ViewClicked, Properties.Resources.View + "..."));
|
||||
ganttTaskContextMenuItems.Add(new ContextMenuItem(DelayedClicked, Properties.Resources.State + "..."));
|
||||
ganttTaskContextMenuItems.Add(new ContextMenuItem(EditClicked, Properties.Resources.edit + "..."));
|
||||
@@ -82,12 +82,9 @@ 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();
|
||||
@@ -120,10 +117,22 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
{
|
||||
Start = DateTime.Parse(dataRows[j].Field<string>("StartTime")),
|
||||
End = DateTime.Parse(dataRows[j].Field<string>("EndTime")),
|
||||
Name = Properties.Resources.ProcessName + ";" + dataRows[j].Field<string>("ProgramName"),
|
||||
Name = Properties.Resources.ProcessName + ": " + dataRows[j].Field<string>("ProgramName"),
|
||||
Background = colorBackground,
|
||||
Status = colorStatus,
|
||||
ID = dataRows[j].Field<string>("WorkOrder"),
|
||||
WorkOrder = dataRows[j].Field<string>("WorkOrder").ToString(),
|
||||
ID = Properties.Resources.WorkOrder + ": " + dataRows[j].Field<string>("WorkOrder").ToString(),
|
||||
Dyelot = Properties.Resources.Dyelot + ": " + dataRows[j].Field<string>("Dyelot"),
|
||||
Remark = Properties.Resources.Remark + ": " + dataRows[j].Field<string>("Remark"),
|
||||
ColorNumber = Properties.Resources.ColorNumber + ": " + dataRows[j].Field<string>("ColorNumber"),
|
||||
ColorName = Properties.Resources.ColorName + ": " + dataRows[j].Field<string>("ColorName"),
|
||||
Client = Properties.Resources.Client + ": " + dataRows[j].Field<string>("Client"),
|
||||
ClothSpecies = Properties.Resources.ClothSpecies + ": " + dataRows[j].Field<string>("ClothSpecies"),
|
||||
ClothWeight = Properties.Resources.ClothWeight + ": " + dataRows[j].Field<string>("ClothWeight"),
|
||||
BathRatio = Properties.Resources.BathRatio + ": " + dataRows[j].Field<string>("BathRatio"),
|
||||
Total = Properties.Resources.Total + ": " + dataRows[j].Field<string>("Total"),
|
||||
USER = Properties.Resources.USER + ": " + dataRows[j].Field<string>("user"),
|
||||
STATE = Properties.Resources.State + ": " +StatenClassConvert.Convert( dataRows[j].Field<Int32 >("State").ToString()),
|
||||
TaskProgressVisibility = System.Windows.Visibility.Hidden
|
||||
});
|
||||
}
|
||||
@@ -133,11 +142,13 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
{
|
||||
Picture.Content = null;
|
||||
Picture.Width = 600;
|
||||
Picture.Content = new ProductionPlanningEdit(ganttTask.ID,false);
|
||||
Picture.Content = new ProductionPlanningEdit(ganttTask.WorkOrder,false);
|
||||
}
|
||||
private void AdvanceClicked(GanttTask ganttTask)
|
||||
private void DyelotClicked(GanttTask ganttTask)//领料单查看
|
||||
{
|
||||
|
||||
UserMessage userMessage = new UserMessage();
|
||||
userMessage.Dyelots(ganttTask.WorkOrder);
|
||||
userMessage.ShowDialog();
|
||||
}
|
||||
private void DelayedClicked(GanttTask ganttTask)
|
||||
{
|
||||
@@ -147,11 +158,8 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
{
|
||||
if (MainWindowViewModel.USER_Capacity[6])
|
||||
{
|
||||
SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
|
||||
SQLiteHelpers.Open(); //打开数据库
|
||||
DataTable WorkOrder_dt = SQLiteHelpers.ExecuteDataSet(
|
||||
"select * from WorkOrder where WorkOrder='" + ganttTask.ID + "'Order by StartTime", null).Tables[0]; //读取表写入缓存
|
||||
SQLiteHelpers.Close();
|
||||
DataTable WorkOrder_dt = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet(
|
||||
"select * from WorkOrder where WorkOrder='" + ganttTask.WorkOrder + "'Order by StartTime", null).Tables[0]; //读取表写入缓存
|
||||
|
||||
if (DateTime.Now > DateTime.Parse(WorkOrder_dt.Select().First().Field<object>("EndTime").ToString()))
|
||||
{
|
||||
@@ -164,7 +172,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
{
|
||||
Picture.Content = null;
|
||||
Picture.Width = 600;
|
||||
Picture.Content = new ProductionPlanningEdit(ganttTask.ID, true);
|
||||
Picture.Content = new ProductionPlanningEdit(ganttTask.WorkOrder, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -181,10 +189,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("WorkOrder", "WorkOrder='" + ganttTask.ID + "'", null);
|
||||
SQLiteHelpers.Close();
|
||||
MainWindowViewModel.SQLiteHelpers.Delete("WorkOrder", "WorkOrder='" + ganttTask.WorkOrder + "'", null);
|
||||
MainWindowViewModel.SQLiteHelpers.Delete("WorkOrderSteps", "WorkOrder='" + ganttTask.WorkOrder + "'", null);
|
||||
GanttChartNEW();
|
||||
}
|
||||
}
|
||||
@@ -216,6 +222,12 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
else
|
||||
return new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Transparent);
|
||||
}
|
||||
private void ListViewItem_Plan(object sender, System.Windows.Input.MouseButtonEventArgs e)//计划事件
|
||||
{
|
||||
Picture.Content = null;
|
||||
Picture.Width = 1100;
|
||||
Picture.Content = new DyeingPlanView();
|
||||
}
|
||||
private void ListViewItem_New(object sender, System.Windows.Input.MouseButtonEventArgs e)//新建事件
|
||||
{
|
||||
Picture.Content = null;
|
||||
@@ -225,12 +237,9 @@ 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(
|
||||
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)
|
||||
{
|
||||
@@ -271,7 +280,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
{
|
||||
DispatcherTimer timer1s = new DispatcherTimer//初始化循环,每1秒调用一次Tick
|
||||
{
|
||||
Interval = TimeSpan.FromSeconds(1)//秒
|
||||
Interval = TimeSpan.FromSeconds(5)//秒
|
||||
};
|
||||
timer1s.Tick += Tick_Event_1S;
|
||||
timer1s.Start();
|
||||
@@ -279,11 +288,11 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
public static bool UI;
|
||||
void Tick_Event_1S(object sender, EventArgs e)//Tick_Event周期执行事件1S
|
||||
{
|
||||
if (UI)
|
||||
{
|
||||
// if (UI)
|
||||
// {
|
||||
GanttChartNEW();
|
||||
UI= false;
|
||||
}
|
||||
// UI= false;
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -65,7 +65,7 @@
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_edit" IsEnabled="False" x:Name="edit">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_edit" IsHitTestVisible="False" x:Name="edit">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<materialDesign:PackIcon Kind="Edit" Width="40" Height="30" Margin="10" VerticalAlignment="Center" Foreground="#FF1368BD"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.edit}" VerticalAlignment="Center" Margin="20 10" Foreground="White"/>
|
||||
@@ -73,7 +73,7 @@
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Rename" IsEnabled="False" x:Name="Rename">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Rename" IsHitTestVisible="False" x:Name="Rename">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<materialDesign:PackIcon Kind="Rename" Width="40" Height="30" Margin="10" VerticalAlignment="Center" Foreground="#FF1368BD"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.Rename}" VerticalAlignment="Center" Margin="20 10" Foreground="White"/>
|
||||
@@ -81,7 +81,7 @@
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Remark" IsEnabled="False" x:Name="Remark">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Remark" IsHitTestVisible="False" x:Name="Remark">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<materialDesign:PackIcon Kind="Note" Width="40" Height="30" Margin="10" VerticalAlignment="Center" Foreground="#FF1368BD"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.Remark}" VerticalAlignment="Center" Margin="20 10" Foreground="White"/>
|
||||
@@ -89,7 +89,7 @@
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Delete" IsEnabled="False" x:Name="Delete">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Delete" IsHitTestVisible="False" x:Name="Delete">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<materialDesign:PackIcon Kind="Delete" Width="40" Height="30" Margin="10" VerticalAlignment="Center" Foreground="#FF1368BD"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.Delete}" VerticalAlignment="Center" Margin="20 10" Foreground="White"/>
|
||||
|
||||
@@ -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;
|
||||
@@ -18,26 +19,28 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
InitializeComponent();
|
||||
Programgroup_sql();
|
||||
|
||||
string[] group_data = { "en-US", "zh-CN", "zh-TW" };
|
||||
Group.ItemsSource = group_data;
|
||||
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; //转换显示计划表
|
||||
|
||||
SQLiteHelpers.Close(); //关闭连接
|
||||
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++)
|
||||
{
|
||||
result.Add (GROUP.Rows[i][1].ToString());
|
||||
}
|
||||
Group.ItemsSource = result.ToArray();
|
||||
}
|
||||
|
||||
public static string Programgroup_Numder { get; set; }
|
||||
@@ -51,10 +54,10 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
Programgroup_ID = (Grid.Columns[0].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第0列,
|
||||
Programgroup_Numder = (Grid.Columns[1].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第1列,
|
||||
}
|
||||
edit.IsEnabled = true;
|
||||
Rename.IsEnabled = true;
|
||||
Remark.IsEnabled = true;
|
||||
Delete.IsEnabled = true;
|
||||
edit.IsHitTestVisible = true;
|
||||
Rename.IsHitTestVisible = true;
|
||||
Remark.IsHitTestVisible = true;
|
||||
Delete.IsHitTestVisible = true;
|
||||
}
|
||||
|
||||
private void Grid_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)//双击表格编辑事件
|
||||
@@ -77,45 +80,42 @@ 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);
|
||||
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(); //关闭连接
|
||||
MainWindowViewModel.SQLiteHelpers.InsertData("ProgramName", Program_new);// 执行插入
|
||||
|
||||
Programgroup_Numder = VALUE;
|
||||
Programgroup_ID = ID;
|
||||
Programgroup_Numder = VALUE;
|
||||
Programgroup_ID = ID;
|
||||
|
||||
Programgroup_sql();
|
||||
Programgroup_sql();
|
||||
}
|
||||
|
||||
private void ListViewItem_edit(object sender, System.Windows.Input.MouseButtonEventArgs e)//编辑事件
|
||||
{
|
||||
edit.IsEnabled = false;
|
||||
Rename.IsEnabled = false;
|
||||
Remark.IsEnabled = false;
|
||||
Delete.IsEnabled = false;
|
||||
edit.IsHitTestVisible = false;
|
||||
Rename.IsHitTestVisible = false;
|
||||
Remark.IsHitTestVisible = false;
|
||||
Delete.IsHitTestVisible = false;
|
||||
if (Programgroup_ID == null) return;
|
||||
container.Content = new ProgramstepsView();
|
||||
}
|
||||
|
||||
private void ListViewItem_Rename(object sender, System.Windows.Input.MouseButtonEventArgs e)//重命名
|
||||
{
|
||||
edit.IsEnabled = false;
|
||||
Rename.IsEnabled = false;
|
||||
Remark.IsEnabled = false;
|
||||
Delete.IsEnabled = false;
|
||||
edit.IsHitTestVisible = false;
|
||||
Rename.IsHitTestVisible = false;
|
||||
Remark.IsHitTestVisible = false;
|
||||
Delete.IsHitTestVisible = false;
|
||||
if (Programgroup_ID == null) return;
|
||||
InputBox frm = new InputBox();
|
||||
frm.Accept += new EventHandler(InputBox_Rename_accept);
|
||||
@@ -129,11 +129,13 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
string VALUE = frm.InputValue;
|
||||
Dictionary<string, object> Program_Rename = new Dictionary<string, object>();//缓存函数
|
||||
Program_Rename.Add("ProgramName", VALUE);
|
||||
Program_Rename.Add("Groups", Group.Text);
|
||||
MainWindowViewModel.SQLiteHelpers.Update("ProgramName", Program_Rename, "ProgramID='" + Programgroup_ID + "'", null);
|
||||
|
||||
SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
|
||||
SQLiteHelpers.Open(); //打开数据库
|
||||
SQLiteHelpers.Update("ProgramName", Program_Rename, "ProgramID='" + Programgroup_ID + "'", null);
|
||||
SQLiteHelpers.Close(); //关闭连接
|
||||
|
||||
Dictionary<string, object> Program_Steps = new Dictionary<string, object>();//缓存函数
|
||||
Program_Steps.Add("Program", VALUE);
|
||||
MainWindowViewModel.SQLiteHelpers.Update("ProgramSteps", Program_Steps, "ProgramID='" + Programgroup_ID + "'", null);
|
||||
|
||||
Programgroup_sql();
|
||||
Programgroup_Numder = null;
|
||||
@@ -142,10 +144,10 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
|
||||
private void ListViewItem_Remark(object sender, System.Windows.Input.MouseButtonEventArgs e)//备注
|
||||
{
|
||||
edit.IsEnabled = false;
|
||||
Rename.IsEnabled = false;
|
||||
Remark.IsEnabled = false;
|
||||
Delete.IsEnabled = false;
|
||||
edit.IsHitTestVisible = false;
|
||||
Rename.IsHitTestVisible = false;
|
||||
Remark.IsHitTestVisible = false;
|
||||
Delete.IsHitTestVisible = false;
|
||||
if (Programgroup_ID == null) return;
|
||||
InputBox frm = new InputBox();
|
||||
frm.Accept += new EventHandler(InputBox_Remark_accept);
|
||||
@@ -160,10 +162,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;
|
||||
@@ -172,20 +171,18 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
|
||||
private void ListViewItem_Delete(object sender, System.Windows.Input.MouseButtonEventArgs e)//删除
|
||||
{
|
||||
edit.IsEnabled = false;
|
||||
Rename.IsEnabled = false;
|
||||
Remark.IsEnabled = false;
|
||||
Delete.IsEnabled = false;
|
||||
edit.IsHitTestVisible = false;
|
||||
Rename.IsHitTestVisible = false;
|
||||
Remark.IsHitTestVisible = false;
|
||||
Delete.IsHitTestVisible = false;
|
||||
if (Programgroup_Numder == null) return;
|
||||
///弹窗提示确认删除
|
||||
if (System.Windows.Forms.MessageBox.Show(Properties.Resources.Confirm + Properties.Resources.Delete + Programgroup_Numder, "Delete ",
|
||||
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.Close();
|
||||
MainWindowViewModel.SQLiteHelpers.Delete("ProgramName", "ProgramID='" + Programgroup_ID + "'", null);
|
||||
MainWindowViewModel.SQLiteHelpers.Delete("ProgramSteps", "ProgramID='" + Programgroup_ID + "'", null);
|
||||
Programgroup_sql();
|
||||
}
|
||||
Programgroup_Numder = null;
|
||||
|
||||
@@ -11,18 +11,24 @@
|
||||
d:DesignHeight="630" d:DesignWidth="1280">
|
||||
<UserControl.Resources>
|
||||
<ConvertMoels:RowToIndexConverter x:Key="RowToIndexConverter"/>
|
||||
</UserControl.Resources>
|
||||
<ConvertMoels:StatexmlConvert x:Key="StatexmlConvert"/>
|
||||
<ConvertMoels:StateToColorConvert x:Key="StateToColorConvert"/>
|
||||
<ConvertMoels:BoolToVisidilityConvert x:Key="BoolToVisidilityConvert"/>
|
||||
<ConvertMoels:StatenToImageConvert x:Key="StatenToImageConvert"/>
|
||||
</UserControl.Resources>
|
||||
<Grid>
|
||||
<DataGrid x:Name="Grid" AlternationCount="2" IsReadOnly="True" d:ItemsSource="{d:SampleData ItemCount=90}"
|
||||
PreviewMouseLeftButtonUp="Grid_PreviewMouseLeftButtonUp" MouseDoubleClick="Grid_MouseDoubleClick"
|
||||
Background="White" HorizontalGridLinesBrush="#FFC9C9C9" VerticalGridLinesBrush="#FFC9C9C9"
|
||||
GridLinesVisibility="All" ColumnHeaderHeight="40" HorizontalContentAlignment="Right" FontSize="15"
|
||||
Grid.ColumnSpan="2" CanUserResizeRows="False" AutoGenerateColumns="False" MinColumnWidth="30"
|
||||
CanUserAddRows="False" CanUserDeleteRows="False" HeadersVisibility ="Column" SelectionMode="Single"
|
||||
Margin="0,0,0,60">
|
||||
<DataGrid x:Name="Grid_step" AlternationCount="2" MouseDoubleClick="Grid_MouseDoubleClick"
|
||||
MouseLeftButtonUp="Grid_PreviewMouseLeftButtonUp"
|
||||
d:ItemsSource="{d:SampleData ItemCount=90}" AutoGenerateColumns="False" MinColumnWidth="30"
|
||||
HorizontalGridLinesBrush="#FFC9C9C9" VerticalGridLinesBrush="#FFC9C9C9" Background="White"
|
||||
GridLinesVisibility="All" ColumnHeaderHeight="40" HorizontalContentAlignment="Right" BorderBrush="{x:Null}"
|
||||
CanUserReorderColumns="False" CanUserSortColumns="False" CanUserResizeRows="False" CanUserResizeColumns="False"
|
||||
CanUserDeleteRows="False" SelectionMode="Single" FontSize="15" Focusable="True" CanUserAddRows="True">
|
||||
<DataGrid.RowStyle >
|
||||
<Style TargetType="{x:Type DataGridRow}">
|
||||
<Setter Property="Height" Value="30" />
|
||||
<Setter Property="IsHitTestVisible" Value="{Binding DataContext.IsInteractive,
|
||||
RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
|
||||
<Setter Property="Height" Value="100" />
|
||||
<Setter Property="FontSize" Value="25" />
|
||||
<Style.Triggers>
|
||||
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
|
||||
@@ -32,42 +38,115 @@
|
||||
<Setter Property="Background" Value="#FFF0F0F0" />
|
||||
</Trigger>
|
||||
<Trigger Property="IsMouseOver" Value="False"/>
|
||||
<DataTrigger Binding="{Binding RUN}" Value="1">
|
||||
<Setter Property="Background" Value="#FF00D6FF"/>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding RUN}" Value="2">
|
||||
<Setter Property="Background" Value="Yellow"/>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding RUN}" Value="9">
|
||||
<Setter Property="Background" Value="Red"/>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</DataGrid.RowStyle>
|
||||
<DataGrid.CellStyle>
|
||||
<Style TargetType="DataGridCell">
|
||||
<Style TargetType="{x:Type DataGridCell}">
|
||||
<Setter Property="BorderThickness" Value="0"/>
|
||||
<Setter Property="MinWidth" Value="20"/>
|
||||
<Style.Triggers>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Setter Property="Background" Value="#FFC0C0C0"/>
|
||||
<Setter Property="BorderBrush" Value="#FFC0C0C0"/>
|
||||
<Setter Property="Background" Value="#FF00D6FF"/>
|
||||
<Setter Property="BorderBrush" Value="#FF00D6FF"/>
|
||||
<Setter Property="Foreground" Value="Black"/>
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</DataGrid.CellStyle>
|
||||
|
||||
<DataGrid.Columns>
|
||||
<!--列信息绑定-->
|
||||
<DataGridTextColumn Binding="{Binding ProgramID}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Program}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Step}" Binding="{Binding Step}" Width="60" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Code}" Width="100" Binding="{Binding StepID}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Directives}" Width="300" Binding="{Binding StepName}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.ParameterSet}" Width="*" Binding="{Binding ParameterName}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Step}" Binding="{Binding Step}"
|
||||
Width="80" IsReadOnly="True">
|
||||
<DataGridTextColumn.ElementStyle>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
<Setter Property="HorizontalAlignment" Value="Center"/>
|
||||
</Style>
|
||||
</DataGridTextColumn.ElementStyle>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Code}" Width="0" MinWidth="0"
|
||||
MaxWidth="0" Binding="{Binding StepID}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Directives}" Width="0" MinWidth="0"
|
||||
MaxWidth="0" Binding="{Binding StepName}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.ParameterSet}" Width="0" MinWidth="0"
|
||||
MaxWidth="0" Binding="{Binding ParameterName}" IsReadOnly="True"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter1}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter2}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter3}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter4}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter5}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter6}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter7}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter8}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter9}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding Parameter10}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTextColumn Binding="{Binding StepTime}" Width="0" MinWidth="0" MaxWidth="0"/>
|
||||
<DataGridTemplateColumn Header="{x:Static lang:Resources.Directives}" Width="100" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image Source="{Binding Path=StepID,Converter={StaticResource StatenToImageConvert}}" Height="100" Width="100"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="{x:Static lang:Resources.Directives}" Width="600" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel>
|
||||
<Border BorderBrush="#FFC9C9C9" BorderThickness="0,0,0,0.5">
|
||||
<TextBlock Height="50" >
|
||||
<Run Text="{x:Static lang:Resources.Function}"/>
|
||||
<Run Text=":"/>
|
||||
<Run Text="{Binding StepName}"/>
|
||||
</TextBlock>
|
||||
</Border>
|
||||
<Border BorderBrush="#FFC9C9C9" BorderThickness="0,0.5,0,0">
|
||||
<TextBlock Height="50" >
|
||||
<Run Text="{x:Static lang:Resources.ParameterSet}"/>
|
||||
<Run Text=":"/>
|
||||
<Run Text="{Binding ParameterName}"/>
|
||||
</TextBlock>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="{x:Static lang:Resources.Subroutine}" Width="100" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image Source="{Binding Path=StepID_S1,Converter={StaticResource StatenToImageConvert}}" Height="100" Width="100"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="{x:Static lang:Resources.Subroutine}" Width="100" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image Source="{Binding Path=StepID_S2,Converter={StaticResource StatenToImageConvert}}" Height="100" Width="100"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="{x:Static lang:Resources.Subroutine}" Width="100" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image Source="{Binding Path=StepID_S3 ,Converter={StaticResource StatenToImageConvert}}" Height="100" Width="100"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTextColumn Header="{x:Static lang:Resources.Remark}" Binding="{Binding Remark}"
|
||||
Width="*" IsReadOnly="True">
|
||||
<DataGridTextColumn.ElementStyle>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
<Setter Property="HorizontalAlignment" Value="Center"/>
|
||||
<Setter Property="TextWrapping" Value="Wrap"/>
|
||||
<Setter Property="TextTrimming" Value="CharacterEllipsis"/>
|
||||
</Style>
|
||||
</DataGridTextColumn.ElementStyle>
|
||||
</DataGridTextColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
<StackPanel x:Name="scr" VerticalAlignment="Bottom" Height="60" Background="#FF00204E" Orientation="Horizontal" Margin="0,0,400,0">
|
||||
@@ -80,7 +159,7 @@
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_edit" IsEnabled="False" x:Name="edit">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_edit" IsHitTestVisible="False" x:Name="edit">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<materialDesign:PackIcon Kind="Edit" Width="40" Height="30" Margin="10" VerticalAlignment="Center" Foreground="#FF1368BD"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.edit}" VerticalAlignment="Center" Margin="20 10" Foreground="White"/>
|
||||
@@ -88,7 +167,7 @@
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Insert" IsEnabled="False" x:Name="Insert">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Insert" IsHitTestVisible="False" x:Name="Insert">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<materialDesign:PackIcon Kind="InsertComment" Width="40" Height="30" Margin="10" VerticalAlignment="Center" Foreground="#FF1368BD"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.Insert}" VerticalAlignment="Center" Margin="20 10" Foreground="White"/>
|
||||
@@ -104,7 +183,7 @@
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Delete" IsEnabled="False" x:Name="Delete">
|
||||
<ListViewItem Width="150" MouseLeftButtonUp="ListViewItem_Delete" IsHitTestVisible="False" x:Name="Delete">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<materialDesign:PackIcon Kind="Delete" Width="40" Height="30" Margin="10" VerticalAlignment="Center" Foreground="#FF1368BD"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.Delete}" VerticalAlignment="Center" Margin="20 10" Foreground="White"/>
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
using SunlightCentralizedControlManagement_SCCM_.UserClass;
|
||||
|
||||
|
||||
using SunlightCentralizedControlManagement_SCCM_.UserClass;
|
||||
using SunlightCentralizedControlManagement_SCCM_.ViewModel;
|
||||
using SunlightCentralizedControlManagement_SCCM_.WindowsView;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@@ -24,6 +27,7 @@ using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
using System.Xml.Linq;
|
||||
using TouchSocket.Core;
|
||||
using static SunlightCentralizedControlManagement_SCCM_.UserClass.SqliteHelper;
|
||||
using static SunlightCentralizedControlManagement_SCCM_.WindowsView.ViewStep;
|
||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
|
||||
@@ -46,10 +50,8 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
Programgroup_sql();
|
||||
}
|
||||
|
||||
private SQLiteHelper SQLiteHelpers = null; //定义数据库
|
||||
private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db"; //数据库路径
|
||||
DataSet sql; //内存数据缓存
|
||||
|
||||
// DataSet sql; //内存数据缓存
|
||||
DataTable Step;
|
||||
string ProgramID;
|
||||
string ProgramNAME;
|
||||
string Numder = null;
|
||||
@@ -58,39 +60,26 @@ 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.Tables[0].Rows.Add(datatable_t);
|
||||
DataRow dr = sql.Tables[0].NewRow();//添加表数据
|
||||
dr["ProgramID"] = ProgramID;
|
||||
dr["Program"] = ProgramNAME;
|
||||
sql.Tables[0].Rows.Add(dr);
|
||||
Dat();
|
||||
if (sql != null) Grid.ItemsSource = sql.Tables[0].DefaultView; //转换显示计划表
|
||||
SQLiteHelpers.Close(); //关闭连接
|
||||
Step = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet(sql_script, null).Tables[0]; //读取计划表写入缓存
|
||||
Grid_step.ItemsSource = Step.DefaultView; //转换显示计划表
|
||||
}
|
||||
|
||||
public void Dat()//行号刷新
|
||||
public void Dat(DataTable dat)//行号刷新
|
||||
{
|
||||
int a = sql.Tables[0].Rows.Count;
|
||||
int a = dat.Rows.Count;
|
||||
for (int i = 0; i < a; i++)
|
||||
{
|
||||
DataRow dr = sql.Tables[0].Rows[i];
|
||||
DataRow dr = dat.Rows[i];
|
||||
dr.BeginEdit();
|
||||
dr["Step"] = i + 1;
|
||||
dr.EndEdit();
|
||||
}
|
||||
dat.AcceptChanges();
|
||||
}
|
||||
|
||||
private void UserControl_Loaded(object sender, RoutedEventArgs e)//打开页面时的操作
|
||||
{
|
||||
if (ID == null) ID = sql.Tables[0].Rows.Count.ToString();
|
||||
Grid.SelectedIndex = Convert.ToInt32(ID)-1;
|
||||
}
|
||||
public static T GetVisualChild<T>(Visual parent) where T : Visual
|
||||
{
|
||||
@@ -114,43 +103,83 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
|
||||
private void Grid_PreviewMouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)//表格选择事件
|
||||
{
|
||||
edit.IsEnabled = true;
|
||||
Insert.IsEnabled = true;
|
||||
Delete.IsEnabled = true;
|
||||
int rownum = Grid.SelectedIndex;//获取鼠标选中行并定义变量
|
||||
edit.IsHitTestVisible = true;
|
||||
Insert.IsHitTestVisible = true;
|
||||
Delete.IsHitTestVisible = true;
|
||||
int rownum = Grid_step.SelectedIndex;//获取鼠标选中行并定义变量
|
||||
if (rownum != -1)//判断鼠标定位是否有效
|
||||
{
|
||||
ID = (Grid.Columns[2].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第0列,
|
||||
Numder = (Grid.Columns[3].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第1列,
|
||||
P1 = (Grid.Columns[6].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第6列,
|
||||
P2 = (Grid.Columns[7].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第7列,
|
||||
P3 = (Grid.Columns[8].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第8列,
|
||||
P4 = (Grid.Columns[9].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第9列,
|
||||
P5 = (Grid.Columns[10].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第10列,
|
||||
StepTime = (Grid.Columns[16].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//
|
||||
ID = (Grid_step.Columns[2].GetCellContent(Grid_step.Items[rownum]) as TextBlock).Text;//定位第0列,
|
||||
Numder = (Grid_step.Columns[3].GetCellContent(Grid_step.Items[rownum]) as TextBlock).Text;//定位第1列,
|
||||
P1 = (Grid_step.Columns[6].GetCellContent(Grid_step.Items[rownum]) as TextBlock).Text;//定位第6列,
|
||||
P2 = (Grid_step.Columns[7].GetCellContent(Grid_step.Items[rownum]) as TextBlock).Text;//定位第7列,
|
||||
P3 = (Grid_step.Columns[8].GetCellContent(Grid_step.Items[rownum]) as TextBlock).Text;//定位第8列,
|
||||
P4 = (Grid_step.Columns[9].GetCellContent(Grid_step.Items[rownum]) as TextBlock).Text;//定位第9列,
|
||||
P5 = (Grid_step.Columns[10].GetCellContent(Grid_step.Items[rownum]) as TextBlock).Text;//定位第10列,
|
||||
StepTime = (Grid_step.Columns[16].GetCellContent(Grid_step.Items[rownum]) as TextBlock).Text;//
|
||||
}
|
||||
}
|
||||
|
||||
private void Grid_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)//双击表格编辑事件
|
||||
{
|
||||
edit.IsEnabled = true;
|
||||
Insert.IsEnabled = true;
|
||||
Delete.IsEnabled = true;
|
||||
int rownum = Grid.SelectedIndex;//获取鼠标选中行并定义变量
|
||||
edit.IsHitTestVisible = true;
|
||||
Insert.IsHitTestVisible = true;
|
||||
Delete.IsHitTestVisible = true;
|
||||
int rownum = Grid_step.SelectedIndex;//获取鼠标选中行并定义变量
|
||||
if (rownum != -1)//判断鼠标定位是否有效
|
||||
{
|
||||
ID = (Grid.Columns[2].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第0列,
|
||||
Numder = (Grid.Columns[3].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第1列,
|
||||
P1 = (Grid.Columns[6].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第6列,
|
||||
P2 = (Grid.Columns[7].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第7列,
|
||||
P3 = (Grid.Columns[8].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第8列,
|
||||
P4 = (Grid.Columns[9].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第9列,
|
||||
P5 = (Grid.Columns[10].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第10列,
|
||||
StepTime = (Grid.Columns[16].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//
|
||||
ID = (Grid_step.Columns[2].GetCellContent(Grid_step.Items[rownum]) as TextBlock).Text;//定位第0列,
|
||||
Numder = (Grid_step.Columns[3].GetCellContent(Grid_step.Items[rownum]) as TextBlock).Text;//定位第1列,
|
||||
P1 = (Grid_step.Columns[6].GetCellContent(Grid_step.Items[rownum]) as TextBlock).Text;//定位第6列,
|
||||
P2 = (Grid_step.Columns[7].GetCellContent(Grid_step.Items[rownum]) as TextBlock).Text;//定位第7列,
|
||||
P3 = (Grid_step.Columns[8].GetCellContent(Grid_step.Items[rownum]) as TextBlock).Text;//定位第8列,
|
||||
P4 = (Grid_step.Columns[9].GetCellContent(Grid_step.Items[rownum]) as TextBlock).Text;//定位第9列,
|
||||
P5 = (Grid_step.Columns[10].GetCellContent(Grid_step.Items[rownum]) as TextBlock).Text;//定位第10列,
|
||||
StepTime = (Grid_step.Columns[16].GetCellContent(Grid_step.Items[rownum]) as TextBlock).Text;//
|
||||
|
||||
if (string.IsNullOrEmpty(Numder)) { Numder = null; P1 = "0"; P2 = "0"; P3 = "0"; P4 = "0"; P5 = "0"; }
|
||||
if (ID == null) ID = sql.Tables[0].Rows.Count.ToString();
|
||||
ViewStep viewstop = new ViewStep(Numder, P1, P2, P3, P4, P5);
|
||||
if (string.IsNullOrEmpty(ID))
|
||||
{
|
||||
DataRow dr = Step.NewRow();//添加表数据
|
||||
dr["ProgramID"] = ProgramID;
|
||||
dr["Program"] = ProgramNAME;
|
||||
dr["Parameter1"] = 0;
|
||||
dr["Parameter2"] = 0;
|
||||
dr["Parameter3"] = 0;
|
||||
dr["Parameter4"] = 0;
|
||||
dr["Parameter5"] = 0;
|
||||
dr["Parameter6"] = 0;
|
||||
dr["Parameter7"] = 0;
|
||||
dr["Parameter8"] = 0;
|
||||
dr["Parameter9"] = 0;
|
||||
dr["Parameter10"] = 0;
|
||||
dr["Parameter1_S1"] = 0;
|
||||
dr["Parameter2_S1"] = 0;
|
||||
dr["Parameter3_S1"] = 0;
|
||||
dr["Parameter4_S1"] = 0;
|
||||
dr["Parameter5_S1"] = 0;
|
||||
dr["Parameter1_S2"] = 0;
|
||||
dr["Parameter2_S2"] = 0;
|
||||
dr["Parameter3_S2"] = 0;
|
||||
dr["Parameter4_S2"] = 0;
|
||||
dr["Parameter5_S2"] = 0;
|
||||
dr["Parameter1_S3"] = 0;
|
||||
dr["Parameter2_S3"] = 0;
|
||||
dr["Parameter3_S3"] = 0;
|
||||
dr["Parameter4_S3"] = 0;
|
||||
dr["Parameter5_S3"] = 0;
|
||||
dr["StepName_S1"] = " ";
|
||||
dr["StepName_S2"] = " ";
|
||||
dr["StepName_S3"] = " ";
|
||||
dr["StepID_S1"] = "000";
|
||||
dr["StepID_S2"] = "000";
|
||||
dr["StepID_S3"] = "000";
|
||||
Step.Rows.InsertAt(dr, Step.Rows.Count);
|
||||
Dat(Step);
|
||||
ID = (Step.Rows.Count).ToString();
|
||||
}
|
||||
|
||||
ViewStep viewstop = new ViewStep(Numder, Step.Select("STEP = " + ID).First());
|
||||
viewstop.AddressUpdated += new ViewStep.AddressUpdateHandler(Address_ButtonClicked);
|
||||
viewstop.data = ID;
|
||||
viewstop.ShowDialog();
|
||||
@@ -164,46 +193,76 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
|
||||
private void ListViewItem_edit(object sender, System.Windows.Input.MouseButtonEventArgs e)//编辑事件
|
||||
{
|
||||
edit.IsEnabled = false;
|
||||
Insert.IsEnabled = false;
|
||||
Delete.IsEnabled = false;
|
||||
edit.IsHitTestVisible = false;
|
||||
Insert.IsHitTestVisible = false;
|
||||
Delete.IsHitTestVisible = false;
|
||||
if (string.IsNullOrEmpty(Numder)) { Numder = null; P1 = "0"; P2 = "0"; P3 = "0"; P4 = "0"; P5 = "0"; }
|
||||
if (ID == null) ID = sql.Tables[0].Rows.Count.ToString();
|
||||
ViewStep viewstop = new ViewStep(Numder, P1, P2, P3, P4, P5);
|
||||
if (string.IsNullOrEmpty(ID))
|
||||
{
|
||||
DataRow dr = Step.NewRow();//添加表数据
|
||||
dr["ProgramID"] = ProgramID;
|
||||
dr["Program"] = ProgramNAME;
|
||||
dr["Parameter1"] = 0;
|
||||
dr["Parameter2"] = 0;
|
||||
dr["Parameter3"] = 0;
|
||||
dr["Parameter4"] = 0;
|
||||
dr["Parameter5"] = 0;
|
||||
dr["Parameter6"] = 0;
|
||||
dr["Parameter7"] = 0;
|
||||
dr["Parameter8"] = 0;
|
||||
dr["Parameter9"] = 0;
|
||||
dr["Parameter10"] = 0;
|
||||
dr["Parameter1_S1"] = 0;
|
||||
dr["Parameter2_S1"] = 0;
|
||||
dr["Parameter3_S1"] = 0;
|
||||
dr["Parameter4_S1"] = 0;
|
||||
dr["Parameter5_S1"] = 0;
|
||||
dr["Parameter1_S2"] = 0;
|
||||
dr["Parameter2_S2"] = 0;
|
||||
dr["Parameter3_S2"] = 0;
|
||||
dr["Parameter4_S2"] = 0;
|
||||
dr["Parameter5_S2"] = 0;
|
||||
dr["Parameter1_S3"] = 0;
|
||||
dr["Parameter2_S3"] = 0;
|
||||
dr["Parameter3_S3"] = 0;
|
||||
dr["Parameter4_S3"] = 0;
|
||||
dr["Parameter5_S3"] = 0;
|
||||
dr["StepName_S1"] = " ";
|
||||
dr["StepName_S2"] = " ";
|
||||
dr["StepName_S3"] = " ";
|
||||
dr["StepID_S1"] = "000";
|
||||
dr["StepID_S2"] = "000";
|
||||
dr["StepID_S3"] = "000";
|
||||
Step.Rows.InsertAt(dr, Step.Rows.Count);
|
||||
Dat(Step);
|
||||
ID = Step.Rows.Count.ToString();
|
||||
}
|
||||
ViewStep viewstop = new ViewStep(Numder, Step.Select("STEP = " + ID).First());
|
||||
viewstop.AddressUpdated += new ViewStep.AddressUpdateHandler(Address_ButtonClicked);
|
||||
viewstop.data = ID;
|
||||
viewstop.ShowDialog();
|
||||
}
|
||||
private void Address_ButtonClicked(object sender, AddressUpdateEventArgs e)//编辑返回结果
|
||||
{
|
||||
int i = sql.Tables[0].Rows.Count;
|
||||
int n = StrToInt.To16Convert10(ID);
|
||||
if (i == n)
|
||||
{
|
||||
DataRow dr_ = sql.Tables[0].NewRow();//添加表数据
|
||||
dr_["ProgramID"] = ProgramID;
|
||||
dr_["Program"] = ProgramNAME;
|
||||
sql.Tables[0].Rows.Add(dr_);
|
||||
Dat();
|
||||
ID = (n + 1).ToString();
|
||||
}
|
||||
int i = Step.Rows.Count;
|
||||
int n = Convert.ToInt16(ID);
|
||||
|
||||
int steptime=0;//时间秒
|
||||
int steptime = 0;//时间秒
|
||||
string[] time_D = { "001", "013", "015", "017", "065" };
|
||||
string[] time_J = { "031", "093" };
|
||||
string[] time_T = { "054", "055","056" };
|
||||
string[] time_T = { "054", "055", "056" };
|
||||
foreach (var item in time_D)
|
||||
{
|
||||
if (item == e.StepID)
|
||||
{
|
||||
steptime = Convert.ToUInt16(e.P3)*60;
|
||||
steptime = Convert.ToUInt16(e.Row_DAT.Field<double>("Parameter3")) * 60;
|
||||
}
|
||||
}
|
||||
foreach (var item in time_J)
|
||||
{
|
||||
if (item == e.StepID)
|
||||
{
|
||||
steptime = Convert.ToUInt16(e.P1) * 60;
|
||||
steptime = Convert.ToUInt16(e.Row_DAT.Field<double>("Parameter1")) * 60;
|
||||
}
|
||||
}
|
||||
foreach (var item in time_T)
|
||||
@@ -213,79 +272,126 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
steptime = 5;
|
||||
}
|
||||
}
|
||||
if (steptime==0)
|
||||
if (steptime == 0)
|
||||
{
|
||||
steptime = 300;
|
||||
}
|
||||
|
||||
|
||||
DataRow dr = sql.Tables[0].Rows[n - 1];
|
||||
DataRow dr = Step.Rows[n - 1];
|
||||
dr.BeginEdit();
|
||||
dr["StepID"] = e.StepID;
|
||||
dr["StepName"] = e.StepNAME;
|
||||
dr["ParameterName"] = e.PNAME;
|
||||
dr["Parameter1"] = e.P1;
|
||||
dr["Parameter2"] = e.P2;
|
||||
dr["Parameter3"] = e.P3;
|
||||
dr["Parameter4"] = e.P4;
|
||||
dr["Parameter5"] = e.P5;
|
||||
dr["StepTime"] =steptime;//
|
||||
dr["Parameter1"] = e.Row_DAT.Field<double>("Parameter1");
|
||||
dr["Parameter2"] = e.Row_DAT.Field<double>("Parameter2");
|
||||
dr["Parameter3"] = e.Row_DAT.Field<double>("Parameter3");
|
||||
dr["Parameter4"] = e.Row_DAT.Field<double>("Parameter4");
|
||||
dr["Parameter5"] = e.Row_DAT.Field<double>("Parameter5");
|
||||
dr["Parameter1_S1"] = e.Row_DAT.Field<double>("Parameter1_S1");
|
||||
dr["Parameter2_S1"] = e.Row_DAT.Field<double>("Parameter2_S1");
|
||||
dr["Parameter3_S1"] = e.Row_DAT.Field<double>("Parameter3_S1");
|
||||
dr["Parameter4_S1"] = e.Row_DAT.Field<double>("Parameter4_S1");
|
||||
dr["Parameter5_S1"] = e.Row_DAT.Field<double>("Parameter5_S1");
|
||||
dr["Parameter1_S2"] = e.Row_DAT.Field<double>("Parameter1_S2");
|
||||
dr["Parameter2_S2"] = e.Row_DAT.Field<double>("Parameter2_S2");
|
||||
dr["Parameter3_S2"] = e.Row_DAT.Field<double>("Parameter3_S2");
|
||||
dr["Parameter4_S2"] = e.Row_DAT.Field<double>("Parameter4_S2");
|
||||
dr["Parameter5_S2"] = e.Row_DAT.Field<double>("Parameter5_S2");
|
||||
dr["Parameter1_S3"] = e.Row_DAT.Field<double>("Parameter1_S3");
|
||||
dr["Parameter2_S3"] = e.Row_DAT.Field<double>("Parameter2_S3");
|
||||
dr["Parameter3_S3"] = e.Row_DAT.Field<double>("Parameter3_S3");
|
||||
dr["Parameter4_S3"] = e.Row_DAT.Field<double>("Parameter4_S3");
|
||||
dr["Parameter5_S3"] = e.Row_DAT.Field<double>("Parameter5_S3");
|
||||
dr["StepName_S1"] = e.Row_DAT.Field<string>("StepName_S1");
|
||||
dr["StepName_S2"] = e.Row_DAT.Field<string>("StepName_S2");
|
||||
dr["StepName_S3"] = e.Row_DAT.Field<string>("StepName_S3");
|
||||
dr["StepID_S1"] = e.Row_DAT.Field<string>("StepID_S1");
|
||||
dr["StepID_S2"] = e.Row_DAT.Field<string>("StepID_S2");
|
||||
dr["StepID_S3"] = e.Row_DAT.Field<string>("StepID_S3");
|
||||
dr["StepTime"] = steptime;//
|
||||
dr.EndEdit();
|
||||
|
||||
Grid.ItemsSource = sql.Tables[0].DefaultView;
|
||||
Grid_step.ItemsSource = Step.DefaultView;
|
||||
}
|
||||
|
||||
private void ListViewItem_Insert(object sender, System.Windows.Input.MouseButtonEventArgs e)//插入事件
|
||||
{
|
||||
edit.IsEnabled = false;
|
||||
Insert.IsEnabled = false;
|
||||
Delete.IsEnabled = false; int d = 0;
|
||||
edit.IsHitTestVisible = false;
|
||||
Insert.IsHitTestVisible = false;
|
||||
Delete.IsHitTestVisible = false;
|
||||
int d = 0;
|
||||
if (ID != null) { d = Convert.ToInt32(ID); } else { return; }
|
||||
DataRow dr = sql.Tables[0].NewRow();//添加表数据
|
||||
DataRow dr = Step.NewRow();//添加表数据
|
||||
dr["ProgramID"] = ProgramID;
|
||||
dr["Program"] = ProgramNAME;
|
||||
sql.Tables[0].Rows.InsertAt(dr, d - 1);
|
||||
dr["Parameter1"] = 0;
|
||||
dr["Parameter2"] = 0;
|
||||
dr["Parameter3"] = 0;
|
||||
dr["Parameter4"] = 0;
|
||||
dr["Parameter5"] = 0;
|
||||
dr["Parameter6"] = 0;
|
||||
dr["Parameter7"] = 0;
|
||||
dr["Parameter8"] = 0;
|
||||
dr["Parameter9"] = 0;
|
||||
dr["Parameter10"] = 0;
|
||||
dr["Parameter1_S1"] = 0;
|
||||
dr["Parameter2_S1"] = 0;
|
||||
dr["Parameter3_S1"] = 0;
|
||||
dr["Parameter4_S1"] = 0;
|
||||
dr["Parameter5_S1"] = 0;
|
||||
dr["Parameter1_S2"] = 0;
|
||||
dr["Parameter2_S2"] = 0;
|
||||
dr["Parameter3_S2"] = 0;
|
||||
dr["Parameter4_S2"] = 0;
|
||||
dr["Parameter5_S2"] = 0;
|
||||
dr["Parameter1_S3"] = 0;
|
||||
dr["Parameter2_S3"] = 0;
|
||||
dr["Parameter3_S3"] = 0;
|
||||
dr["Parameter4_S3"] = 0;
|
||||
dr["Parameter5_S3"] = 0;
|
||||
dr["StepName_S1"] = " ";
|
||||
dr["StepName_S2"] = " ";
|
||||
dr["StepName_S3"] = " ";
|
||||
dr["StepID_S1"] = "000";
|
||||
dr["StepID_S2"] = "000";
|
||||
dr["StepID_S3"] = "000";
|
||||
Step.Rows.InsertAt(dr, d - 1);
|
||||
ID = null;
|
||||
|
||||
Dat();
|
||||
Grid.ItemsSource = sql.Tables[0].DefaultView; //转换显示计划表
|
||||
Dat(Step);
|
||||
Grid_step.ItemsSource = Step.DefaultView; //转换显示计划表
|
||||
}
|
||||
|
||||
private void ListViewItem_Save(object sender, System.Windows.Input.MouseButtonEventArgs e)//保存事件
|
||||
{
|
||||
edit.IsEnabled = false;
|
||||
Insert.IsEnabled = false;
|
||||
Delete.IsEnabled = false;
|
||||
edit.IsHitTestVisible = false;
|
||||
Insert.IsHitTestVisible = false;
|
||||
Delete.IsHitTestVisible = 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();
|
||||
data_t = Step.Clone();
|
||||
|
||||
int a = sql.Tables[0].Rows.Count;
|
||||
for (int i = 0; i < a - 1; i++)
|
||||
int a = Step.Rows.Count;
|
||||
for (int i = 0; i < a ; i++)
|
||||
{
|
||||
data_t.Clear();//清空
|
||||
|
||||
DataRow dt = sql.Tables[0].Rows[i];//行转换
|
||||
DataRow dt = Step.Rows[i];//行转换
|
||||
DataRow dr = data_t.NewRow();
|
||||
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;
|
||||
int time =Convert.ToUInt16( Step.Compute("sum(StepTime)", ""))/60;
|
||||
string time_ =DateTime.Parse( TimeSpan.FromMinutes(time).ToString()).ToString("HH:mm");// DateTime.Parse(time.ToString()).ToString("HH:mm");
|
||||
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);
|
||||
@@ -295,20 +401,17 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
|
||||
private void ListViewItem_Delete(object sender, System.Windows.Input.MouseButtonEventArgs e)//删除事件
|
||||
{
|
||||
edit.IsEnabled = false;
|
||||
Insert.IsEnabled = false;
|
||||
Delete.IsEnabled = false;
|
||||
edit.IsHitTestVisible = false;
|
||||
Insert.IsHitTestVisible = false;
|
||||
Delete.IsHitTestVisible = false;
|
||||
|
||||
int d = 0;
|
||||
int a = sql.Tables[0].Rows.Count;
|
||||
|
||||
if (ID != null) { d = Convert.ToInt32(ID); } else { return; }
|
||||
if (a != d)//如果删除不是最后一行执行
|
||||
int a = Step.Rows.Count;
|
||||
int rownum = Grid_step.SelectedIndex;
|
||||
if (rownum >= 0 && rownum<a)
|
||||
{
|
||||
sql.Tables[0].Rows.RemoveAt(d - 1);
|
||||
|
||||
Dat();
|
||||
Grid.ItemsSource = sql.Tables[0].DefaultView; //转换显示计划表
|
||||
Step.Rows.RemoveAt(rownum);
|
||||
Dat(Step);
|
||||
Grid_step.ItemsSource = Step.DefaultView; //转换显示计划表
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,14 @@
|
||||
</StackPanel>
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem Height="60" MouseLeftButtonUp="ListViewItem_ConveyorCenters" VerticalAlignment="Center">
|
||||
<StackPanel Orientation="Horizontal" >
|
||||
<materialDesign:PackIcon Kind="Material" Width="40" Height="30" Margin="10" VerticalAlignment="Center"/>
|
||||
<TextBlock Text="{x:Static lang:Resources.ConveyorCenters}" VerticalAlignment="Center" Margin="20 10" Foreground="White"/>
|
||||
</StackPanel>
|
||||
</ListViewItem>
|
||||
</ListView>
|
||||
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
|
||||
<ListViewItem Height="60" MouseLeftButtonUp="ListViewItem_EngineerSet" VerticalAlignment="Center">
|
||||
<StackPanel Orientation="Horizontal" >
|
||||
|
||||
@@ -51,5 +51,10 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
{
|
||||
Picture.Content = new View.LogView();
|
||||
}
|
||||
|
||||
private void ListViewItem_ConveyorCenters(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
Picture.Content = new View.DispenseMachinesSet();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,9 +8,7 @@
|
||||
d:DesignHeight="450" d:DesignWidth="800">
|
||||
<Grid>
|
||||
<ScrollViewer Margin="0" VerticalScrollBarVisibility="Auto">
|
||||
<WrapPanel Orientation="Horizontal" x:Name="WholeView" Background="White">
|
||||
|
||||
</WrapPanel>
|
||||
<WrapPanel Orientation="Horizontal" x:Name="WholeView" Background="White"/>
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -55,15 +55,20 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
else
|
||||
{ inf[i].name.Background = new SolidColorBrush(Color.FromRgb(255, 0, 0)); }
|
||||
|
||||
inf[i].temp.Text = (Selet_Machines(MainWindowViewModel.Machines, "Temperature", i) + "°C").ToString();
|
||||
inf[i].Process.Text = Selet_Machines(MainWindowViewModel.Machines, "Process", i).ToString();
|
||||
inf[i].Step.Text = Selet_Machines(MainWindowViewModel.Machines, "Step", i).ToString();
|
||||
inf[i].Message.Text = Selet_Machines(MainWindowViewModel.Machines, "Message", i).ToString();
|
||||
inf[i].Orders.Text = Selet_Machines(MainWindowViewModel.Machines, "WorkOrder", i).ToString();
|
||||
inf[i].time.Text = Selet_Machines(MainWindowViewModel.Machines, "time", i).ToString();
|
||||
inf[i].temp.Text = Selet_Machines(MainWindowViewModel.Machines, "Temperature", i).ToString() + "°C";
|
||||
inf[i].Process.Text = (string)Selet_Machines(MainWindowViewModel.Machines, "Process", i);
|
||||
inf[i].Step.Text = (string)Selet_Machines(MainWindowViewModel.Machines, "Step", i);
|
||||
inf[i].Message.Text = (string)Selet_Machines(MainWindowViewModel.Machines, "Message", i);
|
||||
inf[i].Orders.Text = (string)Selet_Machines(MainWindowViewModel.Machines, "WorkOrder", i);
|
||||
inf[i].time.Text = (string)Selet_Machines(MainWindowViewModel.Machines, "time", i);
|
||||
|
||||
WholeView.Children.Add(inf[i]);
|
||||
}
|
||||
for (int i = 0; i < MainWindowViewModel.Machines.Rows.Count; i++)
|
||||
{
|
||||
DataRow[] rows= MainWindowViewModel.Whole_dat.Select("Machine='" + inf[i].name.Text+"'");
|
||||
inf[i].DataROW(rows);
|
||||
}
|
||||
|
||||
CountDown();
|
||||
}
|
||||
@@ -86,17 +91,20 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
}
|
||||
}
|
||||
|
||||
int t30S = 0;
|
||||
private void CountDown()
|
||||
{
|
||||
DispatcherTimer timer1s = new DispatcherTimer//初始化循环,每1秒调用一次Tick
|
||||
{
|
||||
Interval = TimeSpan.FromSeconds(1)//秒
|
||||
};
|
||||
timer1s.Tick += Tick_Event_1S;
|
||||
timer1s.Tick += Tick_Event_S;
|
||||
timer1s.Start();
|
||||
}//时间周期初始化
|
||||
void Tick_Event_1S(object sender, EventArgs e)//Tick_Event周期执行事件1S
|
||||
|
||||
void Tick_Event_S(object sender, EventArgs e)//Tick_Event周期执行事件1S
|
||||
{
|
||||
DateTime dateTime = DateTime.Now;
|
||||
for (int i = 0; i < MainWindowViewModel.Machines.Rows.Count; i++)
|
||||
{
|
||||
string State_ = Selet_Machines(MainWindowViewModel.Machines, "State", i).ToString();
|
||||
@@ -105,18 +113,30 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
|
||||
else if (State_ == "201")
|
||||
{ inf[i].name.Background = new SolidColorBrush(Color.FromRgb(0, 255, 0)); }
|
||||
else if (State_ == "202")
|
||||
{ inf[i].name.Background = new SolidColorBrush(Color.FromRgb(255, 255, 0)); }
|
||||
{ inf[i].name.Background = new SolidColorBrush(Color.FromRgb(0, 255, 0)); }
|
||||
else
|
||||
{ inf[i].name.Background = new SolidColorBrush(Color.FromRgb(255, 0, 0)); }
|
||||
inf[i].temp.Text = Selet_Machines(MainWindowViewModel.Machines, "Temperature", i).ToString() + "°C";
|
||||
inf[i].Process.Text = (string)Selet_Machines(MainWindowViewModel.Machines, "Process", i);
|
||||
inf[i].Step.Text = (string)Selet_Machines(MainWindowViewModel.Machines, "Step", i);
|
||||
inf[i].Message.Text = (string)Selet_Machines(MainWindowViewModel.Machines, "Message", i);
|
||||
inf[i].Orders.Text = (string)Selet_Machines(MainWindowViewModel.Machines, "WorkOrder", i);
|
||||
inf[i].time.Text = (string)Selet_Machines(MainWindowViewModel.Machines, "time", i);
|
||||
|
||||
inf[i].temp.Text = (Selet_Machines(MainWindowViewModel.Machines, "Temperature", i) + "°C").ToString();
|
||||
inf[i].Process.Text = Selet_Machines(MainWindowViewModel.Machines, "Process", i).ToString();
|
||||
inf[i].Step.Text = Selet_Machines(MainWindowViewModel.Machines, "Step", i).ToString();
|
||||
inf[i].Message.Text = Selet_Machines(MainWindowViewModel.Machines, "Message", i).ToString();
|
||||
inf[i].Orders.Text = Selet_Machines(MainWindowViewModel.Machines, "WorkOrder", i).ToString();
|
||||
inf[i].time.Text = Selet_Machines(MainWindowViewModel.Machines, "time", i).ToString();
|
||||
if ((t30S > 10)&&(State_!="800"))
|
||||
{
|
||||
t30S = 0;
|
||||
inf[i].DataAdd(dateTime,Convert.ToDouble( Selet_Machines(MainWindowViewModel.Machines, "Temperature", i)));
|
||||
|
||||
// DataRow whole_Dat = MainWindowViewModel.Whole_dat.NewRow();
|
||||
// whole_Dat["Machine"] = Selet_Machines(MainWindowViewModel.Machines, "NAME", i).ToString();
|
||||
// whole_Dat["DateTime"] = dateTime;
|
||||
// whole_Dat["DAT"] = (double)Selet_Machines(MainWindowViewModel.Machines, "Temperature", i);
|
||||
// MainWindowViewModel.Whole_dat.Rows.Add(whole_Dat);
|
||||
}
|
||||
|
||||
}
|
||||
t30S++;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -90,7 +90,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel
|
||||
CrosshairSnapEnabled = true,
|
||||
Position = LiveChartsCore.Measure.AxisPosition.End
|
||||
}, //液位轴
|
||||
new Axis //
|
||||
/* new Axis //
|
||||
{
|
||||
MinLimit =0,
|
||||
MaxLimit =14,
|
||||
@@ -106,10 +106,9 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel
|
||||
DrawTicksPath = true,
|
||||
CrosshairSnapEnabled = true,
|
||||
Position = LiveChartsCore.Measure.AxisPosition.End
|
||||
}, //PH轴
|
||||
},*/ //PH轴
|
||||
};
|
||||
|
||||
private static Random _r = new Random();
|
||||
private static ObservableCollection<DateTimePoint> MTT_values;
|
||||
private static ObservableCollection<DateTimePoint> MTL_values;
|
||||
private static ObservableCollection<DateTimePoint> MTH_values;
|
||||
@@ -121,86 +120,81 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel
|
||||
private static ObservableCollection<DateTimePoint> STLB_values;
|
||||
private static ObservableCollection<DateTimePoint> STTC_values;
|
||||
private static ObservableCollection<DateTimePoint> STLC_values;
|
||||
|
||||
private static SQLiteHelper SQLiteHelpers = null; //定义数据库
|
||||
private static string ChartAdress = Environment.CurrentDirectory + "\\DataBase\\Chart.db"; //数据库路径
|
||||
static DataTable CDB = new DataTable();
|
||||
private static int CDB_Count;//长度
|
||||
|
||||
public CurveDiagramViewModel()
|
||||
{
|
||||
Curve(CurveView.CurveDiagram);
|
||||
Curve(CurveDiagram.mode, CurveDiagram.mac, CurveDiagram.starT, CurveDiagram.endT, CurveDiagram.Curve);
|
||||
}
|
||||
public static void Curve(string SYSWorkNumder)
|
||||
public static void Curve(bool mode, string m, string s, string e, string w)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(SYSWorkNumder))
|
||||
if (mode)
|
||||
{
|
||||
SQLiteHelpers = new SQLiteHelper(ChartAdress); //数据库连接路径
|
||||
SQLiteHelpers.Open(); //打开数据库
|
||||
CDB = SQLiteHelpers.ExecuteDataSet("select * from Chart where DYELOT = '" + SYSWorkNumder + "'order by Time", null).Tables[0];
|
||||
SQLiteHelpers.Close();
|
||||
CDB_Count = CDB.Rows.Count;
|
||||
if (string.IsNullOrEmpty(w)) return;
|
||||
CDB = MainWindowViewModel.SQLiteChartAdress.ExecuteDataSet("select * from Chart where WorkOrder = '" + w + "'order by Time", null).Tables[0];
|
||||
|
||||
var MTT_items = new List<DateTimePoint>();
|
||||
var MTL_items = new List<DateTimePoint>();
|
||||
var MTH_items = new List<DateTimePoint>();
|
||||
var MST_items = new List<DateTimePoint>();
|
||||
var MUT_items = new List<DateTimePoint>();
|
||||
var STTA_items = new List<DateTimePoint>();
|
||||
var STLA_items = new List<DateTimePoint>();
|
||||
var STTB_items = new List<DateTimePoint>();
|
||||
var STLB_items = new List<DateTimePoint>();
|
||||
var STTC_items = new List<DateTimePoint>();
|
||||
var STLC_items = new List<DateTimePoint>();
|
||||
for (var i = 0; i < CDB_Count; i++)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (string.IsNullOrEmpty(m)) return;
|
||||
if (string.IsNullOrEmpty(s)) return;
|
||||
if (string.IsNullOrEmpty(e)) return;
|
||||
// SQLiteHelpers = new SQLiteHelper(ChartAdress); //数据库连接路径
|
||||
// SQLiteHelpers.Open(); //打开数据库
|
||||
CDB = MainWindowViewModel.SQLiteChartAdress.ExecuteDataSet("select * from Chart where Machine = '" + m + "'" +
|
||||
" and Time > '" + s + "' and Time < '" + e + "' order by Time", null).Tables[0];
|
||||
// SQLiteHelpers.Close();
|
||||
|
||||
}
|
||||
|
||||
CDB_Count = CDB.Rows.Count;
|
||||
var MTT_items = new List<DateTimePoint>();
|
||||
var MTL_items = new List<DateTimePoint>();
|
||||
// var MTH_items = new List<DateTimePoint>();
|
||||
var MST_items = new List<DateTimePoint>();
|
||||
var MUT_items = new List<DateTimePoint>();
|
||||
var STTA_items = new List<DateTimePoint>();
|
||||
var STLA_items = new List<DateTimePoint>();
|
||||
var STTB_items = new List<DateTimePoint>();
|
||||
var STLB_items = new List<DateTimePoint>();
|
||||
var STTC_items = new List<DateTimePoint>();
|
||||
var STLC_items = new List<DateTimePoint>();
|
||||
for (var i = 0; i < CDB_Count; i=i+4)
|
||||
{
|
||||
try
|
||||
{
|
||||
DateTime TIME = Convert.ToDateTime(CDB.Rows[i].Field<string>("Time"));
|
||||
MTT_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("MTT")));
|
||||
MTL_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("MTL")));
|
||||
MTH_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("MTH")));
|
||||
// MTH_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("MTH")));
|
||||
MST_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("MST")));
|
||||
MUT_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("MUT")));
|
||||
if (MainWindowViewModel.SYS_AT1 == 1)
|
||||
{
|
||||
STTA_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("STTA")));
|
||||
STLA_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("STLA")));
|
||||
}
|
||||
if (MainWindowViewModel.SYS_AT2 == 1)
|
||||
{
|
||||
STTB_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("STTB")));
|
||||
STLB_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("STLB")));
|
||||
}
|
||||
if (MainWindowViewModel.SYS_AT3 == 1)
|
||||
{
|
||||
STTC_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("STTC")));
|
||||
STLC_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("STLC")));
|
||||
}
|
||||
STTA_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("STTA")));
|
||||
STLA_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("STLA")));
|
||||
STTB_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("STTB")));
|
||||
STLB_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("STLB")));
|
||||
STTC_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("STTC")));
|
||||
STLC_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("STLC")));
|
||||
}
|
||||
catch (Exception) { }
|
||||
}
|
||||
|
||||
MTT_values = new ObservableCollection<DateTimePoint>(MTT_items);
|
||||
MTL_values = new ObservableCollection<DateTimePoint>(MTL_items);
|
||||
MTH_values = new ObservableCollection<DateTimePoint>(MTH_items);
|
||||
MST_values = new ObservableCollection<DateTimePoint>(MST_items);
|
||||
MUT_values = new ObservableCollection<DateTimePoint>(MUT_items);
|
||||
if (MainWindowViewModel.SYS_AT1 == 1)
|
||||
{
|
||||
STTA_values = new ObservableCollection<DateTimePoint>(STTA_items);
|
||||
STLA_values = new ObservableCollection<DateTimePoint>(STLA_items);
|
||||
}
|
||||
if (MainWindowViewModel.SYS_AT2 == 1)
|
||||
{
|
||||
STTB_values = new ObservableCollection<DateTimePoint>(STTB_items);
|
||||
STLB_values = new ObservableCollection<DateTimePoint>(STLB_items);
|
||||
}
|
||||
if (MainWindowViewModel.SYS_AT3 == 1)
|
||||
{
|
||||
STTC_values = new ObservableCollection<DateTimePoint>(STTC_items);
|
||||
STLC_values = new ObservableCollection<DateTimePoint>(STLC_items);
|
||||
}
|
||||
MTT_values = new ObservableCollection<DateTimePoint>(MTT_items);
|
||||
MTL_values = new ObservableCollection<DateTimePoint>(MTL_items);
|
||||
// MTH_values = new ObservableCollection<DateTimePoint>(MTH_items);
|
||||
MST_values = new ObservableCollection<DateTimePoint>(MST_items);
|
||||
MUT_values = new ObservableCollection<DateTimePoint>(MUT_items);
|
||||
STTA_values = new ObservableCollection<DateTimePoint>(STTA_items);
|
||||
STLA_values = new ObservableCollection<DateTimePoint>(STLA_items);
|
||||
STTB_values = new ObservableCollection<DateTimePoint>(STTB_items);
|
||||
STLB_values = new ObservableCollection<DateTimePoint>(STLB_items);
|
||||
STTC_values = new ObservableCollection<DateTimePoint>(STTC_items);
|
||||
STLC_values = new ObservableCollection<DateTimePoint>(STLC_items);
|
||||
|
||||
Series = new ISeries[]
|
||||
{
|
||||
new LineSeries<DateTimePoint>
|
||||
Series = new ISeries[]
|
||||
{
|
||||
/* new LineSeries<DateTimePoint>
|
||||
{
|
||||
Name = Properties.Resources.MasterCylinder +"PH",
|
||||
Values = MTH_values,
|
||||
@@ -210,7 +204,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel
|
||||
Fill = null,
|
||||
LineSmoothness = 0,
|
||||
ScalesYAt = 2,
|
||||
}, //PH
|
||||
}, *///PH
|
||||
new LineSeries<DateTimePoint>
|
||||
{
|
||||
Name = Resources.Target + Resources.Temperature,
|
||||
@@ -246,7 +240,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel
|
||||
}, //缸底
|
||||
new LineSeries<DateTimePoint>
|
||||
{
|
||||
Name = Properties.Resources.Temperature +"3("+Resources.Medicine + Resources.Tank +"1)",
|
||||
Name = Properties.Resources.Temperature +"3("+Resources.attached + Resources.Tank +"1)",
|
||||
Values = STTA_values,
|
||||
Stroke = new SolidColorPaint(s_blue_1, 2),
|
||||
GeometrySize = 0,
|
||||
@@ -257,7 +251,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel
|
||||
}, //附缸1
|
||||
new LineSeries<DateTimePoint>
|
||||
{
|
||||
Name = Properties.Resources.Temperature +"4("+Resources.Medicine + Resources.Tank +"2)",
|
||||
Name = Properties.Resources.Temperature +"4("+Resources.attached + Resources.Tank +"2)",
|
||||
Values = STTB_values,
|
||||
Stroke = new SolidColorPaint(s_blue_2, 2),
|
||||
GeometrySize = 0,
|
||||
@@ -268,7 +262,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel
|
||||
}, //附缸2
|
||||
new LineSeries<DateTimePoint>
|
||||
{
|
||||
Name = Properties.Resources.Temperature +"5("+Resources.Medicine + Resources.Tank +"3)",
|
||||
Name = Properties.Resources.Temperature +"5("+Resources.attached + Resources.Tank +"3)",
|
||||
Values = STTC_values,
|
||||
Stroke = new SolidColorPaint(s_blue_3, 2),
|
||||
GeometrySize = 0,
|
||||
@@ -290,7 +284,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel
|
||||
}, //主缸液位
|
||||
new LineSeries<DateTimePoint>
|
||||
{
|
||||
Name = Properties.Resources.WaterLevel +"("+Resources.Medicine + Resources.Tank +"1)",
|
||||
Name = Properties.Resources.WaterLevel +"("+Resources.attached + Resources.Tank +"1)",
|
||||
Values = STLA_values,
|
||||
Stroke = new SolidColorPaint(s_red_1, 2),
|
||||
GeometrySize = 0,
|
||||
@@ -301,7 +295,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel
|
||||
}, //附缸1液位
|
||||
new LineSeries<DateTimePoint>
|
||||
{
|
||||
Name = Properties.Resources.WaterLevel +"("+Resources.Medicine + Resources.Tank +"2)",
|
||||
Name = Properties.Resources.WaterLevel +"("+Resources.attached + Resources.Tank +"2)",
|
||||
Values = STLB_values,
|
||||
Stroke = new SolidColorPaint(s_red_2, 2),
|
||||
GeometrySize = 0,
|
||||
@@ -312,7 +306,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel
|
||||
}, //附缸2液位
|
||||
new LineSeries<DateTimePoint>
|
||||
{
|
||||
Name = Properties.Resources.WaterLevel +"("+Resources.Medicine + Resources.Tank +"3)",
|
||||
Name = Properties.Resources.WaterLevel +"("+Resources.attached + Resources.Tank +"3)",
|
||||
Values = STLC_values,
|
||||
Stroke = new SolidColorPaint(s_red_3, 2),
|
||||
GeometrySize = 0,
|
||||
@@ -321,9 +315,9 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel
|
||||
LineSmoothness = 0,
|
||||
ScalesYAt = 1,
|
||||
}, //附缸3 液位
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
using LiveChartsCore.SkiaSharpView;
|
||||
using LiveChartsCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using LiveChartsCore.Kernel.Sketches;
|
||||
using LiveChartsCore.SkiaSharpView.Painting;
|
||||
using ScottPlot.Colormaps;
|
||||
using System.Drawing;
|
||||
using System.Windows.Media.TextFormatting;
|
||||
using System.Xml.Linq;
|
||||
using SkiaSharp;
|
||||
using LiveChartsCore.Defaults;
|
||||
using static System.Net.WebRequestMethods;
|
||||
using System.Collections.ObjectModel;
|
||||
using DyeingComputer.Properties;
|
||||
using LiveChartsCore.Measure;
|
||||
using LiveChartsCore.Motion;
|
||||
using SunlightCentralizedControlManagement_SCCM_.Properties;
|
||||
using static SunlightCentralizedControlManagement_SCCM_.UserClass.SqliteHelper;
|
||||
using TouchSocket.Core;
|
||||
using System.ComponentModel;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Windows;
|
||||
using SunlightCentralizedControlManagement_SCCM_.View;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.ViewModel
|
||||
{
|
||||
public partial class CurveTempModel : ObservableObject//ViewModelBase
|
||||
{
|
||||
public static ISeries[] Series { get; set; }
|
||||
public static ObservableCollection<ObservableValue> ObservableValues { get; set; }
|
||||
//x轴时间格式
|
||||
public Axis[] XAxes { get; set; } =
|
||||
{
|
||||
new DateTimeAxis(TimeSpan.FromSeconds(5) , date => date.ToString("HH:mm"))
|
||||
{
|
||||
CrosshairLabelsBackground = SKColors.DarkGray.AsLvcColor(),
|
||||
CrosshairLabelsPaint = new SolidColorPaint(SKColors.DarkSlateBlue, 1),
|
||||
CrosshairPaint = new SolidColorPaint(SKColors.DarkSlateGray, 1),
|
||||
},
|
||||
};
|
||||
//颜色
|
||||
private static readonly SKColor s_blue = new SKColor(25, 118, 210);
|
||||
private static readonly SKColor s_blue_0 = new SKColor(25, 18, 210);
|
||||
private static readonly SKColor s_blue_1 = new SKColor(25, 118, 170);
|
||||
private static readonly SKColor s_blue_2 = new SKColor(25, 118, 130);
|
||||
private static readonly SKColor s_blue_3 = new SKColor(25, 118, 90);
|
||||
private static readonly SKColor s_blue_4 = new SKColor(25, 118, 50);
|
||||
private static readonly SKColor s_red = new SKColor(229, 57, 53);
|
||||
private static readonly SKColor s_red_1 = new SKColor(189, 57, 53);
|
||||
private static readonly SKColor s_red_2 = new SKColor(149, 57, 53);
|
||||
private static readonly SKColor s_red_3 = new SKColor(109, 57, 53);
|
||||
private static readonly SKColor s_yellow = new SKColor(198, 167, 0);
|
||||
public ICartesianAxis[] YAxes { get; set; } ={
|
||||
new Axis //y在此轴上缩放
|
||||
{
|
||||
MinLimit =0,
|
||||
MaxLimit =160,
|
||||
Name = Properties.Resources.Temperature +" ( °C )",
|
||||
NameTextSize = 15,
|
||||
NamePaint = new SolidColorPaint(s_blue),
|
||||
NamePadding = new LiveChartsCore.Drawing.Padding(0, 20),
|
||||
Padding = new LiveChartsCore.Drawing.Padding(0, 0, 20, 0),
|
||||
TextSize = 12,
|
||||
LabelsPaint = new SolidColorPaint(s_blue),
|
||||
TicksPaint = new SolidColorPaint(s_blue),
|
||||
SubticksPaint = new SolidColorPaint(s_blue),
|
||||
DrawTicksPath = true,
|
||||
CrosshairSnapEnabled = true,
|
||||
Position = LiveChartsCore.Measure.AxisPosition.Start
|
||||
},//温度轴
|
||||
|
||||
};
|
||||
|
||||
private static Random _r = new Random();
|
||||
private static ObservableCollection<DateTimePoint> MST_values;
|
||||
static DataTable CDB = new DataTable();
|
||||
private static int CDB_Count;//长度
|
||||
|
||||
public CurveTempModel()
|
||||
{
|
||||
CDB = View.CurveTemp.dataTable;
|
||||
Curve();
|
||||
}
|
||||
public static void Curve()
|
||||
{
|
||||
CDB_Count = CDB.Rows.Count;
|
||||
var MTT_items = new List<DateTimePoint>();
|
||||
var MTL_items = new List<DateTimePoint>();
|
||||
var MTH_items = new List<DateTimePoint>();
|
||||
var MST_items = new List<DateTimePoint>();
|
||||
var MUT_items = new List<DateTimePoint>();
|
||||
var STTA_items = new List<DateTimePoint>();
|
||||
var STLA_items = new List<DateTimePoint>();
|
||||
var STTB_items = new List<DateTimePoint>();
|
||||
var STLB_items = new List<DateTimePoint>();
|
||||
var STTC_items = new List<DateTimePoint>();
|
||||
var STLC_items = new List<DateTimePoint>();
|
||||
for (var i = 0; i < CDB_Count; i++)
|
||||
{
|
||||
DateTime TIME = Convert.ToDateTime(CDB.Rows[i].Field<string>("Time"));
|
||||
MST_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("MST")));
|
||||
}
|
||||
|
||||
MST_values = new ObservableCollection<DateTimePoint>(MST_items);
|
||||
|
||||
Series = new ISeries[]
|
||||
{
|
||||
|
||||
new LineSeries<DateTimePoint>
|
||||
{
|
||||
Name = Resources.Target + Resources.Temperature,
|
||||
Values = MST_values,
|
||||
Stroke = new SolidColorPaint(s_blue_0, 2),
|
||||
GeometrySize = 0,
|
||||
GeometryStroke = new SolidColorPaint(s_blue_0, 2),
|
||||
Fill = null,
|
||||
LineSmoothness = 0,
|
||||
ScalesYAt = 0,
|
||||
}, //目标温度
|
||||
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
using SunlightCentralizedControlManagement_SCCM_.EX;
|
||||
using SunlightCentralizedControlManagement_SCCM_.UserClass;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.ViewModel
|
||||
{
|
||||
|
||||
public class ManualDyelotModel : ViewModelBase
|
||||
{
|
||||
public static DataTable STUFFdataTable = new DataTable(); //建立STUFF
|
||||
public ManualDyelotModel()
|
||||
{
|
||||
string Connstr_SC;
|
||||
string sql = "SELECT * FROM [dbo].[Pipes] WHERE Dispenser = '" + ManualDyelot.Machines + "'";
|
||||
try
|
||||
{
|
||||
if (MainWindowViewModel.SQMOD == "Windows Authentication")
|
||||
{
|
||||
Connstr_SC = "server=" + MainWindowViewModel.SQLIP + ";database=" + MainWindowViewModel.SQLNAME + ";Trusted_Connection=SSPI";
|
||||
}
|
||||
else
|
||||
{
|
||||
Connstr_SC = "server=" + MainWindowViewModel.SQLIP + ";database=" + MainWindowViewModel.SQLNAME + ";User ID=" + MainWindowViewModel.SQLUSER + ";Password=" + MainWindowViewModel.SQLPASWORD;
|
||||
}
|
||||
SqlConnection conn_SC = new SqlConnection(Connstr_SC);
|
||||
conn_SC.Open(); //连接数据库
|
||||
new SqlDataAdapter(sql, Connstr_SC).Fill(STUFFdataTable);
|
||||
// SqlDataAdapter _data = new SqlDataAdapter(sql, Connstr_SC); //查询
|
||||
conn_SC.Close();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogGing.ERRDATA(ex);
|
||||
}
|
||||
stuff_Product = ToObservableCollection<Product>(STUFFdataTable); //stuff_Product表转换
|
||||
}
|
||||
public ObservableCollection<Product> stuff_Product { get; set; } //stuff_Product动态表实力化
|
||||
public ObservableCollection<T> ToObservableCollection<T>(DataTable dt) where T : class, new() //DataTable FOR ObservableCollection转换器
|
||||
{
|
||||
Type t = typeof(T);
|
||||
PropertyInfo[] propertys = t.GetProperties();
|
||||
ObservableCollection<T> lst = new ObservableCollection<T>();
|
||||
string typeName = string.Empty;
|
||||
foreach (DataRow dr in dt.Rows)
|
||||
{
|
||||
T entity = new T();
|
||||
foreach (PropertyInfo pi in propertys)
|
||||
{
|
||||
typeName = pi.Name;
|
||||
if (dt.Columns.Contains(typeName))
|
||||
{
|
||||
if (!pi.CanWrite) continue;
|
||||
object value = dr[typeName];
|
||||
if (value == DBNull.Value) continue;
|
||||
if (pi.PropertyType == typeof(string))
|
||||
{
|
||||
pi.SetValue(entity, value.ToString(), null);
|
||||
}
|
||||
else if (pi.PropertyType == typeof(int) || pi.PropertyType == typeof(int?))
|
||||
{
|
||||
pi.SetValue(entity, int.Parse(value.ToString()), null);
|
||||
}
|
||||
else if (pi.PropertyType == typeof(DateTime?) || pi.PropertyType == typeof(DateTime))
|
||||
{
|
||||
pi.SetValue(entity, DateTime.Parse(value.ToString()), null);
|
||||
}
|
||||
else if (pi.PropertyType == typeof(float))
|
||||
{
|
||||
pi.SetValue(entity, float.Parse(value.ToString()), null);
|
||||
}
|
||||
else if (pi.PropertyType == typeof(double))
|
||||
{
|
||||
pi.SetValue(entity, double.Parse(value.ToString()), null);
|
||||
}
|
||||
else
|
||||
{
|
||||
pi.SetValue(entity, value, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
lst.Add(entity);
|
||||
}
|
||||
return lst;
|
||||
} //DataTable FOR ObservableCollection转换器
|
||||
|
||||
public class Product //stuff_Product
|
||||
{
|
||||
public string ProductCode { get; set; }
|
||||
public string ProductName { get; set; }
|
||||
public int ProductType { get; set; }
|
||||
public int Concentration { get; set; }
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return ProductCode;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
using SunlightCentralizedControlManagement_SCCM_.EX;
|
||||
using SunlightCentralizedControlManagement_SCCM_.UserClass;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Threading;
|
||||
using static SunlightCentralizedControlManagement_SCCM_.ViewModel.MainWindowViewModel;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.ViewModel
|
||||
{
|
||||
|
||||
public class MonitorViewModel : ViewModelBase
|
||||
{
|
||||
public MonitorViewModel()
|
||||
{
|
||||
// DispatcherTimer timer1s = new DispatcherTimer(DispatcherPriority.Normal);//初始化循环,每1秒调用一次Tick
|
||||
// timer1s.Interval = TimeSpan.FromMilliseconds(950);//秒
|
||||
// timer1s.Tick += Tick_Main_1S;
|
||||
// timer1s.Start();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -29,6 +29,19 @@ namespace SunlightCentralizedControlManagement_SCCM_.ViewModel
|
||||
return ServiceLocator.Current.GetInstance<CurveDiagramViewModel>();
|
||||
}
|
||||
}
|
||||
|
||||
public CurveTempModel CurveT
|
||||
{
|
||||
get
|
||||
{
|
||||
return ServiceLocator.Current.GetInstance<CurveTempModel>();
|
||||
}
|
||||
}
|
||||
public ManualDyelotModel ManualDM
|
||||
{
|
||||
get
|
||||
{
|
||||
return ServiceLocator.Current.GetInstance<ManualDyelotModel>();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,7 @@
|
||||
Title="SUNLIGHT"
|
||||
Height="150" Width="400">
|
||||
<Grid FocusManager.FocusedElement="{Binding ElementName=Boxx}">
|
||||
<TextBox x:Name="Boxx" Height="40" Margin="20,10,20,0" VerticalAlignment="Top" FontSize="26"
|
||||
<TextBox x:Name="Boxx" Height="50" Margin="20,10,20,0" VerticalAlignment="Top" FontSize="26"
|
||||
MaxLines="1" BorderThickness="3,3,3,3" ClipToBounds="True"/>
|
||||
<Button Content="{x:Static lang:Resources.YES}" HorizontalAlignment="Left" Height="35" Margin="50,70,0,5" VerticalAlignment="Bottom" Width="80" Click="YES_Click"/>
|
||||
<Button Content="{x:Static lang:Resources.NO}" HorizontalAlignment="Right" Height="35" Margin="0,70,50,5" VerticalAlignment="Bottom" Width="80" Click="NO_Click"/>
|
||||
|
||||
@@ -29,8 +29,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.WindowsView
|
||||
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; //定义数据库
|
||||
private string MACHINEDATA;
|
||||
DataTable machine_table;
|
||||
private List<string> machine;
|
||||
@@ -40,12 +38,9 @@ namespace SunlightCentralizedControlManagement_SCCM_.WindowsView
|
||||
{
|
||||
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();//转换代码
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using nGantt.GanttChart;
|
||||
using SunlightCentralizedControlManagement_SCCM_.View;
|
||||
using SunlightCentralizedControlManagement_SCCM_.ViewModel;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
@@ -8,6 +9,7 @@ using System.Text.RegularExpressions;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Input;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.WindowsView
|
||||
{
|
||||
@@ -16,8 +18,6 @@ namespace SunlightCentralizedControlManagement_SCCM_.WindowsView
|
||||
/// </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] {"修改系统设置", "修改用户设置",
|
||||
"单机监控","单机控制","单机设置","新建排程","排程编辑","排程删除",
|
||||
@@ -39,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)//输入事件
|
||||
@@ -104,16 +101,17 @@ 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);// 执行插入
|
||||
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)//删除按钮事件
|
||||
{
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<Window x:Class="SunlightCentralizedControlManagement_SCCM_.WindowsView.UserInf"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:SunlightCentralizedControlManagement_SCCM_.WindowsView"
|
||||
xmlns:lang="clr-namespace:SunlightCentralizedControlManagement_SCCM_.Properties"
|
||||
WindowStartupLocation="CenterScreen"
|
||||
Loaded ="Window_Loaded"
|
||||
ResizeMode="NoResize"
|
||||
mc:Ignorable="d"
|
||||
Title="SUNLIGHT 800" Height="400" Width="800">
|
||||
<Grid>
|
||||
<Grid Margin="0,0,0,100">
|
||||
<TextBox x:Name="INF_DATA" Margin="140,20,20,20" TextWrapping="Wrap" FontSize="30" IsReadOnly="True" BorderBrush="#FF673AB7" BorderThickness="2,2,2,2" Cursor="Hand" />
|
||||
<Image Height="100" Width="100" FlowDirection="LeftToRight" HorizontalAlignment="Left" Margin="20,0,0,0" Source="/Lmage/IconParkInfo.png" VerticalAlignment="Center"/>
|
||||
</Grid>
|
||||
<Button Content="{x:Static lang:Resources.YES}" HorizontalAlignment="Left" Height="45" Margin="50,70,20,20"
|
||||
VerticalAlignment="Bottom" Width="100" Click="YES_Click" HorizontalContentAlignment="Center"/>
|
||||
<Button Content="{x:Static lang:Resources.NO}" HorizontalAlignment="Right" Height="45" Margin="50,70,20,20"
|
||||
VerticalAlignment="Bottom" Width="100" Click="YES_Click"/>
|
||||
</Grid>
|
||||
</Window>
|
||||
@@ -0,0 +1,47 @@
|
||||
using SunlightCentralizedControlManagement_SCCM_.ViewModel;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Markup;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Animation;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
using System.Windows.Threading;
|
||||
using System.Xml.Linq;
|
||||
using static SunlightCentralizedControlManagement_SCCM_.UserClass.SqliteHelper;
|
||||
|
||||
namespace SunlightCentralizedControlManagement_SCCM_.WindowsView
|
||||
{
|
||||
/// <summary>
|
||||
/// ViewProgram.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class UserInf : Window
|
||||
{
|
||||
public string Inf_DAT;//信息
|
||||
public UserInf()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
private void Window_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
INF_DATA.Text = Inf_DAT;
|
||||
}
|
||||
|
||||
private void YES_Click(object sender, RoutedEventArgs e)//确认
|
||||
{
|
||||
this.Close(); //关闭窗口
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||