|
|
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<UdpServer> _logger;
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 接收喷码机反馈
|
|
|
/// </summary>
|
|
|
public delegate void ReceivedPMCode(string str);
|
|
|
public static event ReceivedPMCode? ReceivedPMCodeEvent;
|
|
|
|
|
|
|
|
|
|
|
|
private FJ500SP fj500s = new FJ500SP();
|
|
|
|
|
|
|
|
|
public UdpServer(ILogger<UdpServer> 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}");
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 发送条码数据
|
|
|
/// </summary>
|
|
|
/// <param name="message"></param>
|
|
|
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);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|