56 lines
1.9 KiB
C#
56 lines
1.9 KiB
C#
|
||
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)
|
||
{
|
||
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
|
||
|
||
//发送报警信息
|
||
//包头
|
||
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);
|
||
}
|
||
}
|
||
}
|