/// <summary> /// <para>Gets current tags within range and return the first tag. Inventory not kept.</para> /// <remarks> /// <para> /// Returns EPC of type <see cref="string"/>[2] || EPC[0] = Tag Lenght | EPC[1] = Tag ID /// </para> /// </remarks> /// </summary> /// <returns>[0] = Tag Lenght [1] = Tag ID</returns> private string[] Inventory() { #region ReaderInventoryReq byte AdrTID = 0; byte LenTID = 0; byte TIDFlag = 0; byte[] EPC = new byte[5000]; int Totallen = 0; int CardNum = 0; string[] fInventory_EPC_List = new string[2]; #endregion ReaderInventoryReq _fCmdRet = StaticClassReaderB.Inventory_G2(ref Reader.ComAddrr, AdrTID, LenTID, TIDFlag, EPC, ref Totallen, ref CardNum, Reader.PortHandle); if ((_fCmdRet == 1) | (_fCmdRet == 2) | (_fCmdRet == 3) | (_fCmdRet == 4)) //251 = no tags detected { byte[] daw = new byte[Totallen]; Array.Copy(EPC, daw, Totallen); fInventory_EPC_List[0] = RfidConversion.ByteArrayToHexString(daw).Remove(0, 2); fInventory_EPC_List[1] = RfidConversion.ByteArrayToHexString(daw).Remove(2); return(fInventory_EPC_List); } Console.WriteLine(RfidConversion.GetErrorCodeDesc(_fCmdRet)); return(null); }
/// <summary> /// Used to read an EPC with NO Lock on the system /// </summary> /// <returns></returns> private string Read_Epc() { var str = Inventory(); if (str == null) { Console.WriteLine("No Tags Found at {0}", ReaderName); return(null); } Console.WriteLine("Tag ID at {0}:{1}", ReaderName, str[0]); Thread.Sleep(500); #region ReaderRequirements const byte wordPtr = 0; const byte mem = 1; byte[] cardData = new byte[320]; byte wNum = Convert.ToByte(Convert.ToInt64(str[1]) - 2); byte epcLength = Convert.ToByte(str[0].Length / 2); byte eNum = Convert.ToByte(str[0].Length / 4); byte MaskFlag = 0, MaskAdd = 0, MaskLen = 0; var fPassWord = RfidConversion.HexStringToByteArray("00000000"); byte[] epc = new byte[eNum]; epc = RfidConversion.HexStringToByteArray(str[0]); #endregion ReaderRequirements _fCmdRet = StaticClassReaderB.ReadCard_G2(ref Reader.ComAddrr, epc, mem, wordPtr, wNum, fPassWord, MaskAdd, MaskLen, MaskFlag, cardData, epcLength, ref Reader.ErrorCode, Reader.PortHandle); if (_fCmdRet == 0) //Successful read { byte[] daw = new byte[wNum * 2]; Array.Copy(cardData, daw, wNum * 2); Console.WriteLine("Tag ID at {0}:{1}", ReaderName, RfidConversion.ByteArrayToHexString(daw)); return(RfidConversion.ByteArrayToHexString(daw)); } if (Reader.ErrorCode == -1) { return(null); } Console.WriteLine( "Error reading EPC Value. ErrorCode=0x{0}({1})", Convert.ToString(Reader.ErrorCode, 2), RfidConversion.GetErrorCodeDesc(Reader.ErrorCode)); return(null); }
public string WriteEpc() { lock (_locker) { #region ReaderRequirements byte WordPtr = 1, ENum; byte Mem = 1; byte WNum = 0; byte EPClength = 0; byte Writedatalen = 0; int WrittenDataNum = 0; byte[] CardData = new byte[320]; byte[] writedata = new byte[230]; byte MaskFlag = 0, MaskAdd = 0, MaskLen = 0; var fPassword = RfidConversion.HexStringToByteArray("00000000"); #endregion ReaderRequirements var epcVal = Read_Epc(); #region Setup GUID var guid = Guid.NewGuid().ToString().Replace("-", null).ToUpper(); //32 characters long guid = guid + epcVal.Substring(epcVal.Length - 4); ENum = Convert.ToByte(epcVal.Length / 4); EPClength = Convert.ToByte(ENum * 2); byte[] EPC = new byte[ENum]; WNum = Convert.ToByte(guid.Length / 4); byte[] Writedata = new byte[WNum * 2]; Writedata = RfidConversion.HexStringToByteArray(guid); Writedatalen = Convert.ToByte(WNum * 2); #endregion Setup GUID _fCmdRet = StaticClassReaderB.WriteCard_G2(ref Reader.ComAddrr, EPC, Mem, WordPtr, Writedatalen, Writedata, fPassword, MaskAdd, MaskLen, MaskFlag, WrittenDataNum, EPClength, ref Reader.ErrorCode, Reader.ComAddrr); return(guid); } }