From d60a4e6e5a99d1570fd3ebcb1e502c7f1198e345 Mon Sep 17 00:00:00 2001 From: liuwf Date: Mon, 13 Jan 2025 14:48:26 +0800 Subject: [PATCH] =?UTF-8?q?add-=E6=8F=90=E4=BA=A4=E7=A0=94=E5=8F=91?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SlnMesnac.TouchSocket/MyTcpClient.cs | 83 +++++++++++++++++++++++ SlnMesnac.TouchSocket/TouchSocketSetup.cs | 2 + SlnMesnac.WPF/ViewModel/IndexViewModel.cs | 43 ++++++++++-- SlnMesnac.WPF/Views/IndexPage.xaml | 10 +-- 4 files changed, 129 insertions(+), 9 deletions(-) create mode 100644 SlnMesnac.TouchSocket/MyTcpClient.cs diff --git a/SlnMesnac.TouchSocket/MyTcpClient.cs b/SlnMesnac.TouchSocket/MyTcpClient.cs new file mode 100644 index 0000000..7fb8ca0 --- /dev/null +++ b/SlnMesnac.TouchSocket/MyTcpClient.cs @@ -0,0 +1,83 @@ +using Microsoft.Extensions.Logging; +using SlnMesnac.Config; +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using System.Threading.Tasks; +using TouchSocket.Core; +using TouchSocket.Sockets; + +namespace SlnMesnac.TouchSocket +{ + public class MyTcpClient : TcpClient + { + private DebugConfig config = DebugConfig.Instance; + + private TcpClient tcpClient = new TcpClient(); + + //识别结果 + public delegate void RefreshResult(string result); + public static event RefreshResult RefreshResultEvent; + + + public MyTcpClient() + { + + } + + + + public async Task StartAsync(string ip, string port) + { + try + { + tcpClient.Connecting = (client, e) => { + Console.WriteLine($"客户端{client.Port}正在接入服务"); + return EasyTask.CompletedTask; + }; + tcpClient.Connected = (client, e) => { + Console.WriteLine($"客户端{client.Port}接入服务成功"); + return EasyTask.CompletedTask; + }; + tcpClient.Disconnected = (client, e) => { + Console.WriteLine($"客户端{client.Port}断开连接"); + return EasyTask.CompletedTask; + }; + + tcpClient.Received = (client, e) => + { + //从服务器收到信息 + var mes = Encoding.UTF8.GetString(e.ByteBlock.Buffer, 0, e.ByteBlock.Len);//注意:数据长度是byteBlock.Len + Console.WriteLine($"{client.Port}接收到信息:{mes}"); + RefreshResultEvent?.Invoke(mes); + return EasyTask.CompletedTask; + }; + await tcpClient.ConnectAsync($"{ip}:{port}"); + }catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + } + + + public void sendMessage(string type,string msg) + { + if(type== "ocr") + { + + }else if(type == "pci") + { + // 使用转义字符正确构造字符串 + string message = $"\x00\x00\x00+{{\"image_path\": \"{msg}\"}}"; + tcpClient.Send(message); + } + + } + + + + + + } +} diff --git a/SlnMesnac.TouchSocket/TouchSocketSetup.cs b/SlnMesnac.TouchSocket/TouchSocketSetup.cs index 7428c6d..e2959eb 100644 --- a/SlnMesnac.TouchSocket/TouchSocketSetup.cs +++ b/SlnMesnac.TouchSocket/TouchSocketSetup.cs @@ -16,10 +16,12 @@ namespace SlnMesnac.TouchSocket { services.AddSingleton();//注册TouchSocket的服务 services.AddSingleton(); + } public static IApplicationBuilder UseTouchSocketExtensions(this IApplicationBuilder app) { + var _server = app.ApplicationServices.GetService(); _server.Init(7024); return app; diff --git a/SlnMesnac.WPF/ViewModel/IndexViewModel.cs b/SlnMesnac.WPF/ViewModel/IndexViewModel.cs index 3cf8514..97b12b9 100644 --- a/SlnMesnac.WPF/ViewModel/IndexViewModel.cs +++ b/SlnMesnac.WPF/ViewModel/IndexViewModel.cs @@ -1,6 +1,7 @@ using GalaSoft.MvvmLight; using GalaSoft.MvvmLight.Command; using HslCommunication.Enthernet; +using HslCommunication.Secs.Types; using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; @@ -21,12 +22,14 @@ using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; +using System.Security.Policy; using System.ServiceModel.Channels; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows; using System.Windows.Media; +using TouchSocket.Sockets; using static System.Net.Mime.MediaTypeNames; namespace SlnMesnac.WPF.ViewModel @@ -37,7 +40,7 @@ namespace SlnMesnac.WPF.ViewModel private GunHelper gunHelper = GunHelper.Instance; public RelayCommand ResetCommand { get; set;} //导入照片 - public RelayCommand InputSourceCommand { get; set;} + public RelayCommand InputSourceCommand { get; set;} private LogoBusiness logoBusiness = null; private LightHelper lightHelper = LightHelper.Instance; @@ -50,9 +53,13 @@ namespace SlnMesnac.WPF.ViewModel private TcpServer? tcpServer; private PlcPool plcPool = null; + private MyTcpClient pciClient = new MyTcpClient(); + private MyTcpClient ocrClient = new MyTcpClient(); + public IndexViewModel() { + MyTcpClient.RefreshResultEvent += RefreshCheckResult; logoIdentifyService = App.ServiceProvider.GetService(); LogoBusiness.RefreshMessageEvent += RefreshMessage; LogoBusiness.RefreshBoxInfoEvent += RefreshBoxInfo; @@ -60,7 +67,7 @@ namespace SlnMesnac.WPF.ViewModel LogoBusiness.RefreshDataGridEvent += RefreshDataGrid; LightHelper.RefreshMessageEvent += RefreshMessage; ResetCommand = new RelayCommand(Reset); - InputSourceCommand = new RelayCommand(InputSource); + InputSourceCommand = new RelayCommand(InputSource); RefreshDataGrid(); plcPool = App.ServiceProvider.GetService(); @@ -76,8 +83,26 @@ namespace SlnMesnac.WPF.ViewModel // gunHelper.SendData("OK"); OKIsVis = Visibility.Hidden; NGIsVis = Visibility.Hidden; + + Init(); + } + + private void Init() + { + Task.Run(async () => + { + await ocrClient.StartAsync("127.0.0.1", "10001"); + await pciClient.StartAsync("127.0.0.1", "9999"); + }); + } + private void RefreshCheckResult(string message) + { + RefreshMessage(message); + } + + /// /// 复位方法 /// 复位PLC放行,复位报警灯 @@ -95,7 +120,7 @@ namespace SlnMesnac.WPF.ViewModel /// /// 导入按钮,导入图片进行OCR识别与验证 /// - private void InputSource() + private void InputSource(string type) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "图片文件|*.jpg;*.png;*.bmp"; @@ -109,8 +134,16 @@ namespace SlnMesnac.WPF.ViewModel string fileName = Path.GetFileName(selectedFilePath); RefreshPicture(File.ReadAllBytes(selectedFilePath)); - - + if(type== "ocr") + { + ocrClient.sendMessage("ocr","hello world"); + } + else if(type== "pci") + { + pciClient.sendMessage("pci",fileName); + } + + } } diff --git a/SlnMesnac.WPF/Views/IndexPage.xaml b/SlnMesnac.WPF/Views/IndexPage.xaml index d424018..922585c 100644 --- a/SlnMesnac.WPF/Views/IndexPage.xaml +++ b/SlnMesnac.WPF/Views/IndexPage.xaml @@ -148,11 +148,13 @@ - +