static void Main(string[] args) { // Program setup if (1 != args.Length) { Console.WriteLine(String.Join("\r\n", new string[] { "Please provide reader URL, such as:", "tmr:///com4", "tmr://my-reader.example.com", })); Environment.Exit(1); } try { // Create Reader object, connecting to physical device. // Wrap reader in a "using" block to get automatic // reader shutdown (using IDisposable interface). using (Reader r = Reader.Create(args[0])) { //Uncomment this line to add default transport listener. //r.Transport += r.SimpleTransportListener; r.Connect(); if (Reader.Region.UNSPEC == (Reader.Region)r.ParamGet("/reader/region/id")) { Reader.Region[] supportedRegions = (Reader.Region[])r.ParamGet("/reader/region/supportedRegions"); if (supportedRegions.Length < 1) { throw new FAULT_INVALID_REGION_Exception(); } else { r.ParamSet("/reader/region/id", supportedRegions[0]); } } //Set delimiter to 1 r.ParamSet("/reader/iso180006b/delimiter", Iso180006b.Delimiter.DELIMITER1); // Read Plan Iso180006b.Select filter = new Iso180006b.Select(false, Iso180006b.SelectOp.NOTEQUALS, 0, 0xff, new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }); SimpleReadPlan plan = new SimpleReadPlan(null, TagProtocol.ISO180006B, filter, null, 1000); r.ParamSet("/reader/read/plan", plan); // Create and add tag listener r.TagRead += delegate(Object sender, TagReadDataEventArgs e) { Console.WriteLine("Background read: " + e.TagReadData); }; // Create and add read exception listener r.ReadException += new EventHandler <ReaderExceptionEventArgs>(r_ReadException); // Search for tags in the background r.StartReading(); Console.WriteLine("\r\n<Do other work here>\r\n"); Thread.Sleep(500); Console.WriteLine("\r\n<Do other work here>\r\n"); Thread.Sleep(500); r.StopReading(); } } catch (ReaderException re) { Console.WriteLine("Error: " + re.Message); } catch (Exception ex) { Console.WriteLine("Error: " + ex.Message); } }
static void Main(string[] args) { // Program setup if (1 > args.Length) { Usage(); } int[] antennaList = null; for (int nextarg = 1; nextarg < args.Length; nextarg++) { string arg = args[nextarg]; if (arg.Equals("--ant")) { if (null != antennaList) { Console.WriteLine("Duplicate argument: --ant specified more than once"); Usage(); } antennaList = ParseAntennaList(args, nextarg); nextarg++; } else { Console.WriteLine("Argument {0}:\"{1}\" is not recognized", nextarg, arg); Usage(); } } try { // Create Reader object, connecting to physical device. // Wrap reader in a "using" block to get automatic // reader shutdown (using IDisposable interface). using (Reader r = Reader.Create(args[0])) { //Uncomment this line to add default transport listener. //r.Transport += r.SimpleTransportListener; //Change ISO180006BTagOps flag to true for performing ISO180006b Tag Operation //ISO180006b Tag Operation : WriteData, ReadData, LockTag bool ISO180006BTagOps = false; string EPCForTagOps = ""; r.Connect(); if (Reader.Region.UNSPEC == (Reader.Region)r.ParamGet("/reader/region/id")) { Reader.Region[] supportedRegions = (Reader.Region[])r.ParamGet("/reader/region/supportedRegions"); if (supportedRegions.Length < 1) { throw new FAULT_INVALID_REGION_Exception(); } r.ParamSet("/reader/region/id", supportedRegions[0]); } string model = r.ParamGet("/reader/version/model").ToString(); if ((model.Equals("M6e Micro") || model.Equals("M6e Nano") || model.Equals("Sargas")) && antennaList == null) { Console.WriteLine("Module doesn't has antenna detection support please provide antenna list"); Usage(); } //Set delimiter to 1 r.ParamSet("/reader/iso180006b/delimiter", Iso180006b.Delimiter.DELIMITER1); // Read Plan Iso180006b.Select filter = new Iso180006b.Select(false, Iso180006b.SelectOp.NOTEQUALS, 0, 0xff, new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }); SimpleReadPlan plan = new SimpleReadPlan(antennaList, TagProtocol.ISO180006B, filter, null, 1000); r.ParamSet("/reader/read/plan", plan); // Create and add tag listener r.TagRead += delegate(Object sender, TagReadDataEventArgs e) { Console.WriteLine("Background read: " + e.TagReadData); if (string.IsNullOrEmpty(EPCForTagOps)) { EPCForTagOps = e.TagReadData.EpcString; } }; // Create and add read exception listener r.ReadException += new EventHandler <ReaderExceptionEventArgs>(r_ReadException); // Search for tags in the background r.StartReading(); Console.WriteLine("\r\n<Do other work here>\r\n"); Thread.Sleep(500); Console.WriteLine("\r\n<Do other work here>\r\n"); Thread.Sleep(500); r.StopReading(); if (ISO180006BTagOps) { if (!String.IsNullOrEmpty(EPCForTagOps)) { Console.WriteLine("\n****************ISO180006b Tag Operation********************"); //Use first antenna for operation if (antennaList != null) { r.ParamSet("/reader/tagop/antenna", antennaList[0]); } // tag to be filtered TagFilter filterToUse = new TagData(EPCForTagOps); // write data to a particular address location of tag byte address = 0x28; byte[] writedata = new byte[] { 0xAA, 0x34, 0x56, 0x78 }; Iso180006b.WriteData writeOp = new Iso180006b.WriteData(address, writedata); r.ExecuteTagOp(writeOp, filterToUse); Console.WriteLine("Write Data Successfull"); //read data from a specified memory location works only with tag data filter Iso180006b.ReadData readtagop = new Iso180006b.ReadData(address, 4); object data = r.ExecuteTagOp(readtagop, filterToUse); Console.WriteLine("Read Data : " + BitConverter.ToString((byte[])data)); // Lock the tag at the specified address // Uncomment Below Code to Perfrom Lock Operation //Iso180006b.LockTag lockOp = new Iso180006b.LockTag(address); //r.ExecuteTagOp(lockOp, filterToUse); //Console.WriteLine("Lock Tag Successfull"); } else { throw new Exception("No ISO180006B Tags found."); } } } } catch (ReaderException re) { Console.WriteLine("Error: " + re.Message); } catch (Exception ex) { Console.WriteLine("Error: " + ex.Message); } }