Exemplo n.º 1
0
        public static SFEntryInfo FromBytes(byte[] rawData)
        {
            if (rawData.Length != 32)
            {
                throw new NotSupportedException();
            }

            var result = null as SFEntryInfo;

            try {
                using (var stream = new System.IO.MemoryStream(rawData))
                {
                    using (var reader = new System.IO.BinaryReader(stream))
                    {
                        result                  = new SFEntryInfo();
                        result.Raw              = rawData;
                        result.Region1          = reader.ReadUInt16();
                        result.Region2          = reader.ReadUInt16();
                        result.Region3          = reader.ReadUInt16();
                        result.Region4          = reader.ReadUInt16();
                        result.TransitionDate   = ByteConvert.ToDate(reader.ReadBytes(2));
                        result.EntryTime        = result.TransitionDate.Add(ByteConvert.ToTimeBCD(reader.ReadBytes(2)));
                        result.EntryStationCode = reader.ReadUInt16();
                        reader.ReadByte();
                        result.ExitTime        = result.TransitionDate.Add(ByteConvert.ToTimeBCD(reader.ReadBytes(2)));
                        result.ExitStationCode = reader.ReadUInt16();
                        reader.ReadByte();
                        var bC = reader.ReadByte();
                        result.RegionCode = (byte)((bC & 0b11000000) >> 6);
                    }
                }
            }
            catch { }
            return(result);
        }
Exemplo n.º 2
0
        public static TimeSpan ToTimeBCD(byte[] bytes)
        {
            if (bytes.Length != 2)
            {
                throw new NotSupportedException();
            }
            var origin = ByteConvert.ToUint16(bytes, false);
            var hh     = ByteConvert.FromBCD((byte)((origin & 0xFF00) >> 8));
            var mm     = ByteConvert.FromBCD((byte)(origin & 0x00FF));

            try
            {
                return(new TimeSpan(hh, mm, 0));
            }
            catch { }
            return(TimeSpan.MinValue);
        }
Exemplo n.º 3
0
        public static DateTime ToDate(byte[] bytes)
        {
            if (bytes.Length != 2)
            {
                throw new NotSupportedException();
            }
            var origin = ByteConvert.ToUint16(bytes, false);
            var YY     = (int)(origin & 0xFE00) >> 9;
            var MM     = (int)(origin & 0x01E0) >> 5;
            var DD     = (int)(origin & 0x001F) >> 0;

            try
            {
                return(new DateTime(YY, MM, DD));
            }
            catch { }
            return(DateTime.MinValue);
        }
Exemplo n.º 4
0
        public static GateHistoryInfo FromBytes(byte[] rawData)
        {
            if (rawData.Length != 16)
            {
                throw new NotSupportedException();
            }

            var result = null as GateHistoryInfo;

            try
            {
                using (var stream = new System.IO.MemoryStream(rawData))
                {
                    using (var reader = new System.IO.BinaryReader(stream))
                    {
                        result     = new GateHistoryInfo();
                        result.Raw = rawData;
                        var b0 = reader.ReadByte();
                        result.IsEnterance = ((b0 & 0b10000000) > 0);
                        result.EntryType1  = (byte)((b0 & 0b01110000) >> 4);
                        result.EntryType2  = (byte)((b0 & 0b00001111) >> 0);
                        var b1 = reader.ReadByte();
                        result.TransitType = b1;
                        var b23 = reader.ReadUInt16();
                        result.StationCode = (byte)((b23 & 0xFF00) >> 8);
                        result.LineCode    = (byte)(b23 & 0xFF);
                        result.BusCode     = b23;
                        var b45 = reader.ReadUInt16();
                        result.GateCode = result.BusId = b45;
                        var b6789 = reader.ReadBytes(4);
                        result.DateTime = ByteConvert.ToDateTimeBCD(b6789);
                        var bAB = reader.ReadUInt16();
                        result.Payment = bAB;
                        var bCD = reader.ReadBytes(2);
                        var bEF = reader.ReadUInt16();
                        result.BusStopCode = bEF;
                    }
                }
            }
            catch { }
            return(result);
        }
Exemplo n.º 5
0
        public static DateTime ToDateTimeBCD(byte[] bytes)
        {
            if (bytes.Length != 4)
            {
                throw new NotSupportedException();
            }
            var origin = ByteConvert.ToUint32(bytes, false);
            var YY     = (int)(origin & 0xFE000000) >> 25;
            var MM     = (int)(origin & 0x01E00000) >> 21;
            var DD     = (int)(origin & 0x001F0000) >> 16;
            var hh     = ByteConvert.FromBCD((byte)((origin & 0x0000FF00) >> 8));
            var mm     = ByteConvert.FromBCD((byte)(origin & 0x000000FF));

            try
            {
                return(new DateTime(YY, MM, DD, hh, mm, 0));
            }
            catch { }
            return(DateTime.MinValue);
        }