This repository has been archived on 2024-01-02. You can view files and clone it, but cannot push or open issues or pull requests.
Sic06/FrameworkLocal/RTEquipmentLibrary/HardwareUnits/TurboPumps/Pfeiffer/PumpMagpowerConnection.cs

73 lines
2.1 KiB
C#
Raw Normal View History

2023-01-13 10:57:37 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Permissions;
using System.Text;
using System.Threading.Tasks;
using Aitex.Core.RT.Log;
using MECF.Framework.Common.Communications;
namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.TurboPumps.Pfeiffer
{
public class MagpowerMessage : AsciiMessage
{
public string DeviceAddress { get; set; }
//public string Action { get; set; }
//public string Parameter { get; set; }
//public int DataLength { get; set; }
public string Data { get; set; }
public string ErrorText { get; set; }
}
public class PumpMagpowerConnection : SerialPortConnectionBase
{
public PumpMagpowerConnection(string portName) : base(portName)
{
}
//#adr,ok
//#adr,nnnnn,sssss,00000,0,ccccc,eeeee,ddddd,pppp,qqqq,jj,kk,lll,mmm
//#adr,nnnnn rpm
protected override MessageBase ParseResponse(string rawText)
{
MagpowerMessage msg = new MagpowerMessage();
msg.RawMessage = rawText;
if (rawText.Length <= 4)
{
LOG.Error($"response length check failed, " + rawText);
msg.IsFormatError = true;
return msg;
}
msg.MessagePart = new string[2];
int seperatorIndex = rawText.IndexOf(',');
if(seperatorIndex != 4)
{
LOG.Error($"response format check failed, " + rawText);
msg.IsFormatError = true;
return msg;
}
msg.MessagePart[0] = rawText.Substring(1, 3); //device address
msg.MessagePart[1] = rawText.Substring(5, rawText.Length - 6); //data
msg.DeviceAddress = msg.MessagePart[0];
msg.Data = msg.MessagePart[1];
if (msg.Data.Contains("Err"))
{
msg.IsError = true;
}
msg.IsResponse = true;
msg.IsAck = true;
msg.IsComplete = true;
return msg;
}
}
}