예제 #1
0
        public static Record Analyze(byte[] datas)
        {
            Debug.Assert(datas.Length == XGDefinition.RECODE_DATA_LENGTH);
            int year   = BCDConvert.BCDToDec(datas[YEAR_POS]);
            int month  = BCDConvert.BCDToDec(datas[MONTH_POS]);
            int day    = BCDConvert.BCDToDec(datas[DAY_POS]);
            int hour   = BCDConvert.BCDToDec(datas[HOUR_POS]);
            int minute = BCDConvert.BCDToDec(datas[MINUTE_POS]);
            int second = BCDConvert.BCDToDec(datas[SECOND_POS]);

            byte[] cardIdDatas = new byte[CARD_ID_DATA_LENGTH];
            Array.Copy(datas, CARD_ID_BEGIN_POS, cardIdDatas, 0, CARD_ID_DATA_LENGTH);
            string cardId = MakeCardId(cardIdDatas);

            return(new Record(year, month, day, hour, minute, second, cardId));
        }
예제 #2
0
        public override CommResultState ProcessReceived(byte[] data)
        {
            CommResultState state = XGCommandMaker.CheckReceivedData(
                Station.Address,
                XGDefinition.DEVICE_TYPE,
                XGDefinition.FC_READ_DATE,
                data);

            if (state == CommResultState.Correct)
            {
                byte[] innerDatas = XGCommandMaker.GetReceivedInnerData(data);
                _day   = BCDConvert.BCDToDec(innerDatas[0]);
                _month = BCDConvert.BCDToDec(innerDatas[1]);
                _year  = BCDConvert.BCDToDec(innerDatas[2]);
            }
            else
            {
                SetInvalidValue();
            }

            return(state);
        }