Exemple #1
0
        public override CommResultState ProcessReceived(byte[] data)
        {
            CommResultState state = XGCommandMaker.CheckReceivedData(this.Station.Address,
                                                                     XGDefinition.DEVICE_TYPE,
                                                                     XGDefinition.FC_READ_RECORD,
                                                                     data);

            // 正确时处理记录数据,错误时保留上次读取的数据不变。
            //
            if (state == CommResultState.Correct)
            {
                byte[] innerDatas   = XGCommandMaker.GetReceivedInnerData(data);
                int    innerDataLen = innerDatas.Length;

                //
                if (innerDataLen == XGDefinition.RECODE_DATA_LENGTH)
                {
                    // analyse recode data
                    //
                    _record           = Record.Analyze(innerDatas);
                    _recordTotalCount = -1;
                }
                else if (innerDataLen == 1) // recode index error
                {
                    _recordTotalCount = innerDatas[0];
                }
                else
                {
                    throw new Exception("Read recode inner data error.");
                }
            }
            return(state);
        }
Exemple #2
0
        /// <summary>
        /// reutrn xgdata or null
        /// </summary>
        /// <returns></returns>
        public override object ToValue()
        {
            byte[]          data  = _bytes;
            CommResultState state = XGCommandMaker.CheckReceivedData(// this.Station.Address,
                XGDefinition.DEVICE_TYPE,
                XGDefinition.FC_READ_RECORD,
                data);

            _commResultState = state;

            // 正确时处理记录数据,错误时保留上次读取的数据不变。
            //
            if (state == CommResultState.Correct)
            {
                int address = data[XGDefinition.ADDRESS_POS];

                byte[] innerDatas   = XGCommandMaker.GetReceivedInnerData(data);
                int    innerDataLen = innerDatas.Length;

                //
                if (innerDataLen == XGDefinition.RECODE_DATA_LENGTH)
                {
                    // analyse recode data
                    //
                    Record record = Record.Analyze(innerDatas);
                    if (record == null)
                    {
                        return(null);
                    }

                    XGData xgdata = new XGData(record.CardSN, address, record.DateTime, false);
                    _value = xgdata;
                    return(xgdata);
                }
                else if (innerDataLen == 1) // recode index error
                {
                    //_recordTotalCount = innerDatas[0];
                    return(null);
                }
                else
                {
                    //throw new Exception("Read recode inner data error.");
                    return(null);
                }
            }
            else
            {
                return(null);
            }
        }
Exemple #3
0
        public override CommResultState ProcessReceived(byte[] data)
        {
            CommResultState state = XGCommandMaker.CheckReceivedData(Station.Address,
                                                                     XGDefinition.DEVICE_TYPE,
                                                                     XGDefinition.FC_READ_TOTALCOUNT,
                                                                     data);

            if (state == CommResultState.Correct)
            {
                byte[] innerDatas = XGCommandMaker.GetReceivedInnerData(data);
                _totalCount = innerDatas[0];
            }
            return(state);
        }
Exemple #4
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);
        }