示例#1
0
        public static byte[] DistanceLose(List <CardInfo> cards)
        {
            StringBuilder sb       = new StringBuilder();
            int           dataType = 16777215;
            int           cardType = 1;
            int           index    = 23;

            foreach (CardInfo item in cards)
            {
                for (int i = 0; i < 2; i++)
                {
                    int typeBinary = Utility.GetIntegerSomeBit(cardType, i);
                    dataType = Utility.SetIntegeSomeBit(dataType, index - i, typeBinary == 1);
                }
                index -= 2;

                if (item.CardReportLoss == 0)
                {
                    item.CardReportLoss = 0;
                    item.Synchronous    = item.Synchronous == 0 ? 1 : 0;
                }
                int functionByte = 255;
                Utility.SetIntegeSomeBit(functionByte, 7, true);
                Utility.SetIntegeSomeBit(functionByte, 6, item.Synchronous == 1);

                sb.Append(item.CardNumber);
                sb.Append($"{functionByte:X2}");
                sb.Append($"{item.CardTime.AddMonths(1):yyMM}");
            }
            return(PortAgreement.WriteACard("797979", 0, $"{cards.Count:X2}{dataType:X6}{sb.ToString()}"));
        }
示例#2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="infos">挂失或解挂的卡片信息</param>
        /// <param name="state">挂失或解挂的状态 1 - 解挂 2 - 挂失</param>
        /// <returns></returns>
        public static byte[] PersonnelLoseOrRecovery(List <CardInfo> infos, int state)
        {
            StringBuilder sb = new StringBuilder();

            foreach (CardInfo item in infos)
            {
                sb.Append($"{item.CardNumber:X2}0{state}{item.CardTime:yyMM}");
            }
            return(PortAgreement.WriteACard("797979", 0, sb.ToString()));
        }
示例#3
0
        public static byte[] Issue(CardInfo info)
        {
            int typeByte     = SetTypeByte(info);
            int functionByte = SetFunctionByte(info);

            StringBuilder sb = new StringBuilder($"{functionByte:X2}{info.CardCount:X4}");

            switch ((PortEnums.CardTypes)info.CardType)
            {
            case PortEnums.CardTypes.Card1:
                sb.Append($"{info.CardTime:yyMMdd}");
                sb.Append($"{info.CardPartition:X4}");
                break;

            case PortEnums.CardTypes.Card2:
                if (info.ViceCardInfos != null)
                {
                    foreach (CardInfo item in info.ViceCardInfos)
                    {
                        sb.Append($"{item.CardTime:yyMMdd}");
                        sb.Append($"{item.CardPartition:X4}");
                        sb.Append($"{item.CardCount:X4}");
                        sb.Append($"{item.CardNumber}");
                    }
                }
                else
                {
                    sb.Append("FFFFFFFFFFFFFFFFFFFFFFFFFF");
                }
                break;

            case PortEnums.CardTypes.Card3:
                if (info.ViceCardInfos != null)
                {
                    foreach (CardInfo item in info.ViceCardInfos)
                    {
                        sb.Append($"{item.CardTime:yyMmdd}");
                        sb.Append($"{item.CardPartition:X4}");
                        sb.Append($"{PlateNumberToHex(item.CardNumber)}");
                    }
                }
                else
                {
                    sb.Append("FFFFFFFFFFFFFFFFFFFFFFFFFF");
                }
                break;

            case PortEnums.CardTypes.Card4:
                sb = new StringBuilder($"{functionByte:X2}");
                break;
            }
            return(PortAgreement.WriteACard(info.CardNumber, typeByte, 0, $"{sb.ToString()}"));
        }
示例#4
0
        public static byte[] Issue(CardInfo info, int datatype, string customdata)
        {
            int           typeByte = 2;
            StringBuilder sb       = new StringBuilder();

            if (datatype == 1)
            {
                sb.Append($"{info.CardTime:yyMMdd}");
                sb.Append($"{info.CardPartition:X4}");
            }
            else
            {
                sb.Append(customdata);
            }
            return(PortAgreement.WriteACard(info.CardNumber, typeByte, 0, sb.ToString()));
        }