| | |
| | | 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.ComponentModel; |
| | | using System.Net; |
| | | using System.Net.Sockets; |
| | | 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 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() |
| | |
| | | multiChart.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) |