using iWareCc.Properties;
using iWareCommon.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace iWareCc.Conveyor.Datagram
{
public class GateDatagramAnalyze
{
///
/// 将收到的字节码数值转换成相应的属性
///
/// 字节码数组形式的报文
///
public GateDatagramProp Analyze(byte[] msg)
{
GateDatagramProp prop = new GateDatagramProp();
//解析时去掉最后的/r/n(如果有的话)
byte[] tmp = msg[msg.Length - 1].Equals((byte)'#') ? new byte[msg.Length - 1] : new byte[msg.Length];
Array.Copy(msg, 0, tmp, 0, tmp.Length);
string msgStr = ASCIIEncoding.UTF8.GetString(tmp);
string[] msgArray = msgStr.Split('@');
if (msgArray.Length>=3)
{
prop.Name = msgArray.Length >= 3 ? msgArray[0] : null;
prop.InPlace = msgArray.Length >= 3 ? msgArray[1] : null;
prop.IsEmpty = msgArray.Length >= 3 ? msgArray[2] : null;
}
return prop;
}
///
/// 将收到的字节码数值转换成相应的属性
///
/// 字节码数组形式的报文
///
public GateDatagramProp AlarmAnalyze(byte[] msg)
{
GateDatagramProp prop = new GateDatagramProp();
//解析时去掉最后的/r/n(如果有的话)
byte[] tmp = msg[msg.Length - 1].Equals((byte)'#') ? new byte[msg.Length - 1] : new byte[msg.Length];
Array.Copy(msg, 0, tmp, 0, tmp.Length);
string msgStr = ASCIIEncoding.UTF8.GetString(tmp);
string[] msgArray = msgStr.Split('@');
if (msgArray.Length >= 2)
{
prop.Name = msgArray.Length >= 2 ? msgArray[0] : null;
prop.Alarmcode = msgArray.Length >= 2 ? msgArray[1] : null;
}
return prop;
}
///
/// 将收到的字节码数值转换成相应的属性
///
/// 字节码数组形式的报文
///
public GateDatagramProp SCAnalyze(byte[] msg)
{
GateDatagramProp prop = new GateDatagramProp();
//解析时去掉最后的/r/n(如果有的话)
byte[] tmp = msg[msg.Length - 1].Equals((byte)'#') ? new byte[msg.Length - 1] : new byte[msg.Length];
Array.Copy(msg, 0, tmp, 0, tmp.Length);
string msgStr = ASCIIEncoding.UTF8.GetString(tmp);
string[] msgArray = msgStr.Split('@');
if (msgArray.Length >= 2)
{
prop.Name = msgArray.Length >= 2 ? msgArray[0] : null;
prop.MaterialCode = msgArray.Length >= 2 ? msgArray[1] : null;
}
return prop;
}
}
}