Esempio n. 1
0
        /// <summary>
        /// 防冲突操2作所需的帧,必须在Request命令后立即执行。
        /// </summary>
        /// <param name="ml">选择是否允许多标签进入同一感应场。若为1则允许多张电子标签进入;若为0则不允许多张电子标签进入</param>
        /// <returns>完整报文</returns>
        protected byte[] CreateAnticoll2Frame(MultiLable ml)
        {
            Frame frame = new Frame(0x07, Com_adr);

            byte[] db = frame.DataBlock;
            db[2] = I14443Cmd.Anticoll2;
            db[4] = (byte)ml; //压入是否允许多标签进入同一感应场
            frame.PushCRC();
            return(db);
        }
Esempio n. 2
0
        /// <summary>
        /// 防冲突操作,必须在Request命令后立即执行。如果事先知道所需要
        /// 操作的电子标签的序列号,可以越过此调用,在Request命令后直接
        /// 调用Select 即可。
        /// </summary>
        /// <param name="ml">
        /// ml=MultiLable.AllowOne 不允许多张电子标签进入感应场
        /// m1=MultiLable.AllowMulti 允许多张电子标签进入感应场
        /// </param>
        /// <returns></returns>
        public async Task <AnticollInfo> Anticoll2Async(MultiLable ml)
        {
            byte[] frame = CreateAnticoll2Frame(ml);
            CommunicationReturnInfo cri = await com.SendAsync(frame);

            if (cri.ReturnValue != ReturnMessage.Success)
            {
                AnticollInfo ai = new AnticollInfo();
                ai.SendByte         = frame;
                ai.ReturnValue      = cri.ReturnValue;
                ai.ExceptionMessage = cri.ExceptionMessage;
                return(ai);
            }

            AnticollInfo info = HandleAnticollFrame(cri.RecvByte);

            info.SendByte = frame;
            return(info);
        }