Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        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);
            }
        }