sc 11 months ago
parent
commit
f094a2fb6e
  1. 100
      UserClass/AsyncTcpServer.cs
  2. 4
      View/EngineerSetView.xaml
  3. 26
      View/EngineerSetView.xaml.cs
  4. 3
      ViewModel/MainWindowViewModel.cs

100
UserClass/AsyncTcpServer.cs

@ -79,6 +79,7 @@ namespace DyeingComputer.UserClass
service.Closed = (client, e) => { return EasyTask.CompletedTask; };//有客户端断开连接 service.Closed = (client, e) => { return EasyTask.CompletedTask; };//有客户端断开连接
service.Received = (client, e) => service.Received = (client, e) =>
{ {
MainWindowViewModel.RX++;
string SYSAPI = e.ByteBlock.Span.ToString(Encoding.ASCII).Substring(0,5); string SYSAPI = e.ByteBlock.Span.ToString(Encoding.ASCII).Substring(0,5);
string DAT = e.ByteBlock.Span.ToString(Encoding.UTF8).Substring(5); string DAT = e.ByteBlock.Span.ToString(Encoding.UTF8).Substring(5);
string SYSDAT ="";// = e.ByteBlock.Span.ToString(Encoding.ASCII).Substring(5); string SYSDAT ="";// = e.ByteBlock.Span.ToString(Encoding.ASCII).Substring(5);
@ -94,6 +95,7 @@ namespace DyeingComputer.UserClass
Chart_new.Add("SYSKEY", MainWindowViewModel.SYSKEY); Chart_new.Add("SYSKEY", MainWindowViewModel.SYSKEY);
Chart_new.Add("TIME", MainWindowViewModel.SYSTime); Chart_new.Add("TIME", MainWindowViewModel.SYSTime);
client.SendAsync("SC800" + "[" + MainWindowViewModel.S01 + "]" + Chart_new.ToJsonString()); client.SendAsync("SC800" + "[" + MainWindowViewModel.S01 + "]" + Chart_new.ToJsonString());
MainWindowViewModel.TX++;
} }
else if (SYSAPI == "SC810") else if (SYSAPI == "SC810")
{ {
@ -104,7 +106,7 @@ namespace DyeingComputer.UserClass
Dictionary<string, object> WorkOrder_dat; Dictionary<string, object> WorkOrder_dat;
WorkOrder_dat = SerializeConvert.JsonDeserializeFromString<Dictionary<string, object>>(SYSDAT); WorkOrder_dat = SerializeConvert.JsonDeserializeFromString<Dictionary<string, object>>(SYSDAT);
//WorkOrder_dat.GetValue("WorkOrder"); //WorkOrder_dat.GetValue("WorkOrder");
bool dat_w= SQLDATA.WorkOrder( bool dat_w = SQLDATA.WorkOrder(
WorkOrder_dat.GetValue("WorkOrder").ToString(), WorkOrder_dat.GetValue("WorkOrder").ToString(),
WorkOrder_dat.GetValue("ProcessName").ToString(), WorkOrder_dat.GetValue("ProcessName").ToString(),
WorkOrder_dat.GetValue("StartTime").ToString(), WorkOrder_dat.GetValue("StartTime").ToString(),
@ -115,7 +117,7 @@ namespace DyeingComputer.UserClass
WorkOrder_dat.GetValue("State").ToString(), WorkOrder_dat.GetValue("State").ToString(),
WorkOrder_dat.GetValue("ProcessID").ToString()); WorkOrder_dat.GetValue("ProcessID").ToString());
if (!dat_w) { client.SendAsync("SC910"); } if (!dat_w) { client.SendAsync("SC910"); }
else { client.SendAsync("SC810" + SYSKEY +SYSDAT); } else { client.SendAsync("SC810" + SYSKEY + SYSDAT); MainWindowViewModel.TX++; }
} }
catch catch
{ {
@ -134,7 +136,7 @@ namespace DyeingComputer.UserClass
WorkOrder_dat = SerializeConvert.JsonDeserializeFromString<DataTable>(SYSDAT); WorkOrder_dat = SerializeConvert.JsonDeserializeFromString<DataTable>(SYSDAT);
bool dat_w = SQLDATA.WorkOderStep(WorkOrder_dat); bool dat_w = SQLDATA.WorkOderStep(WorkOrder_dat);
if (!dat_w) { client.SendAsync("SC911"); } if (!dat_w) { client.SendAsync("SC911"); }
else { client.SendAsync("SC811" + SYSKEY + SYSDAT); } else { client.SendAsync("SC811" + SYSKEY + SYSDAT); MainWindowViewModel.TX++; }
} }
catch catch
{ {
@ -157,6 +159,7 @@ namespace DyeingComputer.UserClass
SetLocalDateTime(dt); SetLocalDateTime(dt);
} }
client.SendAsync("SC820" + "[" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "]"); client.SendAsync("SC820" + "[" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "]");
MainWindowViewModel.TX++;
} }
catch { client.SendAsync("SC920"); } catch { client.SendAsync("SC920"); }
} }
@ -185,7 +188,7 @@ namespace DyeingComputer.UserClass
} }
else if (dat_821.GetValue("INSTRUCTION").ToString() == "CONTINUE") else if (dat_821.GetValue("INSTRUCTION").ToString() == "CONTINUE")
{ {
MainWindowViewModel.WORK_RUN = 2;//暂停 MainWindowViewModel.WORK_RUN = 2;//
} }
else if (dat_821.GetValue("INSTRUCTION").ToString() == "JUMP") else if (dat_821.GetValue("INSTRUCTION").ToString() == "JUMP")
{ {
@ -252,12 +255,13 @@ namespace DyeingComputer.UserClass
SQLiteHelpers.Close(); //关闭连接 SQLiteHelpers.Close(); //关闭连接
client.SendAsync("SC831" + "[" + MainWindowViewModel.S01 + "]" + MainWindowViewModel.dt_TP.ToJsonString()); client.SendAsync("SC831" + "[" + MainWindowViewModel.S01 + "]" + MainWindowViewModel.dt_TP.ToJsonString());
MainWindowViewModel.TX++;
}//插入 }//插入
else if (dat_821.GetValue("INSTRUCTION").ToString() == "EDIT") else if (dat_821.GetValue("INSTRUCTION").ToString() == "EDIT")
{ {
int n = Convert.ToInt16(dat_821.GetValue("ID").ToString()); int n = Convert.ToInt16(dat_821.GetValue("ID").ToString());
/**编辑行信息**/ /**编辑行信息**/
DataRow dr =MainWindowViewModel.dt_TP.Rows[n - 1]; DataRow dr = MainWindowViewModel.dt_TP.Rows[n - 1];
dr.BeginEdit(); dr.BeginEdit();
dr["StepID"] = dat_821.GetValue("StepID").ToString(); dr["StepID"] = dat_821.GetValue("StepID").ToString();
dr["StepName"] = dat_821.GetValue("StepName").ToString(); dr["StepName"] = dat_821.GetValue("StepName").ToString();
@ -270,7 +274,7 @@ namespace DyeingComputer.UserClass
dr.EndEdit(); dr.EndEdit();
var _TechnologicalProcessView = Application.Current.Windows.Cast<UserControl>().FirstOrDefault(window => window is TechnologicalProcessView) as TechnologicalProcessView;//跨页面 var _TechnologicalProcessView = Application.Current.Windows.Cast<UserControl>().FirstOrDefault(window => window is TechnologicalProcessView) as TechnologicalProcessView;//跨页面
// _TechnologicalProcessView.Grid.ItemsSource = TechnologicalProcessView.sql.Tables[0].DefaultView; // _TechnologicalProcessView.Grid.ItemsSource = TechnologicalProcessView.sql.Tables[0].DefaultView;
_TechnologicalProcessView.Grid.SelectedIndex = -1; _TechnologicalProcessView.Grid.SelectedIndex = -1;
/**存入信息**/ /**存入信息**/
SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
@ -294,13 +298,14 @@ namespace DyeingComputer.UserClass
SQLiteHelpers.Close(); //关闭连接 SQLiteHelpers.Close(); //关闭连接
client.SendAsync("SC831" + "[" + MainWindowViewModel.S01 + "]" + MainWindowViewModel.dt_TP.ToJsonString()); client.SendAsync("SC831" + "[" + MainWindowViewModel.S01 + "]" + MainWindowViewModel.dt_TP.ToJsonString());
MainWindowViewModel.TX++;
}//编辑 }//编辑
else if (dat_821.GetValue("INSTRUCTION").ToString() == "DELETE") else if (dat_821.GetValue("INSTRUCTION").ToString() == "DELETE")
{ {
int d = Convert.ToInt16(dat_821.GetValue("ID")); int d = Convert.ToInt16(dat_821.GetValue("ID"));
MainWindowViewModel.dt_TP.Rows.RemoveAt(d - 1); MainWindowViewModel.dt_TP.Rows.RemoveAt(d - 1);
TechnologicalProcessView.Dat(); TechnologicalProcessView.Dat();
/**存入信息**/ /**存入信息**/
SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
SQLiteHelpers.Open(); //打开数据库 SQLiteHelpers.Open(); //打开数据库
SQLiteHelpers.Delete("RUN", null, null); SQLiteHelpers.Delete("RUN", null, null);
@ -322,6 +327,7 @@ namespace DyeingComputer.UserClass
SQLiteHelpers.Close(); //关闭连接 SQLiteHelpers.Close(); //关闭连接
client.SendAsync("SC831" + "[" + MainWindowViewModel.S01 + "]" + MainWindowViewModel.dt_TP.ToJsonString()); client.SendAsync("SC831" + "[" + MainWindowViewModel.S01 + "]" + MainWindowViewModel.dt_TP.ToJsonString());
MainWindowViewModel.TX++;
} }
else else
{ {
@ -336,25 +342,29 @@ namespace DyeingComputer.UserClass
{ {
if (SYSKEY == MainWindowViewModel.SYSKEY) if (SYSKEY == MainWindowViewModel.SYSKEY)
{ {
Dictionary<string, object> Chart_new = new Dictionary<string, object>();//缓存函数 try {
Chart_new.Add("Status", MainWindowViewModel.StatusStr); Dictionary<string, object> Chart_new = new Dictionary<string, object>();//缓存函数
Chart_new.Add("Machine", MainWindowViewModel.S01); Chart_new.Add("Status", MainWindowViewModel.StatusStr);
Chart_new.Add("WorkNumder", MainWindowViewModel.WorkNumder); Chart_new.Add("Machine", MainWindowViewModel.S01);
Chart_new.Add("Time", MainWindowViewModel.SYSTime); Chart_new.Add("WorkNumder", MainWindowViewModel.WorkNumder);
Chart_new.Add("Process", MainWindowViewModel.ProgramName); Chart_new.Add("Time", MainWindowViewModel.SYSTime);
Chart_new.Add("Step", MainWindowViewModel.Process_step); Chart_new.Add("Process", MainWindowViewModel.ProgramName);
Chart_new.Add("MST", MainWindowViewModel.TEMP_co); Chart_new.Add("Step", MainWindowViewModel.Process_step);
Chart_new.Add("MTT", MainWindowViewModel.Selet_dtm("1010")); Chart_new.Add("MST", MainWindowViewModel.TEMP_co);
Chart_new.Add("MTL", MainWindowViewModel.Selet_dtm("1015")); Chart_new.Add("MTT", MainWindowViewModel.Selet_dtm("1010"));
Chart_new.Add("MTH", MainWindowViewModel.Selet_dtm("1009")); Chart_new.Add("MTL", MainWindowViewModel.Selet_dtm("1015"));
Chart_new.Add("MUT", MainWindowViewModel.Selet_dtm("1011")); Chart_new.Add("MTH", MainWindowViewModel.Selet_dtm("1009"));
Chart_new.Add("STTA", MainWindowViewModel.Selet_dtm("1012")); Chart_new.Add("MUT", MainWindowViewModel.Selet_dtm("1011"));
Chart_new.Add("STLA", MainWindowViewModel.Selet_dtm("1017")); Chart_new.Add("STTA", MainWindowViewModel.Selet_dtm("1012"));
Chart_new.Add("STTB", MainWindowViewModel.Selet_dtm("1013")); Chart_new.Add("STLA", MainWindowViewModel.Selet_dtm("1017"));
Chart_new.Add("STLB", MainWindowViewModel.Selet_dtm("1018")); Chart_new.Add("STTB", MainWindowViewModel.Selet_dtm("1013"));
Chart_new.Add("STTC", MainWindowViewModel.Selet_dtm("1014")); Chart_new.Add("STLB", MainWindowViewModel.Selet_dtm("1018"));
Chart_new.Add("STLC", MainWindowViewModel.Selet_dtm("1019")); Chart_new.Add("STTC", MainWindowViewModel.Selet_dtm("1014"));
client.SendAsync("SC830" + "[" + MainWindowViewModel.S01 + "]" + Chart_new.ToJsonString()); Chart_new.Add("STLC", MainWindowViewModel.Selet_dtm("1019"));
client.SendAsync("SC830" + "[" + MainWindowViewModel.S01 + "]" + Chart_new.ToJsonString());
MainWindowViewModel.TX++;
}
catch { client.SendAsync("SC931"); }
} }
else { client.SendAsync("SC999"); } else { client.SendAsync("SC999"); }
}//当前信息 }//当前信息
@ -362,7 +372,12 @@ namespace DyeingComputer.UserClass
{ {
if (SYSKEY == MainWindowViewModel.SYSKEY) if (SYSKEY == MainWindowViewModel.SYSKEY)
{ {
client.SendAsync("SC831" + "[" + MainWindowViewModel.S01 + "]" +MainWindowViewModel.dt_TP.ToJsonString()); try
{
client.SendAsync("SC831" + "[" + MainWindowViewModel.S01 + "]" + MainWindowViewModel.dt_TP.ToJsonString());
MainWindowViewModel.TX++;
}
catch { client.SendAsync("SC931"); }
} }
else { client.SendAsync("SC999"); } else { client.SendAsync("SC999"); }
}//当前工作表 }//当前工作表
@ -372,15 +387,22 @@ namespace DyeingComputer.UserClass
{ {
try try
{ client.SendAsync("SC832" + "[" + MainWindowViewModel.S01 + "]" + MainWindowViewModel.SYSlog); { client.SendAsync("SC832" + "[" + MainWindowViewModel.S01 + "]" + MainWindowViewModel.SYSlog);
} catch (Exception) { } } MainWindowViewModel.TX++;
}
catch { client.SendAsync("SC932"); }
}
else { client.SendAsync("SC999"); } else { client.SendAsync("SC999"); }
}//当前细节信息 }//当前细节信息
else if (SYSAPI == "SC833") else if (SYSAPI == "SC833")
{ {
if (SYSKEY == MainWindowViewModel.SYSKEY) if (SYSKEY == MainWindowViewModel.SYSKEY)
{ {
try
client.SendAsync("SC832" + "[" + MainWindowViewModel.S01 + "]" + "sc833"); {
client.SendAsync("SC832" + "[" + MainWindowViewModel.S01 + "]" + "sc833");
MainWindowViewModel.TX++;
}
catch { client.SendAsync("SC933"); }
} }
else { client.SendAsync("SC999"); } else { client.SendAsync("SC999"); }
}//当前领料单 }//当前领料单
@ -388,7 +410,11 @@ namespace DyeingComputer.UserClass
{ {
if (SYSKEY == MainWindowViewModel.SYSKEY) if (SYSKEY == MainWindowViewModel.SYSKEY)
{ {
client.SendAsync("SC851" + "[" + MainWindowViewModel.S01 + "]" + JsonConvert.SerializeObject(MainWindowViewModel.dt_d));//数字开关信息 try
{
client.SendAsync("SC851" + "[" + MainWindowViewModel.S01 + "]" + JsonConvert.SerializeObject(MainWindowViewModel.dt_d));//数字开关信息
}
catch { client.SendAsync("SC951"); }
} }
else { client.SendAsync("SC999"); } else { client.SendAsync("SC999"); }
}//数字开关表 }//数字开关表
@ -396,7 +422,11 @@ namespace DyeingComputer.UserClass
{ {
if (SYSKEY == MainWindowViewModel.SYSKEY) if (SYSKEY == MainWindowViewModel.SYSKEY)
{ {
client.SendAsync("SC852" + "[" + MainWindowViewModel.S01 + "]" + MainWindowViewModel.dt_a.ToJsonString());//寄存器信息 try
{
client.SendAsync("SC852" + "[" + MainWindowViewModel.S01 + "]" + MainWindowViewModel.dt_a.ToJsonString());//寄存器信息
}
catch { client.SendAsync("SC952"); }
} }
else { client.SendAsync("SC999"); } else { client.SendAsync("SC999"); }
}//寄存器表 }//寄存器表
@ -404,7 +434,11 @@ namespace DyeingComputer.UserClass
{ {
if (SYSKEY == MainWindowViewModel.SYSKEY) if (SYSKEY == MainWindowViewModel.SYSKEY)
{ {
client.SendAsync("SC853" + "[" + MainWindowViewModel.S01 + "]" + MainWindowViewModel.dt_m.ToJsonString());//缓存信息 try
{
client.SendAsync("SC853" + "[" + MainWindowViewModel.S01 + "]" + MainWindowViewModel.dt_m.ToJsonString());//缓存信息
}
catch { client.SendAsync("SC953"); }
} }
else { client.SendAsync("SC999"); } else { client.SendAsync("SC999"); }
}//缓存表 }//缓存表

4
View/EngineerSetView.xaml

@ -6,12 +6,14 @@
xmlns:local="clr-namespace:DyeingComputer.View" xmlns:local="clr-namespace:DyeingComputer.View"
xmlns:lang="clr-namespace:DyeingComputer.Properties" xmlns:lang="clr-namespace:DyeingComputer.Properties"
mc:Ignorable="d" mc:Ignorable="d"
d:DesignHeight="630" d:DesignWidth="1280" VerticalAlignment="Top"> d:DesignHeight="500" d:DesignWidth="800">
<Grid> <Grid>
<ComboBox HorizontalAlignment="Left" Height="30" Margin="150,10,0,0" x:Name="comboBoxCOM" VerticalAlignment="Top" Width="200" SelectionChanged="comboBoxCOM_SelectionChanged" FontSize="20" IsEditable="True" IsReadOnly="True"/> <ComboBox HorizontalAlignment="Left" Height="30" Margin="150,10,0,0" x:Name="comboBoxCOM" VerticalAlignment="Top" Width="200" SelectionChanged="comboBoxCOM_SelectionChanged" FontSize="20" IsEditable="True" IsReadOnly="True"/>
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,10,0,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.Port}" VerticalAlignment="Top" Width="120" FontSize="25"/> <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="comboBoxLanguage" VerticalAlignment="Top" Width="200" SelectionChanged="comboBoxLanguage_SelectionChanged" FontSize="20" IsEditable="True" IsReadOnly="True"/> <ComboBox HorizontalAlignment="Left" Height="30" Margin="150,50,0,0" x:Name="comboBoxLanguage" VerticalAlignment="Top" Width="200" SelectionChanged="comboBoxLanguage_SelectionChanged" FontSize="20" IsEditable="True" IsReadOnly="True"/>
<TextBlock HorizontalAlignment="Left" Height="40" Margin="10,50,0,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.Language}" VerticalAlignment="Top" Width="120" FontSize="25"/> <TextBlock HorizontalAlignment="Left" Height="40" Margin="10,50,0,0" TextWrapping="Wrap" Text="{x:Static lang:Resources.Language}" VerticalAlignment="Top" Width="120" FontSize="25"/>
<TextBlock Name="RX" TextWrapping="Wrap" HorizontalAlignment="Left" VerticalAlignment="Bottom" Height="30" Width="100" Margin="5,0,0,0"/>
<TextBlock Name="TX" TextWrapping="Wrap" HorizontalAlignment="Left" VerticalAlignment="Bottom" Height="30" Width="100" Margin="200,0,0,0"/>
</Grid> </Grid>
</UserControl> </UserControl>

26
View/EngineerSetView.xaml.cs

@ -1,4 +1,5 @@
using System; using DyeingComputer.ViewModel;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
@ -12,6 +13,7 @@ using System.Windows.Media;
using System.Windows.Media.Imaging; using System.Windows.Media.Imaging;
using System.Windows.Navigation; using System.Windows.Navigation;
using System.Windows.Shapes; using System.Windows.Shapes;
using System.Windows.Threading;
namespace DyeingComputer.View namespace DyeingComputer.View
{ {
@ -23,12 +25,13 @@ namespace DyeingComputer.View
public EngineerSetView() public EngineerSetView()
{ {
InitializeComponent(); InitializeComponent();
CountDown();
// 获取所有可用串口端口,并添加到comboBoxCOM // 获取所有可用串口端口,并添加到comboBoxCOM
string[] ports = System.IO.Ports.SerialPort.GetPortNames(); string[] ports = System.IO.Ports.SerialPort.GetPortNames();
comboBoxCOM.ItemsSource = ports; comboBoxCOM.ItemsSource = ports;
comboBoxCOM.Text = Configini.IniReadvalue("SYS", "COM"); comboBoxCOM.Text = Configini.IniReadvalue("SYS", "COM");
string[] Language = {"en-US","zh-CN","zh -TW" }; string[] Language = { "en-US", "zh-CN", "zh -TW" };
comboBoxLanguage.ItemsSource = Language; comboBoxLanguage.ItemsSource = Language;
comboBoxLanguage.Text = Configini.IniReadvalue("SYS", "Language"); comboBoxLanguage.Text = Configini.IniReadvalue("SYS", "Language");
} }
@ -37,12 +40,29 @@ namespace DyeingComputer.View
private void comboBoxCOM_SelectionChanged(object sender, SelectionChangedEventArgs e) private void comboBoxCOM_SelectionChanged(object sender, SelectionChangedEventArgs e)
{ {
Configini.IniWritevalue("SYS","COM",comboBoxCOM.SelectedValue.ToString()); Configini.IniWritevalue("SYS", "COM", comboBoxCOM.SelectedValue.ToString());
} }
private void comboBoxLanguage_SelectionChanged(object sender, SelectionChangedEventArgs e) private void comboBoxLanguage_SelectionChanged(object sender, SelectionChangedEventArgs e)
{ {
Configini.IniWritevalue("SYS", "Language", comboBoxLanguage.SelectedValue.ToString()); Configini.IniWritevalue("SYS", "Language", comboBoxLanguage.SelectedValue.ToString());
} }
public void CountDown()
{
DispatcherTimer timer1s = new DispatcherTimer//初始化循环,每1秒调用一次Tick
{
Interval = TimeSpan.FromSeconds(1)//秒
};
timer1s.Tick += Tick_Event_1S;
timer1s.Start();
}
void Tick_Event_1S(object sender, EventArgs e)//Tick_Event周期执行事件1S
{
RX.Text = MainWindowViewModel.RX.ToString();
TX.Text = MainWindowViewModel.TX.ToString();
}
} }
} }

3
ViewModel/MainWindowViewModel.cs

@ -64,7 +64,8 @@ namespace DyeingComputer.ViewModel
public static int RUN_STEPID;//当前步骤 public static int RUN_STEPID;//当前步骤
public static int SYS_REDYE=0;//当前重燃步 public static int SYS_REDYE=0;//当前重燃步
public static string SYSKEY; public static string SYSKEY;
public static UInt32 RX = 0;
public static UInt32 TX = 0;
public MainWindowViewModel() public MainWindowViewModel()
{ {
SYSKEY = MD5check.MD5Encrypt16(HardwareSN.GetCPUSerialNumber()+HardwareSN.GetBIOSSerialNumber()); SYSKEY = MD5check.MD5Encrypt16(HardwareSN.GetCPUSerialNumber()+HardwareSN.GetBIOSSerialNumber());

Loading…
Cancel
Save