Example #1
0
        public static byte[] CombinationLoss(List <LossParameter> lossparams)
        {
            int           index    = 0;
            int           losstype = 87381;
            StringBuilder sb       = new StringBuilder();

            foreach (LossParameter item in lossparams)
            {
                losstype = BinaryHelper.SetIntegeSomeBit(losstype, index, true);
                index   += 2;
                sb.Append(item.CardNumber);
                sb.AppendFormat("{0:X2}", SetFunctionParameeter(item.Function));
                sb.AppendFormat("{0:yyMM}", item.Time.AddDays(1));
            }
            string content = string.Format("{0:X2}{1:X6}{2}", lossparams.Count, losstype, sb.ToString());

            return(PortAgreement.GetLossContent("797979", content));
        }
Example #2
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);
        }
Example #3
0
        public static FunctionByteParameter DistanceFunctionByte(int functionbyte)
        {
            FunctionByteParameter parameter = new FunctionByteParameter();

            parameter.Loss        = BinaryHelper.GetIntegerSomeBit(functionbyte, 7);
            parameter.Synchronous = BinaryHelper.GetIntegerSomeBit(functionbyte, 6);
            int registrationtype = BinaryHelper.GetIntegerSomeBit(functionbyte, 5);

            if (registrationtype == 0)
            {
                parameter.RegistrationType = BinaryHelper.GetIntegerSomeBit(functionbyte, 1) == 1 ? CardType.LPRCard : CardType.CombinationCard;
            }
            else
            {
                parameter.RegistrationType = CardType.SingleCard;
            }
            parameter.ParkingRestrictions = BinaryHelper.GetIntegerSomeBit(functionbyte, 4);
            parameter.ViceCardCount       = BinaryHelper.GetBitToInt(functionbyte, 2, 2);
            parameter.InOutState          = BinaryHelper.GetIntegerSomeBit(functionbyte, 0);
            return(parameter);
        }
Example #4
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);
        }
Example #5
0
        public static byte[] SetLossCard(LossCardDataParam[] param)
        {
            StringBuilder sb       = new StringBuilder();
            int           datatype = 16777215;
            int           cardtype = 1;
            int           index    = 23;

            foreach (LossCardDataParam item in param)
            {
                cardtype = item.CardType != CardTypes.ViceCard ? 2 : 1;
                for (int i = 0; i < 2; i++)
                {
                    int typebinary = BinaryHelper.GetIntegerSomeBit(cardtype, i);
                    datatype = BinaryHelper.SetIntegeSomeBit(datatype, index - i, typebinary != 0);
                }
                index -= 2;
                sb.Append(item.CardNumber);
                sb.AppendFormat("{0:X2}", BinaryHelper.SetIntegeSomeBit(item.Functionbyte, 7, true));
                sb.AppendFormat("{0:yyMM}", item.CardTime.AddMonths(1));
            }
            return(PortAgreement.GetDistanceContent("797979", 0, string.Format("{0:X2}{1:X6}{2}", param.Length, datatype, sb.ToString())));
        }