| | |
| | | using Plugin.TestResult_WPF.Model; |
| | | using HMI.Core.Util; |
| | | using HMI.Util; |
| | | using Plugin.TestResult_WPF.Model; |
| | | using SuperSocket.SocketBase.Protocol; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel; |
| | | using System.Net; |
| | | using System.Net.Sockets; |
| | | using System.IO; |
| | | using System.Runtime.CompilerServices; |
| | | using System.Threading; |
| | | using System.Windows; |
| | | using System.Windows.Controls; |
| | | |
| | |
| | | set { RaiseAndSetIfchanged(ref tcpServerStatus, value); } |
| | | } |
| | | |
| | | private string tcpServerInfo = "未启动"; |
| | | private string tcpServerInfo = LangUtil.Get("App.NotStarted"); |
| | | |
| | | public string TcpServerInfo |
| | | { |
| | |
| | | private SingleCell[] cells; |
| | | |
| | | private TcpServer tcpServer; |
| | | private string CountIniPath; |
| | | |
| | | public DataTable(TestResultView parent,int index, string title, BaseConfig config) |
| | | // 平均温度 |
| | | public List<double> tempratures = new List<double>(); |
| | | public Dictionary<string, List<double>> detailTempratures |
| | | = new Dictionary<string, List<double>>(); |
| | | |
| | | public DataTable(TestResultView parent, int index, string title, |
| | | string countIniPath, |
| | | BaseConfig config) |
| | | { |
| | | this.CountIniPath = countIniPath; |
| | | this.config = config; |
| | | this.index = index; |
| | | this.parent = parent; |
| | |
| | | DataContext = this; |
| | | InitializeComponent(); |
| | | this.chart = new Chart(this.chartTitle, false, config.MaxSize, config.RefreshInterval); |
| | | this.multiChart = new Chart(config.DetailChartTitle, true, config.MaxSize, config.RefreshInterval); |
| | | this.multiChart = new Chart(config.DetailChartTitle, true, config.MaxSize, config.RefreshInterval) |
| | | { |
| | | BorderThickness = new Thickness(0) |
| | | }; |
| | | this.grid.Children.Add(this.chart); |
| | | Grid.SetRow(this.chart, 2); |
| | | this.chart.MouseDoubleClick += chart_MouseDoubleClick; |
| | |
| | | mainGrid.Children.Add(cell); |
| | | cells[i] = cell; |
| | | } |
| | | ReadCount(); |
| | | } |
| | | |
| | | public int GetSize() |
| | |
| | | public void SetTemperature(double t) |
| | | { |
| | | infoTable.temperature = t; |
| | | tempratures.Add(t); |
| | | chart.AddData(t); |
| | | } |
| | | |
| | | public void SetTemperature(string name, double t) |
| | | { |
| | | List<double> list; |
| | | if (detailTempratures.ContainsKey(name)) |
| | | { |
| | | list = detailTempratures[name]; |
| | | } |
| | | else |
| | | { |
| | | list = new List<double>(); |
| | | detailTempratures.Add(name, list); |
| | | } |
| | | list.Add(t); |
| | | multiChart.AddData(name, t); |
| | | } |
| | | |
| | |
| | | { |
| | | chart.Clear(); |
| | | multiChart.Clear(); |
| | | |
| | | tempratures.Clear(); |
| | | detailTempratures.Clear(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 启动Tcp服务器 |
| | | /// </summary> |
| | | private void StartTcpServer() |
| | | { |
| | | try |
| | |
| | | tcpServer.NewRequestReceived += TcpServer_NewRequestReceived; |
| | | if (!tcpServer.Setup(config.PortStart + index)) |
| | | { |
| | | ChangeTcpServerStatus("ERROR", "服务设置异常"); |
| | | ChangeTcpServerStatus("ERROR", this.lang("Tr.TcpServer.SettingFailed")); |
| | | return; |
| | | } |
| | | if (!tcpServer.Start()) |
| | | { |
| | | ChangeTcpServerStatus("ERROR", "服务启动异常"); |
| | | ChangeTcpServerStatus("ERROR", this.lang("Tr.TcpServer.StartFailed")); |
| | | return; |
| | | } |
| | | ChangeTcpServerStatus("RUNNING", "服务运行中"); |
| | | ChangeTcpServerStatus("RUNNING", this.lang("Tr.TcpServer.Running")); |
| | | } |
| | | else if (tcpServer.State != SuperSocket.SocketBase.ServerState.Running) |
| | | { |
| | | if (!tcpServer.Setup(config.PortStart + index)) |
| | | { |
| | | ChangeTcpServerStatus("ERROR", this.lang("Tr.TcpServer.SettingFailed")); |
| | | return; |
| | | } |
| | | if (!tcpServer.Start()) |
| | | { |
| | | ChangeTcpServerStatus("ERROR", this.lang("Tr.TcpServer.StartFailed")); |
| | | return; |
| | | } |
| | | ChangeTcpServerStatus("RUNNING", this.lang("Tr.TcpServer.Running")); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | ChangeTcpServerStatus("ERROR", $"服务异常:{ex.Message}"); |
| | | ChangeTcpServerStatus("ERROR", $"{ex.Message}"); |
| | | tcpServer?.Stop(); |
| | | tcpServer = null; |
| | | } |
| | | } |
| | | |
| | | private void StopTcpServer() |
| | | { |
| | | if (tcpServer == null) return; |
| | | try |
| | | { |
| | | tcpServer.Stop(); |
| | | tcpServer = null; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 更新Tcp服务器状态 |
| | | /// </summary> |
| | | /// <param name="status"></param> |
| | | /// <param name="info"></param> |
| | | private void ChangeTcpServerStatus(string status, string info) |
| | | { |
| | | Dispatcher.Invoke(() => |
| | |
| | | }); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 停止Tcp服务器 |
| | | /// </summary> |
| | | private void StopTcpServer() |
| | | { |
| | | try |
| | | { |
| | | tcpServer?.Stop(); |
| | | tcpServer = null; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 释放资源 |
| | | /// </summary> |
| | | public void RelaseResource() |
| | | { |
| | | StopTcpServer(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Tcp消息处理 |
| | | /// </summary> |
| | | /// <param name="session"></param> |
| | | /// <param name="requestInfo"></param> |
| | | private void TcpServer_NewRequestReceived(TcpSession session, StringRequestInfo requestInfo) |
| | | { |
| | | string msg = requestInfo.Body; |
| | |
| | | condition = values[4], |
| | | updateTime = values[5] |
| | | }); |
| | | session.Send("1"); |
| | | //session.Send("1"); |
| | | } |
| | | |
| | | public void RefreshCount(int ok, int ng) |
| | | { |
| | | infoTable.UpdateNumber(infoTable.okCount + ok, infoTable.ngCount + ng); |
| | | IniFileHelper.WriteIniData($"Oven_{index}", "Pass", infoTable.okCount.ToString(), |
| | | this.CountIniPath); |
| | | IniFileHelper.WriteIniData($"Oven_{index}", "Fail", infoTable.ngCount.ToString(), |
| | | this.CountIniPath); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 读取保存的数据 |
| | | /// </summary> |
| | | public void ReadCount() |
| | | { |
| | | try |
| | | { |
| | | int ok = Convert.ToInt32(IniFileHelper.ReadIniData($"Oven_{index}", "Pass", "", CountIniPath)); |
| | | int ng = Convert.ToInt32(IniFileHelper.ReadIniData($"Oven_{index}", "Fail", "", CountIniPath)); |
| | | infoTable.UpdateNumber(ok, ng); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | //do nothing |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 计数清零 |
| | | /// </summary> |
| | | public void ClearNumber() |
| | | { |
| | | infoTable.UpdateNumber(0, 0); |
| | | IniFileHelper.WriteIniData($"Oven_{index}", "Pass", infoTable.okCount.ToString(), |
| | | this.CountIniPath); |
| | | IniFileHelper.WriteIniData($"Oven_{index}", "Fail", infoTable.ngCount.ToString(), |
| | | this.CountIniPath); |
| | | } |
| | | |
| | | private void UserControl_Loaded(object sender, RoutedEventArgs e) |
| | |
| | | { |
| | | StartTcpServer(); |
| | | } |
| | | |
| | | public void SaveTempFile(string filePath) |
| | | { |
| | | try |
| | | { |
| | | FileInfo fi = new FileInfo(filePath); |
| | | if (!fi.Directory.Exists) |
| | | { |
| | | fi.Directory.Create(); //文件不存在,创建文件 |
| | | } |
| | | |
| | | using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write)) |
| | | using (StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8)) |
| | | { |
| | | string title = string.Join(",", detailTempratures.Keys) + ",平均值"; |
| | | sw.WriteLine(title); |
| | | |
| | | for (int i = 0; i < tempratures.Count; i++) |
| | | { |
| | | string line = ""; |
| | | foreach (string key in detailTempratures.Keys) |
| | | { |
| | | if (detailTempratures[key] == null || detailTempratures[key].Count <= i) |
| | | { |
| | | line += ","; |
| | | } |
| | | else |
| | | { |
| | | line += $"{detailTempratures[key][i]},"; |
| | | } |
| | | } |
| | | line += tempratures[i]; |
| | | sw.WriteLine(line); |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine(ex.ToString()); |
| | | } |
| | | } |
| | | } |
| | | } |