using Parser.BinaryParser.Attributes; using Parser.BinaryParser.MessageEntity; using Parser.BinaryParser.Util; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WayneChina_IcCardReader_SinoChem.MessageEntity { public class IcCardReaderMessageBase : MessageTemplateBase { [Format(1, EncodingType.BIN, -9999)] public byte Prefix0xFA { get { return 0xFA; } set { } } [Format(1, EncodingType.BIN, -9980)] public byte RawMessageSeqNumberAndSourceAddress { get; set; } /// /// Gets or sets the message seq number, range must be in 0 to 15 /// public byte MessageSeqNumber { get { return (byte)(this.RawMessageSeqNumberAndSourceAddress >> 4 & 0x0F); } set { if (value > 0x0F) throw new ArgumentOutOfRangeException("message Token max value is 0x0F"); //E0 = 1110 0000 this.RawMessageSeqNumberAndSourceAddress = RawMessageSeqNumberAndSourceAddress.SetBit(4, 7, value); } } /// /// Gets or sets the SourceAddress, range must be in 0 to 15 /// public byte SourceAddress { get { return (byte)(this.RawMessageSeqNumberAndSourceAddress & 0x0F); } set { if (value > 0x0F) throw new ArgumentOutOfRangeException("message SourceAddress max value is 0x0F"); //E0 = 1110 0000 this.RawMessageSeqNumberAndSourceAddress = RawMessageSeqNumberAndSourceAddress.SetBit(0, 3, value); } } [Format(2, EncodingType.BCD, -9940)] public int MessageLength { get; set; } [EnumerableFormat("MessageLength", -9920)] public List RawData { get; set; } [EnumerableFormat(2, -9900)] public List CRC { get; set; } public override string ToLogString() { return this.GetType().Name + " " + base.ToLogString() + " MessageSeqNumber: " + this.MessageSeqNumber; } } }