/// <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); }
/// <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); }