| | |
| | | using Dapper; |
| | | namespace GZ.Projects.HnSx |
| | | { |
| | | /// <summary> |
| | | /// äºä»¶ |
| | | /// </summary> |
| | | public partial class ViewModel : System.ComponentModel.INotifyPropertyChanged |
| | | { |
| | | /// <summary> |
| | | /// äºä»¶ |
| | | /// </summary> |
| | | public partial class ViewModel : System.ComponentModel.INotifyPropertyChanged |
| | | { |
| | | bool IsExitApp = false; |
| | | ConcurrentStack<int> ExitJudgeStack = new ConcurrentStack<int>(); |
| | | System.Net.HttpListener HttpSvcHost = null; |
| | | |
| | | #region View1äºä»¶ |
| | | /// <summary> |
| | | System.Net.HttpListener HttpSvcHost = null; |
| | | |
| | | #region View1äºä»¶ |
| | | /// <summary> |
| | | /// View1æå¼äºä»¶ |
| | | /// </summary> |
| | | /// <param name="sender"></param> |
| | | /// <param name="e"></param> |
| | | public void View1_LoadEvent(object sender, RoutedEventArgs e) |
| | | { |
| | | |
| | | try |
| | | { |
| | | //HttpSvcHost = new System.Net.HttpListener(); |
| | | //HttpSvcHost.AuthenticationSchemes = System.Net.AuthenticationSchemes.Anonymous; |
| | | //HttpSvcHost.Prefixes.Add("http://127.0.0.1:8808/"); |
| | | //HttpSvcHost.Start(); |
| | | //HttpSvcHost.BeginGetContext(HttpSvcListenerCallback, null); |
| | | } |
| | | catch(Exception ex) |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Error(ex.ToString()); |
| | | } |
| | | View1_Init(sender, e); |
| | | |
| | | try |
| | | { |
| | | #region [èæ¬][20250701110610426][ä¸å¡é»è¾.Program1] |
| | | AutoThread.InvokeMethod(AutoThread.Instance, "TaskEverythingRun"); |
| | | #endregion [èæ¬][20250701110610426][ä¸å¡é»è¾.Program1] |
| | | } |
| | | catch(Exception ex) |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Error(ex.ToString()); |
| | | } |
| | | finally |
| | | { |
| | | } |
| | | /// <summary> |
| | | /// ç¨åºç段:Program2 |
| | | /// æè¿°: |
| | | /// </summary> |
| | | System.Threading.Tasks.Task.Factory.StartNew(() => |
| | | { |
| | | System.Threading.Thread.CurrentThread.IsBackground = true; |
| | | ExitJudgeStack.Push(0); |
| | | //ä¸ç´æ§è¡ï¼ç´å°æ»¡è¶³ç»ææ¡ä»¶ |
| | | while(true) |
| | | { |
| | | if (IsExitApp) { break; } |
| | | try |
| | | { |
| | | #region [èæ¬][20250704090126015][ä¸å¡é»è¾.Program2] |
| | | AutoThread.InvokeMethod(AutoThread.Instance, "ThreadSettingInit", new object[] { tag }); |
| | | #endregion [èæ¬][20250704090126015][ä¸å¡é»è¾.Program2] |
| | | } |
| | | catch(Exception ex) |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Error(ex.ToString()); |
| | | } |
| | | finally |
| | | { |
| | | System.Threading.Thread.Sleep(10000); |
| | | } |
| | | } |
| | | ExitJudgeStack.TryPop(out int exitJudgeVal); |
| | | }); |
| | | |
| | | } |
| | | /// <summary> |
| | | public void View1_LoadEvent(object sender, RoutedEventArgs e) |
| | | { |
| | | |
| | | try |
| | | { |
| | | //HttpSvcHost = new System.Net.HttpListener(); |
| | | //HttpSvcHost.AuthenticationSchemes = System.Net.AuthenticationSchemes.Anonymous; |
| | | //HttpSvcHost.Prefixes.Add("http://127.0.0.1:8808/"); |
| | | //HttpSvcHost.Start(); |
| | | //HttpSvcHost.BeginGetContext(HttpSvcListenerCallback, null); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Error(ex.ToString()); |
| | | } |
| | | View1_Init(sender, e); |
| | | |
| | | try |
| | | { |
| | | #region [èæ¬][20250701110610426][ä¸å¡é»è¾.Program1] |
| | | AutoThread.InvokeMethod(AutoThread.Instance, "TaskEverythingRun"); |
| | | #endregion [èæ¬][20250701110610426][ä¸å¡é»è¾.Program1] |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Error(ex.ToString()); |
| | | } |
| | | finally |
| | | { |
| | | } |
| | | /// <summary> |
| | | /// ç¨åºç段:Program2 |
| | | /// æè¿°: |
| | | /// </summary> |
| | | System.Threading.Tasks.Task.Factory.StartNew(() => |
| | | { |
| | | System.Threading.Thread.CurrentThread.IsBackground = true; |
| | | ExitJudgeStack.Push(0); |
| | | //ä¸ç´æ§è¡ï¼ç´å°æ»¡è¶³ç»ææ¡ä»¶ |
| | | while (true) |
| | | { |
| | | if (IsExitApp) { break; } |
| | | try |
| | | { |
| | | #region [èæ¬][20250704090126015][ä¸å¡é»è¾.Program2] |
| | | AutoThread.InvokeMethod(AutoThread.Instance, "ThreadwebSoc"); |
| | | #endregion [èæ¬][20250704090126015][ä¸å¡é»è¾.Program2] |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Error(ex.ToString()); |
| | | } |
| | | finally |
| | | { |
| | | System.Threading.Thread.Sleep(10000); |
| | | } |
| | | } |
| | | ExitJudgeStack.TryPop(out int exitJudgeVal); |
| | | }); |
| | | /// <summary> |
| | | /// ç¨åºç段:Program2 |
| | | /// æè¿°: |
| | | /// </summary> |
| | | System.Threading.Tasks.Task.Factory.StartNew(() => |
| | | { |
| | | System.Threading.Thread.CurrentThread.IsBackground = true; |
| | | ExitJudgeStack.Push(0); |
| | | //ä¸ç´æ§è¡ï¼ç´å°æ»¡è¶³ç»ææ¡ä»¶ |
| | | while (true) |
| | | { |
| | | if (IsExitApp) { break; } |
| | | try |
| | | { |
| | | #region [èæ¬][20250704090126015][ä¸å¡é»è¾.Program2] |
| | | AutoThread.InvokeMethod(AutoThread.Instance, "ThreadSettingInit", new object[] { tag }); |
| | | #endregion [èæ¬][20250704090126015][ä¸å¡é»è¾.Program2] |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Error(ex.ToString()); |
| | | } |
| | | finally |
| | | { |
| | | System.Threading.Thread.Sleep(10000); |
| | | } |
| | | } |
| | | ExitJudgeStack.TryPop(out int exitJudgeVal); |
| | | }); |
| | | |
| | | } |
| | | /// <summary> |
| | | /// View1å
³éäºä»¶ |
| | | /// </summary> |
| | | /// <param name="sender"></param> |
| | | /// <param name="e"></param> |
| | | public void View1_CloseEvent(object sender, System.ComponentModel.CancelEventArgs e) |
| | | { |
| | | |
| | | try |
| | | { |
| | | System.Threading.Tasks.Task.Factory.StartNew(() => { MessageBox.Show("ç¨åºæ£å¨å
³éï¼è¯·çå¾
..."); }); |
| | | } |
| | | catch(Exception ex) |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Error(ex.ToString()); |
| | | } |
| | | try |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Debug("[å
³éå¤ç][Start]å
³éHttpæå¡"); |
| | | if(HttpSvcHost!=null) |
| | | { |
| | | HttpSvcHost.Stop(); |
| | | } |
| | | } |
| | | catch(Exception ex) |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Error(ex.ToString()); |
| | | } |
| | | finally |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Debug("[å
³éå¤ç][End]å
³éHttpæå¡"); |
| | | } |
| | | public void View1_CloseEvent(object sender, System.ComponentModel.CancelEventArgs e) |
| | | { |
| | | |
| | | try |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Debug("[å
³éå¤ç][Start]夿ä¸å¡å¤çç¶æ"); |
| | | IsExitApp = true; |
| | | //int exitCnt = 0; |
| | | while |
| | | ( |
| | | ExitJudgeStack.Count > 0 |
| | | ) |
| | | { |
| | | System.Threading.Thread.Sleep(100); |
| | | //++exitCnt; |
| | | //10ç§æªç»æå强å¶å
³é |
| | | //if (exitCnt >= 100) |
| | | //{ |
| | | // break; |
| | | //} |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Error(ex.ToString()); |
| | | } |
| | | finally |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Debug("[å
³éå¤ç][End]夿ä¸å¡å¤çç¶æ"); |
| | | } |
| | | |
| | | try |
| | | { |
| | | System.Threading.Tasks.Task.Factory.StartNew(() => { MessageBox.Show("ç¨åºæ£å¨å
³éï¼è¯·çå¾
..."); }); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Error(ex.ToString()); |
| | | } |
| | | try |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Debug("[å
³éå¤ç][Start]å
³éHttpæå¡"); |
| | | if (HttpSvcHost != null) |
| | | { |
| | | HttpSvcHost.Stop(); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Error(ex.ToString()); |
| | | } |
| | | finally |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Debug("[å
³éå¤ç][End]å
³éHttpæå¡"); |
| | | } |
| | | |
| | | try |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Debug("[å
³éå¤ç][Start]夿ä¸å¡å¤çç¶æ"); |
| | | IsExitApp = true; |
| | | //int exitCnt = 0; |
| | | while |
| | | ( |
| | | ExitJudgeStack.Count > 0 |
| | | ) |
| | | { |
| | | System.Threading.Thread.Sleep(100); |
| | | //++exitCnt; |
| | | //10ç§æªç»æå强å¶å
³é |
| | | //if (exitCnt >= 100) |
| | | //{ |
| | | // break; |
| | | //} |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Error(ex.ToString()); |
| | | } |
| | | finally |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Debug("[å
³éå¤ç][End]夿ä¸å¡å¤çç¶æ"); |
| | | } |
| | | |
| | | e.Cancel = true; |
| | | System.Threading.Tasks.Task.Factory.StartNew(() => |
| | | { |
| | | try |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Debug("[å
³éå¤ç][Start]å
³éPLC"); |
| | | Device.PLC1?.Stop(); |
| | | } |
| | | catch(Exception ex) |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Error(ex.ToString()); |
| | | } |
| | | finally |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Debug("[å
³éå¤ç][End]å
³éPLC"); |
| | | } |
| | | try |
| | | { |
| | | |
| | | Conn.logé»è®¤æ¥å¿.Debug("[å
³éå¤ç][Start]夿PLCç¶æ"); |
| | | //int exitCnt = 0; |
| | | while |
| | | ( |
| | | false |
| | | || (Device.PLC1 == null ? false : Device.PLC1.State != GZ.Device.PLC.PlcRunState.Stoped) |
| | | ) |
| | | { |
| | | System.Threading.Thread.Sleep(1000); |
| | | //++exitCnt; |
| | | //10ç§æªç»æå强å¶å
³é |
| | | //if (exitCnt >= 100) |
| | | //{ |
| | | // break; |
| | | //} |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Error(ex.ToString()); |
| | | } |
| | | finally |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Debug("[å
³éå¤ç][End]夿PLCç¶æ"); |
| | | } |
| | | Application.Current.Dispatcher.Invoke(() => { Environment.Exit(0); }); |
| | | }); |
| | | |
| | | //System.Windows.Application.Current.Shutdown(); |
| | | } |
| | | /// <summary> |
| | | System.Threading.Tasks.Task.Factory.StartNew(() => |
| | | { |
| | | try |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Debug("[å
³éå¤ç][Start]å
³éPLC"); |
| | | Device.PLC1?.Stop(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Error(ex.ToString()); |
| | | } |
| | | finally |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Debug("[å
³éå¤ç][End]å
³éPLC"); |
| | | } |
| | | try |
| | | { |
| | | |
| | | Conn.logé»è®¤æ¥å¿.Debug("[å
³éå¤ç][Start]夿PLCç¶æ"); |
| | | //int exitCnt = 0; |
| | | while |
| | | ( |
| | | false |
| | | || (Device.PLC1 == null ? false : Device.PLC1.State != GZ.Device.PLC.PlcRunState.Stoped) |
| | | ) |
| | | { |
| | | System.Threading.Thread.Sleep(1000); |
| | | //++exitCnt; |
| | | //10ç§æªç»æå强å¶å
³é |
| | | //if (exitCnt >= 100) |
| | | //{ |
| | | // break; |
| | | //} |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Error(ex.ToString()); |
| | | } |
| | | finally |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Debug("[å
³éå¤ç][End]夿PLCç¶æ"); |
| | | } |
| | | Application.Current.Dispatcher.Invoke(() => { Environment.Exit(0); }); |
| | | }); |
| | | |
| | | //System.Windows.Application.Current.Shutdown(); |
| | | } |
| | | /// <summary> |
| | | /// View1åå§å |
| | | /// </summary> |
| | | /// <param name="sender"></param> |
| | | /// <param name="e"></param> |
| | | public void View1_Init(object sender, RoutedEventArgs e) |
| | | { |
| | | } |
| | | #endregion |
| | | |
| | | #region 忢tab页 |
| | | public void tab_SelectionChanged(object sender, EventArgs e) |
| | | { |
| | | //TabItem ti = (sender as TabControl).SelectedItem as TabItem; |
| | | //MessageBox.Show(ti.Name); |
| | | } |
| | | #endregion |
| | | |
| | | #region Httpæå¡çå¬ |
| | | private void HttpSvcListenerCallback(IAsyncResult ar) |
| | | { |
| | | try |
| | | { |
| | | HttpSvcHost.BeginGetContext(HttpSvcListenerCallback, null); |
| | | System.Net.HttpListenerContext context = HttpSvcHost.EndGetContext(ar); |
| | | System.Net.HttpListenerRequest request = context.Request; |
| | | System.Net.HttpListenerResponse response = context.Response; |
| | | switch(request.LocalEndPoint.ToString()) |
| | | { |
| | | case "127.0.0.1:8808": |
| | | { |
| | | using (var reader = new System.IO.StreamReader(request.InputStream, System.Text.Encoding.UTF8)) |
| | | { |
| | | string requestJson = reader.ReadToEnd(); |
| | | public void View1_Init(object sender, RoutedEventArgs e) |
| | | { |
| | | } |
| | | #endregion |
| | | |
| | | string respstr = HttpSvcListenerCallback_Api(request.HttpMethod,request.Url.AbsolutePath,requestJson,out System.Net.HttpStatusCode statusCode); |
| | | #region 忢tab页 |
| | | public void tab_SelectionChanged(object sender, EventArgs e) |
| | | { |
| | | //TabItem ti = (sender as TabControl).SelectedItem as TabItem; |
| | | //MessageBox.Show(ti.Name); |
| | | } |
| | | #endregion |
| | | |
| | | string logContent=""; |
| | | logContent += $"\r\n[{request.HttpMethod}]{request.Url.AbsolutePath}"; |
| | | logContent += $"\r\n[request]{requestJson}"; |
| | | logContent += $"\r\n[response]{respstr}"; |
| | | Conn.logé»è®¤æ¥å¿?.Info(logContent); |
| | | |
| | | byte[] bytstr = Encoding.UTF8.GetBytes(respstr); |
| | | response.StatusCode = (int)statusCode; |
| | | response.SendChunked = false; |
| | | response.ContentLength64 = bytstr.Length; |
| | | response.OutputStream.Write(bytstr, 0, bytstr.Length); |
| | | response.Close(); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | catch(Exception ex) |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Error(ex.ToString()); |
| | | } |
| | | } |
| | | private System.String HttpSvcListenerCallback_Api(System.String method,System.String path,System.String requestJson,out System.Net.HttpStatusCode statusCode) |
| | | { |
| | | try |
| | | { |
| | | switch(method) |
| | | { |
| | | case "POST": |
| | | { |
| | | switch(path) |
| | | { |
| | | case "/Api/sendTask": |
| | | { |
| | | statusCode = System.Net.HttpStatusCode.OK; |
| | | return ""; |
| | | } |
| | | case "/Api/cancelTask": |
| | | { |
| | | statusCode = System.Net.HttpStatusCode.OK; |
| | | return ""; |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | statusCode = System.Net.HttpStatusCode.NotFound; |
| | | return ""; |
| | | } |
| | | catch(Exception ex) |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Error(ex.ToString()); |
| | | statusCode = System.Net.HttpStatusCode.InternalServerError; |
| | | return ""; |
| | | } |
| | | } |
| | | #endregion |
| | | } |
| | | #region Httpæå¡çå¬ |
| | | private void HttpSvcListenerCallback(IAsyncResult ar) |
| | | { |
| | | try |
| | | { |
| | | HttpSvcHost.BeginGetContext(HttpSvcListenerCallback, null); |
| | | System.Net.HttpListenerContext context = HttpSvcHost.EndGetContext(ar); |
| | | System.Net.HttpListenerRequest request = context.Request; |
| | | System.Net.HttpListenerResponse response = context.Response; |
| | | switch (request.LocalEndPoint.ToString()) |
| | | { |
| | | case "127.0.0.1:8808": |
| | | { |
| | | using (var reader = new System.IO.StreamReader(request.InputStream, System.Text.Encoding.UTF8)) |
| | | { |
| | | string requestJson = reader.ReadToEnd(); |
| | | |
| | | string respstr = HttpSvcListenerCallback_Api(request.HttpMethod, request.Url.AbsolutePath, requestJson, out System.Net.HttpStatusCode statusCode); |
| | | |
| | | string logContent = ""; |
| | | logContent += $"\r\n[{request.HttpMethod}]{request.Url.AbsolutePath}"; |
| | | logContent += $"\r\n[request]{requestJson}"; |
| | | logContent += $"\r\n[response]{respstr}"; |
| | | Conn.logé»è®¤æ¥å¿?.Info(logContent); |
| | | |
| | | byte[] bytstr = Encoding.UTF8.GetBytes(respstr); |
| | | response.StatusCode = (int)statusCode; |
| | | response.SendChunked = false; |
| | | response.ContentLength64 = bytstr.Length; |
| | | response.OutputStream.Write(bytstr, 0, bytstr.Length); |
| | | response.Close(); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Error(ex.ToString()); |
| | | } |
| | | } |
| | | private System.String HttpSvcListenerCallback_Api(System.String method, System.String path, System.String requestJson, out System.Net.HttpStatusCode statusCode) |
| | | { |
| | | try |
| | | { |
| | | switch (method) |
| | | { |
| | | case "POST": |
| | | { |
| | | switch (path) |
| | | { |
| | | case "/Api/sendTask": |
| | | { |
| | | statusCode = System.Net.HttpStatusCode.OK; |
| | | return ""; |
| | | } |
| | | case "/Api/cancelTask": |
| | | { |
| | | statusCode = System.Net.HttpStatusCode.OK; |
| | | return ""; |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | statusCode = System.Net.HttpStatusCode.NotFound; |
| | | return ""; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Conn.logé»è®¤æ¥å¿.Error(ex.ToString()); |
| | | statusCode = System.Net.HttpStatusCode.InternalServerError; |
| | | return ""; |
| | | } |
| | | } |
| | | #endregion |
| | | } |
| | | } |
| | | |