/// <summary> /// Create a SimpleReadPlan /// </summary> /// <param name="antennaList">List of antenna numbers. May be null.</param> /// <param name="protocol">Protocol identifier</param> /// <param name="filter">Tag filter. May be null.</param> /// <param name="op">Operation mode</param> /// <param name="useFastSearch">Enable fast search</param> public SimpleReadPlan(ICollection <int> antennaList, TagProtocol protocol, TagFilter filter, TagOp op, bool useFastSearch) : base(DEFAULT_WEIGHT) { Antennas = (antennaList != null) ? CollUtil.ToArray(antennaList) : null; Protocol = protocol; Filter = filter; Op = op; UseFastSearch = useFastSearch; }
public TagInfo(string epc, int rcnt, int ant, DateTime time, TagProtocol potl_, string emdstr) { epcid = epc; readcnt = rcnt; antid = ant; timestamp = time; potl = potl_; emddatastr = emdstr; RssiSum = 0; }
public static List <byte> MemoryLockStatus(Reader reader, byte blockLength, TagProtocol protocol, string uid) { List <byte> lockStatus = new List <byte>(); TagFilter filter; byte[] _uid = ByteFormat.FromHex(uid); switch (protocol) { case TagProtocol.ISO14443A: break; case TagProtocol.ISO14443B: break; case TagProtocol.ISO15693: //Iso15693.TagType tag = (Iso15693.TagType)tagType;//(Enum.GetName(typeof(Iso15693.TagType), tagType)); filter = new Select_UID((byte)(_uid.Length * 8), _uid); MemoryType type = MemoryType.BLOCK_PROTECTION_STATUS_MEMORY; ReadMemory blockStatus = new ReadMemory(type, 0, blockLength); lockStatus.AddRange((byte[])reader.ExecuteTagOp(blockStatus, filter)); break; case TagProtocol.ISO180003M3: break; case TagProtocol.ISO180006B: break; case TagProtocol.ISO180006B_UCODE: break; case TagProtocol.ISO18092: break; case TagProtocol.LF125KHZ: break; case TagProtocol.LF134KHZ: break; case TagProtocol.NONE: break; default: break; } return(lockStatus); }
private void Button_Connect_Click(object sender, RoutedEventArgs e) { string serialnum = ComboBox_serial.SelectedItem.ToString(); try { reader = Reader.Create("eapi:///" + serialnum); reader.Connect(); MessageBox.Show("成功連接天線"); connected = true; } catch (IOException connectE) { MessageBox.Show(connectE.Message); //Console.WriteLine(e.Message); return; } //select regions and function ([51] = read) string[] functionList = reader.ParamList(); Reader.Region[] regions = (Reader.Region[])reader.ParamGet("/reader/region/supportedRegions"); reader.ParamSet(functionList[51], Reader.Region.TW); reader.ParamSet(functionList[40], 100); //max 2700 (27dBm) //reading delay of 1s int timeout = 1000; //select the antenna, protocol int[] antennaList = null; string str = "1,1"; antennaList = Array.ConvertAll(str.Split(','), int.Parse); TagProtocol protocol = TagProtocol.GEN2; SimpleReadPlan simpleplan = new SimpleReadPlan(antennaList, protocol, null, null, timeout); reader.ParamSet("/reader/read/plan", simpleplan); //reader.ParamSet("/reader/read/plan", 2700); //MessageBox.Show("The antenna has been successfully connected to the PC"); Button_Connect.IsEnabled = false; }
private static SimpleReadPlan configureM3ePersistentSettings(Reader r, int[] antennaList) { try { //baudrate r.ParamSet("/reader/baudRate", 115200); //Protocol TagProtocol protocol = TagProtocol.ISO14443A; r.ParamSet("/reader/tagop/protocol", protocol); //enable read filter r.ParamSet("/reader/tagReadData/enableReadFilter", true); // Embedded tag operation /* Uncomment the following line if want to enable embedded read with autonomous operation. * Add tagop object op in simple read plan constructor. * Add filter object epcFilter in simple read plan constructor. */ //MemoryType type = MemoryType.BLOCK_MEMORY; //int address = 0; //byte length = 1; //ReadMemory tagOp = new ReadMemory(type, address, length); //Select_UID filter = new Select_UID(32, new byte[] { 0x11, 0x22, 0x33, 0x44 }); GpiPinTrigger gpiTrigger = null; if ((autoReadType != null) && (autoReadType == "ReadOnGPI")) { gpiTrigger = new GpiPinTrigger(); gpiTrigger.enable = true; //set the gpi pin to read on r.ParamSet("/reader/read/trigger/gpi", new int[] { trigTypeNum }); } SimpleReadPlan srp = new SimpleReadPlan(antennaList, protocol, null, null, 1000); if ((autoReadType != null) && (autoReadType == "ReadOnGPI")) { srp.ReadTrigger = gpiTrigger; } return(srp); } catch (Exception ex) { throw ex; } }
public static void embeddedRead(TagProtocol protocol, TagFilter filter, TagOp tagop) { TagReadData[] tagReads = null; SimpleReadPlan plan = new SimpleReadPlan(antennaList, protocol, filter, tagop, 1000); r.ParamSet("/reader/read/plan", plan); tagReads = r.Read(1000); // Print tag reads foreach (TagReadData tr in tagReads) { Console.WriteLine(tr.ToString()); if (tr.isErrorData) { // In case of error, show the error to user. Extract error code. int errorCode = ByteConv.ToU16(tr.Data, 0); Console.WriteLine("Embedded Tag operation failed. Error: " + ReaderCodeException.faultCodeToMessage(errorCode)); } else { Console.WriteLine(" Data:" + ByteFormat.ToHex(tr.Data, "", " ")); } } }
/// <summary> /// Create WHERE clauses representing a tag protocol /// </summary> /// <param name="tp">Tag protocol</param> /// <returns>List of strings to be incorporated into "WHERE ... AND ..." phrase. /// List may be empty.</returns> private List<string> TagProtocolToWhereClause(TagProtocol tp) { List<string> wheres = new List<string>(); string clause; switch (tp) { case TagProtocol.GEN2: clause = "GEN2"; break; case TagProtocol.ISO180006B: clause = "ISO18000-6B"; break; case TagProtocol.IPX64: clause = "IPX64"; break; case TagProtocol.IPX256: clause = "IPX256"; break; default: throw new ArgumentException("Unrecognized protocol " + tp.ToString()); } wheres.Add(String.Format("protocol_id='{0}'", clause)); return wheres; }
private static SimpleReadPlan configureUHFPersistentSettings(Reader r, string model, int[] antennaList) { // baudrate r.ParamSet("/reader/baudRate", 115200); // Region Reader.Region[] supportRegion = (Reader.Region[])r.ParamGet("/reader/region/supportedRegions"); if (supportRegion.Length < 1) { throw new Exception("Reader doesn't support any regions"); } else { r.ParamSet("/reader/region/id", supportRegion[0]); } // Protocol TagProtocol protocol = TagProtocol.GEN2; r.ParamSet("/reader/tagop/protocol", protocol); // Antenna to search on r.ParamSet("/reader/tagop/antenna", antennaList[0]); // Duty cycle ->Async On time, Async off time r.ParamSet("/reader/read/asyncOnTime", 1000); r.ParamSet("/reader/read/asyncOffTime", 0); // Gen2 setting r.ParamSet("/reader/gen2/BLF", Gen2.LinkFrequency.LINK250KHZ); r.ParamSet("/reader/gen2/tari", Gen2.Tari.TARI_25US); r.ParamSet("/reader/gen2/target", Gen2.Target.A); r.ParamSet("/reader/gen2/tagEncoding", Gen2.TagEncoding.M2); r.ParamSet("/reader/gen2/session", Gen2.Session.S0); r.ParamSet("/reader/gen2/q", new Gen2.DynamicQ()); //RF Power settings r.ParamSet("/reader/radio/readPower", 2000); r.ParamSet("/reader/radio/writePower", 2000); // Hop Table int[] hopTable = (int[])r.ParamGet("/reader/region/hopTable"); r.ParamSet("/reader/region/hopTable", hopTable); int hopTimeValue = (int)r.ParamGet("/reader/region/hopTime"); r.ParamSet("/reader/region/hopTime", hopTimeValue); //For Open region, dwell time, minimum frequency, quantization step can also be configured persistently if (Reader.Region.OPEN == (Reader.Region)r.ParamGet("/reader/region/id")) { //Set dwell time enable before stting dwell time r.ParamSet("/reader/region/dwellTime/enable", true); //set quantization step r.ParamSet("/reader/region/quantizationStep", 25000); //set dwell time r.ParamSet("/reader/region/dwellTime", 250); //set minimum frequency r.ParamSet("/reader/region/minimumFrequency", 859000); } // Embedded tag operation /* Uncomment the following line if want to enable embedded read with autonomous operation. * Add tagop object op in simple read plan constructor. * Add filter object epcFilter in simple read plan constructor. */ //Gen2.ReadData readtagOp = new Gen2.ReadData(Gen2.Bank.RESERVED, 2, 2); //Gen2.TagData epcFilter = new Gen2.TagData(new byte[] { 0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0x00,0x99,0x99}); GpiPinTrigger gpiTrigger = null; if ((autoReadType != null) && (autoReadType == "ReadOnGPI")) { gpiTrigger = new GpiPinTrigger(); //Gpi trigger option not there for M6e Micro USB if (!("M6e Micro USB".Equals(model))) { gpiTrigger.enable = true; //set the gpi pin to read on r.ParamSet("/reader/read/trigger/gpi", new int[] { trigTypeNum }); } } SimpleReadPlan srp = new SimpleReadPlan(antennaList, protocol, null, null, 1000); if ((autoReadType != null) && autoReadType == "ReadOnGPI") { if (!("M6e Micro USB".Equals(model))) { srp.ReadTrigger = gpiTrigger; } } return(srp); }
/// <summary> /// Create a SimpleReadPlan /// </summary> /// <param name="antennaList">List of antenna numbers. May be null.</param> /// <param name="protocol">Protocol identifier</param> /// <param name="filter">Tag filter. May be null.</param> /// <param name="weight">Relative scheduling weight</param> public SimpleReadPlan(ICollection <int> antennaList, TagProtocol protocol, TagFilter filter, int weight) : this(antennaList, protocol, filter, _defaultTagOp, weight) { }
/// <summary> /// Create a SimpleReadPlan /// </summary> /// <param name="antennaList">List of antenna numbers</param> /// <param name="protocol">Protocol identifier</param> public SimpleReadPlan(ICollection <int> antennaList, TagProtocol protocol) : this(antennaList, protocol, _defaultFilter, _defaultTagOp, DEFAULT_WEIGHT) { }
/// <summary> /// Create StopTriggerReadPlan /// </summary> /// <param name="sotc">StopOnTagCount object</param> /// <param name="antennaList">List of antenna numbers</param> /// <param name="protocol">Protocol identifier</param> public StopTriggerReadPlan(StopOnTagCount sotc, ICollection<int> antennaList, TagProtocol protocol) : base(antennaList, protocol) { stopOnCount = sotc; }
/// <summary> /// Create a SimpleReadPlan /// </summary> /// <param name="antennaList">List of antenna numbers. May be null.</param> /// <param name="protocol">Protocol identifier</param> /// <param name="filter">Tag filter. May be null.</param> /// <param name="op">Operation mode</param> /// <param name="weight">Relative scheduling weight</param> /// <param name="useFastSearch">Enable fast search</param> public SimpleReadPlan(ICollection<int> antennaList, TagProtocol protocol, TagFilter filter, TagOp op, bool useFastSearch, int weight) : base(weight) { Antennas = (antennaList != null) ? CollUtil.ToArray(antennaList) : null; Protocol = protocol; Filter = filter; Op = op; UseFastSearch = useFastSearch; }
/// <summary> /// Create a SimpleReadPlan /// </summary> /// <param name="antennaList">List of antenna numbers</param> /// <param name="protocol">Protocol identifier</param> public SimpleReadPlan(ICollection<int> antennaList, TagProtocol protocol) : this(antennaList, protocol, _defaultFilter,_defaultTagOp, DEFAULT_WEIGHT) { }
/// <summary> /// Create WHERE clauses representing a list of tag protocols /// </summary> /// <param name="tp">Tag protocols</param> /// <returns>List of strings to be incorporated into "WHERE ... AND ..." phrase. /// List may be empty.</returns> private List<string> TagProtocolsToWhereClause(TagProtocol[] tp) { List<string> wheres = new List<string>(); if ((null != tp) && (0 < tp.Length)) { List<string> protwords = new List<string>(); foreach (TagProtocol protocol in tp) protwords.Add(TagProtocolToWhereClause(protocol)[0]); string clause = "(" + String.Join(" OR ", protwords.ToArray()) + ")"; wheres.Add(clause); } return wheres; }
/// <summary> /// Create StopTriggerReadPlan /// </summary> /// <param name="sotc">StopOnTagCount object</param> /// <param name="antennaList">List of antenna numbers</param> /// <param name="protocol">Protocol identifier</param> /// <param name="filter">Tag filter. May be null.</param> /// <param name="op">Operation mode</param> /// <param name="weight">Relative scheduling weight</param> public StopTriggerReadPlan(StopOnTagCount sotc, ICollection<int> antennaList, TagProtocol protocol, TagFilter filter, TagOp op, int weight) : base(antennaList, protocol, filter, op, weight) { stopOnCount = sotc; }
private void lvTags_ColumnClick(object sender, ColumnClickEventArgs e) { if (e.Column >= 1 && e.Column <= 7) { tmplist.Clear(); foreach (ListViewItem viewitem in lvTags.Items) { TagProtocol potl = TagProtocol.NONE; if (viewitem.SubItems[4].Text == "GEN2") { potl = TagProtocol.GEN2; } else if (viewitem.SubItems[4].Text == "6B") { potl = TagProtocol.ISO180006B; } else if (viewitem.SubItems[4].Text == "IPX256") { potl = TagProtocol.IPX256; } else if (viewitem.SubItems[4].Text == "IPX64") { potl = TagProtocol.IPX64; } TagInfo newtag = new TagInfo(viewitem.SubItems[2].Text, int.Parse(viewitem.SubItems[1].Text), int.Parse(viewitem.SubItems[3].Text), DateTime.Now, potl, null); newtag.RssiRaw = int.Parse(viewitem.SubItems[5].Text); newtag.Frequency = int.Parse(viewitem.SubItems[6].Text); newtag.Phase = int.Parse(viewitem.SubItems[7].Text); tmplist.Add(newtag); } this.lvTags.Items.Clear(); IComparer <TagInfo> tagcmper = null; if (e.Column == 1) { tagcmper = new TagInfoCompReadCnt(); } else if (e.Column == 2) { tagcmper = new TagInfoCompEPCId(); } else if (e.Column == 3) { tagcmper = new TagInfoCompAntId(); } else if (e.Column == 4) { tagcmper = new TagInfoCompPotl(); } else if (e.Column == 5) { tagcmper = new TagInfoCompRssi(); } else if (e.Column == 6) { tagcmper = new TagInfoCompFreq(); } else if (e.Column == 7) { tagcmper = new TagInfoCompPhase(); } tmplist.Sort(tagcmper); foreach (TagInfo tag in tmplist) { ListViewItem item = new ListViewItem(lvTags.Items.Count.ToString()); item.SubItems.Add(tag.readcnt.ToString()); item.SubItems.Add(tag.epcid); item.SubItems.Add(tag.antid.ToString()); if (tag.potl == TagProtocol.GEN2) { item.SubItems.Add("GEN2"); } else if (tag.potl == TagProtocol.ISO180006B) { item.SubItems.Add("6B"); } else if (tag.potl == TagProtocol.IPX256) { item.SubItems.Add("IPX256"); } else if (tag.potl == TagProtocol.IPX64) { item.SubItems.Add("IPX64"); } item.SubItems.Add(tag.RssiRaw.ToString()); item.SubItems.Add(tag.Frequency.ToString()); item.SubItems.Add(tag.Phase.ToString()); lvTags.Items.Add(item); } } }
public MainWindow() { InitializeComponent(); if (fclient != null) { //MessageBox.Show("The connection to database has been successfully established"); } FirebaseConfig fconfig = new FirebaseConfig { AuthSecret = "ihUcWjzjav9Y4ZxY9oqh3xdxC7u9bE1oXT1uGeRl", BasePath = "https://hightemperturelocatingsystem.firebaseio.com/" }; fclient = new FirebaseClient(fconfig); try { reader.Connect(); } catch (IOException e) { Console.WriteLine(e.Message); return; } string[] functionList = reader.ParamList(); Reader.Region[] regions = (Reader.Region[])reader.ParamGet("/reader/region/supportedRegions"); reader.ParamSet(functionList[51], Reader.Region.TW); reader.ParamSet(functionList[40], 100); //max 2700 (27dBm) //reading delay of 1s int timeout = 1000; //select the antenna, protocol int[] antennaList = null; string str = "1,1"; antennaList = Array.ConvertAll(str.Split(','), int.Parse); TagProtocol protocol = TagProtocol.GEN2; SimpleReadPlan simpleplan = new SimpleReadPlan(antennaList, protocol, null, null, timeout); reader.ParamSet("/reader/read/plan", simpleplan); //reader.ParamSet("/reader/read/plan", 2700); MessageBox.Show("The antenna has been successfully connected to the PC"); positioning(0, 0, 0); //reader.StartReading(); //reader.TagRead += OnTagRead; }
/// <summary> /// Create StopTriggerReadPlan /// </summary> /// <param name="sotc">StopOnTagCount object</param> /// <param name="antennaList">List of antenna numbers</param> /// <param name="protocol">Protocol identifier</param> /// <param name="filter">Tag filter. May be null.</param> /// <param name="op">Operation mode</param> /// <param name="useFastSearch">Enable fast search</param> public StopTriggerReadPlan(StopOnTagCount sotc, ICollection<int> antennaList, TagProtocol protocol, TagFilter filter, TagOp op, bool useFastSearch) : base(antennaList, protocol, filter, op, useFastSearch) { stopOnCount = sotc; }
private void btnselants_Click(object sender, EventArgs e) { List <int> selants = new List <int>(); for (int i = 0; i < cbants.Count; ++i) { if (cbants[i].Checked) { selants.Add(i + 1); } } if (selants.Count == 0) { MessageBox.Show("please select antenna"); return; } List <int> unDetAnts = new List <int>(); foreach (int ant in selants) { if (cbants[ant - 1].ForeColor == Color.Red) { unDetAnts.Add(ant); } } if (unDetAnts.Count > 0) { string antstr = ""; foreach (int ant in unDetAnts) { antstr += "port" + ant.ToString() + ","; } DialogResult stat = DialogResult.OK; stat = MessageBox.Show(antstr + "execute operation on the port without finding antenna ?", "tip-off", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); if (stat != DialogResult.OK) { return; } } TagProtocol pl = TagProtocol.NONE; if (rbpotl6b.Checked) { pl = TagProtocol.ISO180006B; } else if (rbpotlgen2.Checked) { pl = TagProtocol.GEN2; } else if (rbpotlipx256.Checked) { pl = TagProtocol.IPX256; } else if (rbpotlipx64.Checked) { pl = TagProtocol.IPX64; } else { MessageBox.Show("please select tag protocol"); return; } rdrparams.SixteenDevsrp = new SimpleReadPlan(pl, selants.ToArray()); this.Close(); }
/// <summary> /// Create StopTriggerReadPlan /// </summary> /// <param name="sotc">StopOnTagCount object</param> /// <param name="antennaList">List of antenna numbers</param> /// <param name="protocol">Protocol identifier</param> public StopTriggerReadPlan(StopOnTagCount sotc, ICollection <int> antennaList, TagProtocol protocol) : base(antennaList, protocol) { stopOnCount = sotc; }
/// <summary> /// Create a SimpleReadPlan /// </summary> /// <param name="antennaList">List of antenna numbers. May be null.</param> /// <param name="protocol">Protocol identifier</param> /// <param name="filter">Tag filter. May be null.</param> /// <param name="weight">Relative scheduling weight</param> public SimpleReadPlan(ICollection<int> antennaList, TagProtocol protocol, TagFilter filter, int weight) : this(antennaList, protocol, filter, _defaultTagOp, weight) { }
/// <summary> /// Create StopTriggerReadPlan /// </summary> /// <param name="sotc">StopOnTagCount object</param> /// <param name="antennaList">List of antenna numbers</param> /// <param name="protocol">Protocol identifier</param> /// <param name="filter">Tag filter. May be null.</param> /// <param name="op">Operation mode</param> /// <param name="weight">Relative scheduling weight</param> public StopTriggerReadPlan(StopOnTagCount sotc, ICollection <int> antennaList, TagProtocol protocol, TagFilter filter, TagOp op, int weight) : base(antennaList, protocol, filter, op, weight) { stopOnCount = sotc; }
/// <summary> /// Create StopTriggerReadPlan /// </summary> /// <param name="sotc">StopOnTagCount object</param> /// <param name="antennaList">List of antenna numbers</param> /// <param name="protocol">Protocol identifier</param> /// <param name="filter">Tag filter. May be null.</param> /// <param name="op">Operation mode</param> /// <param name="useFastSearch">Enable fast search</param> public StopTriggerReadPlan(StopOnTagCount sotc, ICollection <int> antennaList, TagProtocol protocol, TagFilter filter, TagOp op, bool useFastSearch) : base(antennaList, protocol, filter, op, useFastSearch) { stopOnCount = sotc; }
public MainWindow() { InitializeComponent(); fclient = new FirebaseClient(fconfig); if (fclient != null) { MessageBox.Show("The connection to database has been successfully established"); } Reader reader = Reader.Create(uri); try { reader.Connect(); } catch (IOException e) { Console.WriteLine(e.Message); return; } //select regions and function ([51] = read) string[] functionList = reader.ParamList(); Reader.Region[] regions = (Reader.Region[])reader.ParamGet("/reader/region/supportedRegions"); reader.ParamSet(functionList[51], Reader.Region.TW); //Reader.WriteTag[] regions = (Reader.Region[])reader.ParamGet("/reader/gen2/q"); //reader.ParamSet(functionList[51], Reader.Region.TW); //reading delay of 1s int timeout = 100; //select the antenna, protocol int[] antennaList = null; string str = "1,1"; antennaList = Array.ConvertAll(str.Split(','), int.Parse); TagProtocol protocol = TagProtocol.GEN2; SimpleReadPlan simpleplan = new SimpleReadPlan(antennaList, protocol, null, null, timeout); reader.ParamSet("/reader/read/plan", simpleplan); //reader.ParamSet("/reader/tagop/antenna", 1); //Gen2.WriteTag(); //start reading //TagReadData[] tags = new TagReadData[10]; //tags = reader.Read(timeout); //if (!File.Exists(filePath)) //{ // File.Create(filePath).Close(); //} //Gen2.TagData epc = new Gen2.TagData(new byte[] {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF, 0x01, 0x23, 0x45, 0x67,}); //0123456789ABCDEF01234567 //Gen2.TagData TargetEpc = new Gen2.TagData(new byte[] { 0x30, 0x05, 0xFB, 0x63, 0xAC, 0x1F, 0x36, 0x81, 0xEC, 0x88, 0x04, 0x68,}); //3005FB63AC1F3681EC880468 //Gen2.WriteTag tagop = new Gen2.WriteTag(TargetEpc); //reader.ExecuteTagOp(tagop, epc); reader.StartReading(); reader.TagRead += OnTagRead; //StopOnTagCount tagCount = new StopOnTagCount(); //tagCount.N = 20; //StopTriggerReadPlan stopReadPlan = new StopTriggerReadPlan(tagCount); //reader.ParamSet("/reader/read/plan", stopReadPlan); //read synchronously //using (StreamWriter sw = File.CreateText("C:/Users/FCUCE-2/Documents/Data/tagsAsync.txt")) //{ // // Write some text into the file. // for (int i = 0; i < tags.Length; i++) // { // sw.WriteLine(i + " : " + tags[i]); // } //} }