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; } } }