예제 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="param"></param>
        /// <param name="num">0 写入数据  1 写入类型 2 写入数据和类型</param>
        /// <returns></returns>
        public static int SetCardTypeByte(DistanceTypeParameter param, int num)
        {
            int typebyte = num;

            typebyte = BinaryHelper.SetIntegeSomeBit(typebyte, 7, param.Lock != 0);
            if (param.Distance < 4)
            {
                typebyte = BinaryHelper.SetIntegeSomeBit(typebyte, 6, true);
                for (int i = 0; i < 2; i++)
                {
                    int distance = BinaryHelper.GetIntegerSomeBit(param.Distance, i);
                    typebyte = BinaryHelper.SetIntegeSomeBit(typebyte, 4 + i, distance != 0);
                }
            }
            else
            {
                typebyte = BinaryHelper.SetIntegeSomeBit(typebyte, 6, false);
            }
            return(typebyte);
        }
예제 #2
0
        public static DistanceTypeParameter DistanceType(int type)
        {
            DistanceTypeParameter parameter = new DistanceTypeParameter();

            parameter.Battry = BinaryHelper.GetIntegerSomeBit(type, 3);
            int cardtype = BinaryHelper.GetBitToInt(type, 0, 3);

            if (cardtype == 0)
            {
                cardtype           = BinaryHelper.GetBitToInt(type, 4, 4);
                parameter.CardType = (CardTypes)(cardtype += 1);
            }
            else
            {
                if (cardtype == 1 || cardtype == 5)
                {
                    parameter.CardType = (CardTypes)0;
                }
                else if (cardtype == 2)
                {
                    parameter.CardType = (CardTypes)1;
                }
                else if (cardtype == 3 || cardtype == 7)
                {
                    parameter.CardType = (CardTypes)3;
                }
            }
            parameter.Lock     = BinaryHelper.GetIntegerSomeBit(type, 7);
            parameter.Distance = BinaryHelper.GetIntegerSomeBit(type, 6);
            if (parameter.Distance == 1)
            {
                parameter.Distance = BinaryHelper.GetBitToInt(type, 4, 2);
                //parameter.Distance += 1;
            }
            else
            {
                parameter.Distance = 4;
            }
            return(parameter);
        }
예제 #3
0
 public static int SetCardTypeByte(DistanceTypeParameter param)
 {
     return(SetCardTypeByte(param, 2));
 }