//保存reader信息 private static bool SaveReaderInfo(ref DataRow stDr, ref SettingsMain stSmi, int iIdx) { ReaderMain rm = new ReaderMain(); Log.WriteLog(LogType.Trace, "come in SaveReaderInfo"); rm.ReaderID = Int32.Parse(stDr["ReaderID"].ToString()); rm.IPaddress = stDr["IPaddress"].ToString(); rm.NumAntennas = Int32.Parse(stDr["NumAntennas"].ToString()); rm.iReaderType = Int32.Parse(stDr["ReaderType"].ToString()); Log.WriteLog(LogType.Trace, "success to save reader[" + iIdx + "] info is :ReaderID[" + rm.ReaderID + "], IPaddress[" + rm.IPaddress + "],NumAntennas[" + rm.NumAntennas + "], ReaderType[" + rm.iReaderType + "]"); //保存reader下所有antenna信息 if (rm.NumAntennas > 0) { if (!SaveAntennaInfo(ref rm, rm.ReaderID)) { Log.WriteLog(LogType.Trace, "error to call SaveAntennaInfo"); return(false); } } stSmi.Readers.Add(rm); return(true); }
//保存antenna信息 private static bool SaveAntennaInfo(ref ReaderMain rm, int iReaderId) { DataSet stDs; DataTable stDt; Log.WriteLog(LogType.Trace, "come in SaveAntennaInfo"); string sSql = "select * from Antenna where ReaderID = " + iReaderId + " order by AntennaID;"; try { stDs = SqlAccess.GetDataSet(sSql); Log.WriteLog(LogType.Trace, "success to get reader[" + iReaderId + "] antenna info from db"); stDt = stDs.Tables[0]; if (stDt.Rows.Count > 0) { for (int iIdx = 0; iIdx < stDt.Rows.Count; iIdx++) { DataRow stDr = stDt.Rows[iIdx]; LTS.Antenna stAnt = new LTS.Antenna(); stAnt.AntennaID = Int32.Parse(stDr["AntennaID"].ToString()); stAnt.ReaderID = Int32.Parse(stDr["ReaderID"].ToString()); stAnt.RxPower = decimal.Parse(stDr["RxPower"].ToString()); stAnt.TxPower = decimal.Parse(stDr["TxPower"].ToString()); stAnt.AntennaNumber = Int32.Parse(stDr["AntennaNumber"].ToString()); rm.antennas.Add(stAnt); Log.WriteLog(LogType.Trace, "success to save reader[" + iReaderId + "] antenna[" + stAnt.AntennaNumber + "] info:antennid[" + stAnt.AntennaID + "], " + "RxPower[" + stAnt.RxPower + "], TxPower[" + stAnt.TxPower + "]"); } } else { Log.WriteLog(LogType.Trace, "info:there is not antenna with reader[" + iReaderId + "]"); return(true); } } catch (Exception ex) { Log.WriteLog(LogType.Error, "error to call GetDataSet"); return(false); } return(true); }
//Margo private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { try { dataGridViewReaders.DataSource = null; dataGridViewReaders.Rows.Clear(); int settingsIndex = comboBox1.SelectedIndex; int settingsID = listSet[settingsIndex].SettingsID; SelectedSetting = settingsID; SettingsMain sm = new SettingsMain(); sm.SettingsID = settingsID; sm.SettingsName = listSet[settingsIndex].SettingsName; sm.SettingsSelect = listSet[settingsIndex].SettingsSelect; sm.StoreID = listSet[settingsIndex].StoreID; smi = sm; LTS.Store store = DAT.DataAccess.GetStore().Where(i => i.StoreID == sm.StoreID).FirstOrDefault(); sm.StoreLocation = store.StoreLocation; sm.StoreName = store.StoreName; List <LTS.Reader> readers = new List <LTS.Reader>(); readers = DAT.DataAccess.GetReader().Where(j => j.SettingsID == sm.SettingsID).ToList(); for (int j = 0; j < readers.Count; j++) { ReaderMain rm = new ReaderMain(); rm.ReaderID = readers[j].ReaderID; rm.IPaddress = readers[j].IPaddress; rm.NumAntennas = readers[j].NumAntennas; rm.antennas = DAT.DataAccess.GetAntenna().Where(q => q.ReaderID == rm.ReaderID).ToList(); sm.Readers.Add(rm); } for (int i = 0; i < sm.Readers.Count; i++) { for (int y = 0; y < sm.Readers[i].antennas.Count; y++) { dataGridViewReaders.Rows.Add(sm.Readers[i].IPaddress, sm.Readers[i].antennas[y].AntennaNumber, sm.Readers[i].antennas[y].TxPower, sm.Readers[i].antennas[y].RxPower); } } } catch (Exception ex) { MessageBox.Show("Sorry Something went wrong, the action was not completed!"); } }
//Margo private void Settings_Load(object sender, EventArgs e) { try { List <LTS.Settings> set = new List <LTS.Settings>(); set = DAT.DataAccess.GetSettings().ToList(); for (int x = 0; x < set.Count; x++) { SettingsMain sm = new SettingsMain(); sm.SettingsID = set[x].SettingsID; sm.SettingsName = set[x].SettingsName; sm.SettingsSelect = set[x].SettingsSelect; sm.StoreID = set[x].StoreID; LTS.Store store = DAT.DataAccess.GetStore().Where(i => i.StoreID == sm.StoreID).FirstOrDefault(); sm.StoreLocation = store.StoreLocation; sm.StoreName = store.StoreName; List <LTS.Reader> readers = new List <LTS.Reader>(); readers = DAT.DataAccess.GetReader().Where(j => j.SettingsID == sm.SettingsID).ToList(); for (int j = 0; j < readers.Count; j++) { ReaderMain rm = new ReaderMain(); rm.ReaderID = readers[j].ReaderID; rm.IPaddress = readers[j].IPaddress; rm.NumAntennas = readers[j].NumAntennas; rm.antennas = DAT.DataAccess.GetAntenna().Where(q => q.ReaderID == rm.ReaderID).ToList(); sm.Readers.Add(rm); } settings.Add(sm); } for (int i = 0; i < settings.Count; i++) { dataGridViewSettings.Rows.Add(settings[i].SettingsID, settings[i].SettingsName, settings[i].SettingsSelect, settings[i].Readers.Count, settings[i].TotalAmountAntennas().ToString(), settings[i].StoreName); } dataGridViewSettings.ClearSelection(); } catch (Exception ex) { MessageBox.Show("Sorry Something went wrong, the action was not completed!"); } }
public override void HandleMessage(Message msg) { base.HandleMessage(msg); ReaderMain target; _ref.TryGetTarget(out target); ReaderMain act = target; if (act == null) { return; } switch (msg.What) { case ReaderConsts.MSG_LOOP_TEMP: App app = (App)act.Application; if (app.CheckIsRFIDReady()) { float t = app.RfidMgr.BatteryTemperature; int chargeCycle = app.RfidMgr.BatteryChargeCycle; app.BatteryTemperature = t; app.BatteryChargeCycle = chargeCycle; if (chargeCycle > 500 && !act.BatteryReminder) { act.BatteryReminder = true; Toast.MakeText(act, Resource.String.toast_battery_charge_cycle_reminder, ToastLength.Long).Show(); } } act.StartLoopTemperatureTimer(); break; } }
//Margo bool connect(LTS.Settings se) { try { lblConnect.Text = "Connecting..."; int index = comboBoxStore.SelectedIndex; if (st != null) { int storeID = st[index].StoreID; LTS.Settings set = se; sm = null; sm = new SettingsMain(); impinjrev.Clear(); sm.SettingsID = set.SettingsID; sm.SettingsName = set.SettingsName; sm.SettingsSelect = set.SettingsSelect; sm.StoreID = set.StoreID; LTS.Store store = DAT.DataAccess.GetStore().Where(i => i.StoreID == sm.StoreID).FirstOrDefault(); sm.StoreLocation = store.StoreLocation; sm.StoreName = store.StoreName; List <LTS.Reader> readers = new List <LTS.Reader>(); readers = DAT.DataAccess.GetReader().Where(j => j.SettingsID == sm.SettingsID).ToList(); for (int j = 0; j < readers.Count; j++) { ReaderMain rm = new ReaderMain(); rm.ReaderID = readers[j].ReaderID; rm.IPaddress = readers[j].IPaddress; rm.NumAntennas = readers[j].NumAntennas; rm.antennas = DAT.DataAccess.GetAntenna().Where(q => q.ReaderID == rm.ReaderID).ToList(); sm.Readers.Add(rm); } bool checks = true; for (int x = 0; x < sm.Readers.Count; x++) { ImpinjRevolution ir = new ImpinjRevolution(); ir.ReaderScanMode = ScanMode.ScanItem; ir.HostName = sm.Readers[x].IPaddress; ir.Antennas = sm.Readers[x].antennas; ir.TagRead += ir_TagRead; ir.Connect(); impinjrev.Add(ir); if (!ir.isConnected) { if (checks == true) { checks = false; } } } if (checks == true) { lblConnect.Text = "Connected"; timer.Start(); impinjrev.ForEach(imp => { imp.TagRead += ir_TagRead; imp.StartRead(); }); ((Form1)this.Parent.Parent.Parent.Parent).scan = true; lblConnect.Text = "Reading..."; lblTimer.Text = time.ToString(); } else { lblConnect.Text = "Not Connected!"; timer.Stop(); timer.Elapsed -= timer_Elapsed; time = 0; for (int i = 0; i < impinjrev.Count; i++) { impinjrev[i].StopRead(); impinjrev[i].Disconnect(); } EnableOrDisable(true); ((Form1)this.Parent.Parent.Parent.Parent).scan = false; } } } catch (Exception ex) { MessageBox.Show("Sorry Something went wrong, the action was not completed!"); } return(true); }
//Margo private void button5_Click(object sender, EventArgs e) { try { lblSelect.Visible = false; if (listS.Where(u => u.StoreName == comboBoxStore.SelectedItem.ToString()).FirstOrDefault() != null) { if (set != null) { button4.Enabled = false; button2.Enabled = false; comboBoxStore.Enabled = false; lblConnect.Text = "Connecting ..."; lblStartRead.Visible = false; lblStop.Visible = false; btnStart.Enabled = false; lblConnect.Visible = true; sm = null; sm = new SettingsMain(); impinjrev.Clear(); sm.SettingsID = set.SettingsID; sm.SettingsName = set.SettingsName; sm.SettingsSelect = set.SettingsSelect; sm.StoreID = set.StoreID; LTS.Store store = DAT.DataAccess.GetStore().Where(i => i.StoreID == sm.StoreID).FirstOrDefault(); sm.StoreLocation = store.StoreLocation; sm.StoreName = store.StoreName; List <LTS.Reader> readers = new List <LTS.Reader>(); readers = DAT.DataAccess.GetReader().Where(j => j.SettingsID == sm.SettingsID).ToList(); for (int j = 0; j < readers.Count; j++) { ReaderMain rm = new ReaderMain(); rm.ReaderID = readers[j].ReaderID; rm.IPaddress = readers[j].IPaddress; rm.NumAntennas = readers[j].NumAntennas; rm.antennas = DAT.DataAccess.GetAntenna().Where(q => q.ReaderID == rm.ReaderID).ToList(); sm.Readers.Add(rm); } bool checks = true; for (int x = 0; x < sm.Readers.Count; x++) { ImpinjRevolution ir = new ImpinjRevolution(); ir.ReaderScanMode = ScanMode.FullScan; ir.HostName = sm.Readers[x].IPaddress; ir.Antennas = sm.Readers[x].antennas; ir.TagRead += ir_TagRead; ir.Connect(); impinjrev.Add(ir); if (!ir.isConnected) { if (checks == true) { checks = false; } } } if (checks == true) { config = true; lblConnect.Text = "Connected"; btnStart.Enabled = true; btnStop.Enabled = false; ((Form1)this.Parent.Parent.Parent.Parent).scan = true; } else { lblConnect.Text = "Not Connected"; } } else { MessageBox.Show("The Store selected does not have a setting set, please go to the Select Setting page and choose a setting!", "", MessageBoxButtons.OKCancel); } } else { lblSelect.Visible = true; } } catch (Exception ex) { MessageBox.Show("Sorry Something went wrong, the action was not completed!"); } }
bool updateItem_connect(LTS.Settings se) { Log.WriteLog(LogType.Trace, "come in updateItem_connect"); try { lConnectMsg.Text = "Connecting..."; int index = cbStore.SelectedIndex; int storeID = listS[index].StoreID; LTS.Settings set = se; sm = null; sm = new SettingsMain(); impinjrev.Clear(); sm.SettingsID = set.SettingsID; sm.SettingsName = set.SettingsName; sm.SettingsSelect = set.SettingsSelect; sm.StoreID = set.StoreID; LTS.Store store = DAT.DataAccess.GetStore().Where(i => i.StoreID == sm.StoreID).FirstOrDefault(); if (null == store) { Log.WriteLog(LogType.Error, "error to get store with id[" + set.StoreID + "]"); return(false); } sm.StoreLocation = store.StoreLocation; sm.StoreName = store.StoreName; Log.WriteLog(LogType.Trace, "success to get settings[" + sm.SettingsID + "] witch in store[" + set.StoreID + "] info:settingsName[" + set.SettingsName + "], " + "select flag[" + set.SettingsSelect + "], the storeName[" + store.StoreName + "] and storeLocation[" + store.StoreLocation + "]"); List <LTS.Reader> readers = new List <LTS.Reader>(); readers = DAT.DataAccess.GetReader().Where(j => j.SettingsID == sm.SettingsID).ToList(); if (null == readers) { Log.WriteLog(LogType.Error, "error to get readers in settings[" + sm.SettingsID + "]"); return(false); } for (int j = 0; j < readers.Count; j++) { ReaderMain rm = new ReaderMain(); rm.ReaderID = readers[j].ReaderID; rm.IPaddress = readers[j].IPaddress; rm.NumAntennas = readers[j].NumAntennas; rm.antennas = DAT.DataAccess.GetAntenna().Where(q => q.ReaderID == rm.ReaderID).ToList(); sm.Readers.Add(rm); } bool checks = true; Log.WriteLog(LogType.Trace, "success go get " + readers.Count + " readers with in settings[" + sm.SettingsID + "] into memery"); Log.WriteLog(LogType.Trace, "success go get " + readers.Count + " readers with in settings[" + sm.SettingsID + "] into memery"); //根据settings上的读写器配置,进行读写器连接操作 for (int x = 0; x < sm.Readers.Count; x++) { bool bOk = true; //针对每一个reader配置生成一个reader解决方案节点 ImpinjRevolution ir = new ImpinjRevolution(); ir.ReaderScanMode = ScanMode.ScanItem; ir.HostName = sm.Readers[x].IPaddress; ir.Antennas = sm.Readers[x].antennas; ir.isConnected = false; //ir.TagRead += ir_TagRead; Log.WriteLog(LogType.Trace, "goto connect to reader with ip[" + ir.HostName + "]"); //连接到指定的读写器上 if (!ir.ir_connectReader()) { bOk = false; Log.WriteLog(LogType.Error, "error to connect to reader[" + ir.HostName + "]"); } impinjrev.Add(ir); if (!bOk) { if (checks == true) { Log.WriteLog(LogType.Trace, "goto set the check flag into false status."); checks = false; } } } Log.WriteLog(LogType.Trace, "after connect to all the readers"); if (checks == true) { lConnectMsg.Text = "Connected"; //启动定时器,定时器超时后,执行定时器超时函数 timer.Start(); //遍历读写器数组,为他们注册委托事件,并启动读写器 impinjrev.ForEach(imp => { imp.dReadHandler += updateItem_ir_tagRead; imp.ir_startRead(); }); Log.WriteLog(LogType.Trace, "success to start all readers"); ((Form1)this.Parent.Parent.Parent.Parent).scan = true; lConnectMsg.Text = "Reading..."; } else { lConnectMsg.Text = "Not Connected!"; timer.Stop(); timer.Elapsed -= updateItem_timer_elapsed; time = 0; for (int i = 0; i < impinjrev.Count; i++) { impinjrev[i].ir_stopRead(); impinjrev[i].ir_disconnect(); } updateItem_enableOrDisable(true); ((Form1)this.Parent.Parent.Parent.Parent).scan = false; } return(true); } catch (Exception ex) { Log.WriteLog(LogType.Error, "there is something wrong during connect to readers. the error msg is " + ex.Message + ""); MessageBox.Show("Sorry Something went wrong, the action was not completed!"); return(true); } }
public ReaderHandler(ReaderMain act) { _ref = new WeakReference <ReaderMain>(act); }
private void btnAdd_Click(object sender, EventArgs e) { try { int totalNum = 0; lblName.Visible = false; lblReader.Visible = false; lblStore.Visible = false; lblAntenna.Visible = false; lblIP.Visible = false; string name = txtSettingsName.Text; if (name != "") { if (comboBoxStore.DataSource != null && listS.Where(u => u.StoreName == comboBoxStore.SelectedItem.ToString()).FirstOrDefault() != null) { if (reader.Count != 0) { int index = comboBoxStore.SelectedIndex; int storeID = listS[index].StoreID; sm.StoreID = storeID; sm.SettingsName = name; sm.SettingsSelect = false; for (int x = 0; x < reader.Count; x++) { ReaderMain rm = new ReaderMain(); rm.IPaddress = reader[x].IPaddress; rm.NumAntennas = reader[x].numAntennas; for (int y = 0; y < reader[x].antenna.Count; y++) { LTS.Antenna a = new LTS.Antenna(); a.AntennaNumber = reader[x].antenna[y].antennaNumber; a.RxPower = reader[x].antenna[y].rxPower; a.TxPower = reader[x].antenna[y].txPower; rm.antennas.Add(a); } sm.Readers.Add(rm); } LTS.Settings set = new LTS.Settings(); set.SettingsName = sm.SettingsName; set.SettingsSelect = sm.SettingsSelect; set.StoreID = sm.StoreID; int setDone = DAT.DataAccess.AddSettings(set); if (setDone != -1) { sm.SettingsID = setDone; for (int a = 0; a < sm.Readers.Count; a++) { LTS.Reader r = new LTS.Reader(); r.IPaddress = sm.Readers[a].IPaddress; r.NumAntennas = sm.Readers[a].NumAntennas; r.SettingsID = sm.SettingsID; int rid = DAT.DataAccess.AddReader(r); if (rid != -1) { sm.Readers[a].ReaderID = rid; for (int b = 0; b < sm.Readers[a].antennas.Count; b++) { LTS.Antenna ant = new LTS.Antenna(); ant.AntennaNumber = sm.Readers[a].antennas[b].AntennaNumber; ant.RxPower = sm.Readers[a].antennas[b].RxPower; ant.TxPower = sm.Readers[a].antennas[b].TxPower; ant.ReaderID = sm.Readers[a].ReaderID; int aid = DAT.DataAccess.AddAntenna(ant); if (aid != -1) { totalNum = totalNum + 1; } else { MessageBox.Show("Sorry, something went wrong, the setting was not added!"); ((Main)this.Parent.Parent).ChangeView <Settings>(); break; } } if (totalNum == sm.TotalAmountAntennas()) { MessageBox.Show("The setting was added successfully!"); ((Main)this.Parent.Parent).ChangeView <Settings>(); } else { MessageBox.Show("Sorry, something went wrong, the setting was not added!"); ((Main)this.Parent.Parent).ChangeView <Settings>(); } } else { MessageBox.Show("Sorry, something went wrong, the setting was not added!"); ((Main)this.Parent.Parent).ChangeView <Settings>(); break; } } } else { MessageBox.Show("Sorry, something went wrong, the setting was not added!"); ((Main)this.Parent.Parent).ChangeView <Settings>(); } } else { lblReader.Visible = true; } } else { lblStore.Visible = true; } } else { lblName.Visible = true; } } catch (Exception ex) { MessageBox.Show("Sorry Something went wrong, the action was not completed!"); } }