2025-12-20 13:23:44 +08:00
|
|
|
|
|
|
|
|
|
|
using Infrastructure;
|
|
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
|
|
namespace DOAN.ServiceCore.MyMatchPush
|
|
|
|
|
|
{
|
|
|
|
|
|
public class Watchup
|
|
|
|
|
|
{
|
|
|
|
|
|
private static int PackageSort = 1;
|
|
|
|
|
|
public static bool StartPush(string message, SocketGatewayServer _socketGateway)
|
|
|
|
|
|
{
|
2025-12-20 15:48:20 +08:00
|
|
|
|
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
|
2025-12-20 13:23:44 +08:00
|
|
|
|
|
|
|
|
|
|
//发送报警信息
|
|
|
|
|
|
//包头
|
|
|
|
|
|
byte[] packageHeader = { 0x5A };
|
|
|
|
|
|
|
|
|
|
|
|
//包序号
|
|
|
|
|
|
byte[] packsort = { (byte)PackageSort };
|
|
|
|
|
|
PackageSort++;
|
|
|
|
|
|
|
|
|
|
|
|
if (PackageSort > 255)
|
|
|
|
|
|
{
|
|
|
|
|
|
PackageSort = 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
// 地址
|
|
|
|
|
|
byte[] IPaddress = { 0xff, 0xff, 0xff, 0xff };
|
|
|
|
|
|
//命令码
|
|
|
|
|
|
byte[] CommandCode = { 0xE0 };
|
|
|
|
|
|
//数据长
|
|
|
|
|
|
//string message = $"产线:{record.LineCode},\n故障类型:{record.FaultDict},\n故障内容:{record.FaultContext},\n报警人:{record.AskPerson}";
|
|
|
|
|
|
// string message = $"产线:{record.LineCode}";
|
|
|
|
|
|
byte[] MessageData = Encoding.GetEncoding("GBK").GetBytes(message);
|
|
|
|
|
|
byte[] MessageLength = { (byte)MessageData.Length };
|
|
|
|
|
|
// === 先拼接除 CRC 之外的所有部分 ===
|
|
|
|
|
|
byte[] dataWithoutCRC =
|
|
|
|
|
|
packageHeader
|
|
|
|
|
|
.Concat(packsort)
|
|
|
|
|
|
.Concat(IPaddress)
|
|
|
|
|
|
.Concat(CommandCode)
|
|
|
|
|
|
.Concat(MessageLength)
|
|
|
|
|
|
.Concat(MessageData).ToArray();
|
|
|
|
|
|
|
|
|
|
|
|
//CRC : 校验和,CRC 前面所有数据之和除 256 的余数
|
|
|
|
|
|
byte[] CRC = { SocketGatewayServer.CalculateChecksum(dataWithoutCRC) };
|
|
|
|
|
|
byte[] Body = dataWithoutCRC.Concat(CRC).ToArray();
|
|
|
|
|
|
|
|
|
|
|
|
return _socketGateway.SendToGateway(Body);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|