修改代码

This commit is contained in:
cli 2024-11-12 14:09:01 +08:00
parent 0d10c956db
commit 67dfab8a3c
3 changed files with 81 additions and 120 deletions

View File

@ -0,0 +1,27 @@
using JiShe.CollectBus.Protocol.Contracts.Interfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TouchSocket.Core;
namespace JiShe.CollectBus.Protocol.Contracts.Adapters
{
public class StandardFixedHeaderDataHandlingAdapter : CustomFixedHeaderDataHandlingAdapter<CustomFixedHeaderRequestInfo>
{
/// <summary>
/// 接口实现,指示固定包头长度
/// </summary>
public override int HeaderLength => 3;
/// <summary>
/// 获取新实例
/// </summary>
/// <returns></returns>
protected override CustomFixedHeaderRequestInfo GetInstance()
{
return new CustomFixedHeaderRequestInfo();
}
}
}

View File

@ -0,0 +1,54 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TouchSocket.Core;
namespace JiShe.CollectBus.Protocol.Contracts.Interfaces
{
public class CustomFixedHeaderRequestInfo : IFixedHeaderRequestInfo
{
/// <summary>
/// 报文开始前缀
/// </summary>
public string StartPrefix { get; set; } = "68";
/// <summary>
/// 报文结束后缀
/// </summary>
public string EndPrefix { get; set; } = "16";
/// <summary>
/// 头部长度
/// </summary>
public int HeadLength = 5;
/// <summary>
/// 固定长度
/// </summary>
private const int FixedLength = 17;
/// <summary>
/// 报文长度
/// </summary>
public int PacketLength { get; set; }
/// <summary>
/// 控制域 C
/// </summary>
public int ControlDomain { get; set; }
public bool OnParsingHeader(ReadOnlySpan<byte> header)
{
throw new NotImplementedException();
}
public bool OnParsingBody(ReadOnlySpan<byte> body)
{
throw new NotImplementedException();
}
public int BodyLength { get; }
}
}

View File

@ -25,7 +25,6 @@ namespace JiShe.CollectBus.Protocol
{
return;
}
AnalysisData(cmdResult);
await Task.CompletedTask;
}
@ -176,125 +175,6 @@ namespace JiShe.CollectBus.Protocol
var a = $"{a1}{a2Dec.ToString().PadLeft(5, '0')}";
return a;
}
/// <summary>
/// 解析上行命令数据包
/// </summary>
/// <param name="commandReulst"></param>
public void AnalysisData(CommandReulst commandReulst)
{
switch (commandReulst.AFN)
{
case AFN.:
//commandReulst.fn
//1:全部确认
//2:全部否认
//3:按数据单元表示确认和否认
//4 硬件安全认证错误应答
break;
case AFN.:
break;
case AFN.:
AnalysisAFN02(commandReulst);
break;
case AFN.:
break;
case AFN.:
break;
case AFN.:
break;
case AFN.:
break;
case AFN.:
break;
case AFN.:
break;
case AFN.:
break;
case AFN.:
break;
case AFN.:
break;
case AFN.:
break;
case AFN.:
break;
case AFN.:
break;
case AFN.:
break;
case AFN.:
break;
default:
break;
}
}
//终端启动发送帧的MSA应为零其主站响应帧的MSA也应为零
public void AnalysisAFN02(CommandReulst commandReulst)
{
if (commandReulst.Fn == 1) //登录
{
Console.WriteLine($"{commandReulst.A},登录:{DateTime.Now}");
var reqParam = new ReqParameter2()
{
AFN = AFN.,
FunCode = (int)CFromStationFunCode.,
PRM = PRM.,
A = commandReulst.A,
Seq = new Seq()
{
TpV = TpV.,
FIRFIN = FIRFIN.,
CON = CON.,
PRSEQ = commandReulst.Seq.PRSEQ,
},
MSA = commandReulst.MSA,
Pn = 0,
Fn = 1
};
commandReulst.ReplyBytes = HexStringExtensions.BuildSendCommandBytes(reqParam);
}
else if (commandReulst.Fn == 2)//退出登录
{
Console.WriteLine($"{commandReulst.A},退出登录:{DateTime.Now}");
}
else if (commandReulst.Fn == 3)//心跳
{
Console.WriteLine($"{commandReulst.A},心跳:{DateTime.Now}");
AnalysisHeartbeat(commandReulst);
}
}
public void AnalysisHeartbeat(CommandReulst commandReulst)
{
if (commandReulst.Seq.TpV == TpV.)
{
//解析
}
if (commandReulst.Seq.CON == CON.)
{
var reqParam = new ReqParameter2()
{
AFN = AFN.,
FunCode = (int)CFromStationFunCode.,
PRM = PRM.,
A = commandReulst.A,
Seq = new Seq()
{
TpV = TpV.,
FIRFIN = FIRFIN.,
CON = CON.,
PRSEQ = commandReulst.Seq.PRSEQ,
},
MSA = commandReulst.MSA,
Pn = 0,
Fn = 1
};
commandReulst.ReplyBytes = HexStringExtensions.BuildSendCommandBytes(reqParam);
}
}
#endregion
}
}