using FJ500Comm; using Microsoft.Extensions.Logging; using SlnMesnac.Common; using SlnMesnac.Config; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using TouchSocket.Core; using TouchSocket.Sockets; #region << 版 本 注 释 >> /*-------------------------------------------------------------------- * 版权所有 (c) 2024 WenJY 保留所有权利。 * CLR版本:4.0.30319.42000 * 机器名称:LAPTOP-E0N2L34V * 命名空间:SlnMesnac.TouchSocket * 唯一标识:496f8d2b-70e3-4a05-ae18-a9b0fcd06b82 * * 创建者:WenJY * 电子邮箱:wenjy@mesnac.com * 创建时间:2024-03-27 21:58:35 * 版本:V1.0.0 * 描述: * *-------------------------------------------------------------------- * 修改人: * 时间: * 修改说明: * * 版本:V1.0.0 *--------------------------------------------------------------------*/ #endregion << 版 本 注 释 >> namespace SlnMesnac.TouchSocket { public class UdpServer { private readonly UdpSession udpService = new UdpSession(); private ILogger _logger; /// /// 接收喷码机反馈 /// public delegate void ReceivedPMCode(string str); public static event ReceivedPMCode? ReceivedPMCodeEvent; private FJ500SP fj500s = new FJ500SP(); public UdpServer(ILogger logger) { _logger = logger; } public void Init(int serverPort) { try { udpService.Received = (c, e) => { string result = e.ByteBlock.ToString(); _logger.LogInformation("收到喷码机回复=====》"+result); return EasyTask.CompletedTask; }; udpService.Setup(new TouchSocketConfig() .SetBindIPHost(new IPHost(serverPort))); udpService.Start(); _logger.LogInformation($"UdpServer启动成功,监听端口:{serverPort}"); checkStatus(); } catch (Exception ex) { _logger.LogError($"UdpServer启动异常:{ex.Message}"); } } /// /// 发送条码数据 /// /// public void SendMessage(string message) { string[] data = new string[] { $"{message}" }; string str = fj500s.SendData(data, 2); udpService.Send(new IPHost("192.168.2.51:3000").EndPoint, str); } public void checkStatus() { Task.Run(() => { while (true) { try { //发送检查状态指令 SendMessage(fj500s.CheckState()); }catch (Exception ex) { _logger.LogError("checkStatus异常:"+ex.Message); } Thread.Sleep(1000*30); } }); } } }