MoS2/Framework/MECF.Framework.RT.EquipmentLibrary/HardwareUnits/MachineVision/HikVision/HikMVConnection.cs

75 lines
2.3 KiB
C#
Raw Normal View History

2026-06-15 10:56:30 +08:00
using Aitex.Core.RT.Log;
using MECF.Framework.Common.Communications;
using System;
using System.Linq;
namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.MachineVision.HikVision
{
public class HikMessage: MessageBase
{
public string RawMessage { get; set; } = "";
public double[] paras;
public bool Result { get; set; } = false;
}
public class HikMVConnection : TCPPortConnectionBase
{
public HikMVConnection(string address, string newline = "\r", bool isAsciiMode = true) : base(address, newline, isAsciiMode)
{
}
public override bool SendMessage(string message)
{
return base.SendMessage(message);
}
protected override MessageBase ParseResponse(string rawText)
{
HikMessage msg = new HikMessage();
msg.RawMessage = rawText;
if (msg.RawMessage.Length == 0)
{
LOG.Error($"empty response");
msg.IsFormatError = true;
return msg;
}
else if (msg.RawMessage.StartsWith("OK")&& msg.RawMessage.Contains(':'))
{
try
{
var m = msg.RawMessage.Split(':');
var values = m[1].Split(',');
msg.paras = new double[values.Length];
for (int i = 0; i < values.Length; i++)
{
msg.paras[i]= Convert.ToDouble(values[i]);
}
msg.Result = true;
}
catch (Exception)
{
LOG.Error($"Convert Response Failed From Camera{Address}({msg.RawMessage})");
msg.RawMessage = $"Convert Response Failed From Camera{Address}({msg.RawMessage})";
}
}
else if (msg.RawMessage.StartsWith("NG"))
{
LOG.Error($"NG Response From Camera{Address}");
}
else
{
LOG.Error($"Unknown Response From Camera{Address}({msg.RawMessage})");
msg.RawMessage = $"Unknown Response From Camera{Address}({msg.RawMessage})";
}
msg.IsResponse = true;
msg.IsAck = true;
return msg;
}
}
}