public void TestLoadWriteSettings() { var settingsPath = @"OMRSettings.json"; if (File.Exists(settingsPath)) { File.Delete(settingsPath); } var settings = new Dictionary <string, string>(); settings.Add(SettingTypes.SELECTED_RECORDING_DEVICE, "test"); settings.Add(SettingTypes.RECORD_SCREEN, "test1"); SettingsMain.GetInstance().WriteSettings(settings, settingsPath); Assert.IsTrue(File.Exists(settingsPath)); Dictionary <string, string> readedSettings = SettingsMain.GetInstance().LoadSettings(settingsPath); Assert.IsTrue(readedSettings.Count == settings.Count); Assert.IsTrue(readedSettings[SettingTypes.SELECTED_RECORDING_DEVICE] == "test"); Assert.IsTrue(readedSettings[SettingTypes.RECORD_SCREEN] == "test1"); File.Delete(settingsPath); }
public MainWindow(User user) { InitializeComponent(); MainWindow.user = user; userName.Text = MainWindow.user.username; if (MainWindow.user.admin) { userPermissions.Text = "Administrator"; } else { userPermissions.Text = "User"; } m_dashboard = new Dashboard(); m_invoice = new InvoiceMain(); m_receipt = new ReceiptMain(); m_creditNote = new CreditNoteMain(); m_statement = new StatementMain(this); m_product = new ProductMain(); m_customer = new CustomerMain(); m_quote = new QuoteMain(); m_expenses = new ExpensesMain(); m_settings = new SettingsMain(); m_order = new OrderMain(this); BtnDashboard_Click(null, null); }
//保存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); }
private void SettingsButton_Click(object sender, RoutedEventArgs e) { clear_all(); SettingsMain settings = new SettingsMain(); named.Children.Add(settings); settings.CheckAdmin(Account); }
void connect(SettingsMain smii) { try { ((Form1)this.Parent.Parent.Parent.Parent).scan = true; lblConnect.Text = "Connecting..."; bool checks = true; for (int x = 0; x < smii.Readers.Count; x++) { ImpinjRevolution ir = new ImpinjRevolution(); ir.ReaderScanMode = ScanMode.FullScan; ir.HostName = smii.Readers[x].IPaddress; ir.Antennas = smii.Readers[x].antennas; ir.Connect(); impinjrev.Add(ir); if (!ir.isConnected) { if (checks == true) { checks = false; } } } if (checks == true) { lblConnect.Text = ""; MessageBox.Show("All the readers connected succesfully!"); for (int i = 0; i < impinjrev.Count; i++) { impinjrev[i].StopRead(); impinjrev[i].Disconnect(); } ((Form1)this.Parent.Parent.Parent.Parent).scan = false; } else { lblConnect.Text = ""; MessageBox.Show("The readers did not connect succesfully!"); for (int i = 0; i < impinjrev.Count; i++) { impinjrev[i].StopRead(); impinjrev[i].Disconnect(); } ((Form1)this.Parent.Parent.Parent.Parent).scan = false; } } catch (Exception ex) { MessageBox.Show("Sorry Something went wrong, the action was not completed!"); } }
//保存setting信息 private static bool SaveSettingInfo(ref DataTable stDt, ref SettingsMain stSmi) { Log.WriteLog(LogType.Trace, "come in SaveStoreInfo"); stSmi.SettingsID = Int32.Parse(stDt.Rows[0]["SettingsID"].ToString()); stSmi.SettingsName = stDt.Rows[0]["SettingsName"].ToString(); stSmi.SettingsSelect = true; Log.WriteLog(LogType.Trace, "save setting info : SettingsID[" + stSmi.SettingsID + "], SettingsName[" + stSmi.SettingsName + "], select[" + stSmi.SettingsSelect + "]"); return(true); }
//保存Store信息 private static bool SaveStoreInfo(ref DataTable stDt, ref SettingsMain stSmi) { Log.WriteLog(LogType.Trace, "come in SaveStoreInfo"); stSmi.StoreID = Int32.Parse(stDt.Rows[0]["StoreID"].ToString()); stSmi.StoreLocation = stDt.Rows[0]["StoreLocation"].ToString(); stSmi.StoreName = stDt.Rows[0]["StoreName"].ToString(); Log.WriteLog(LogType.Trace, "success save store info :id[" + stSmi.StoreID + "],name[" + stSmi.StoreName + "], storelocate[" + stSmi.StoreLocation + "]"); 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!"); } }
//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); } }
/*int iStoreId, int iSettingId, * List<ImpinjRevolution> impinjrev, 读写器列表; * delegate_read_handler dRHandler, 读操作函数; * delegate_write_handler dWHandler, 写操作函数; * delegate_check_handler dCHandler, 校验函数; * bool bTest, 标识是否是测试操作; *描述:供外部使用的连接读写器的接口API。应用setting的配置,连接到指定的读写器上。 */ public static bool reader_connectReader(int iStoreId, int iSettingId, List <ImpinjRevolution> impinjrev, BusinessQue stBQue, delegate_read_handler dRHandler, delegate_write_handler dWHandler, delegate_check_handler dCHandler, bool bTest) { DataSet stDs; DataTable stDt; SettingsMain smi = new SettingsMain(); Log.WriteLog(LogType.Trace, "come in reader_connectReader"); //获取指定setting下所有reader的信息 string sSql = "select s.StoreID, s.StoreName, s.StoreLocation, st.SettingsID, st.SettingsName, st.SettingsSelect, r.ReaderID, r.IPaddress, r.NumAntennas, r.ReaderType " + "from Store s " + "LEFT JOIN Settings st ON st.StoreID = s.StoreID " + "LEFT JOIN Reader r ON r.SettingsID = st.SettingsID " + "where s.StoreID = " + iStoreId + " AND st.SettingsID = " + iSettingId + "; "; try { stDs = SqlAccess.GetDataSet(sSql); stDt = stDs.Tables[0]; if (stDt.Rows.Count == 0) { Log.WriteLog(LogType.Trace, "there is not setting with storeid[" + iStoreId + "] and settingId[" + iSettingId + "]"); MessageBox.Show("there is not setting with storeid[" + iStoreId + "] and settingId[" + iSettingId + "]"); return(true); } Log.WriteLog(LogType.Trace, "success to get " + stDt.Rows.Count + " readers configs in store[" + iStoreId + "] settings[" + iSettingId + "]."); /*====================保存配置到内存====================*/ SaveStoreInfo(ref stDt, ref smi); SaveSettingInfo(ref stDt, ref smi); //遍历所有reader for (int iIdx = 0; iIdx < stDt.Rows.Count; iIdx++) { DataRow stDr = stDt.Rows[iIdx]; if (!SaveReaderInfo(ref stDr, ref smi, iIdx)) { MessageBox.Show("error to get reader config, so can not connect to reader."); return(false); } } /*================根据配置连接到指定的读写器上================*/ if (!reader_connect_handler(smi, impinjrev, stBQue, dRHandler, dWHandler, dCHandler, bTest)) { Log.WriteLog(LogType.Error, "error go call reader_connect"); return(false); } return(true); } catch (Exception ex) { Log.WriteLog(LogType.Error, "error to process connect reader, the exception msg is " + ex.Message.ToString() + "."); return(false); } }
/*SettingsMain smii, settings的配置信息; * ref List<ImpinjRevolution> impinjrev, reader控制节点列表; * delegate_read_handler dRHandler, 读操作函数; * delegate_write_handler dWHandler, 写操作函数; * delegate_check_handler dCHandler, 校验函数; * bool bTest, 测试标志位; *描述:为每个读写器申请一个读写器节点,并连接到物理读写器上,将配置应用到读写器中。*/ private static bool reader_connect_handler(SettingsMain smii, List <ImpinjRevolution> impinjrev, BusinessQue stBQue, delegate_read_handler dRHandler, delegate_write_handler dWHandler, delegate_check_handler dCHandler, bool bTest) { bool bAllConnected = true; Log.WriteLog(LogType.Trace, "come reader_connect_handler"); try { impinjrev.Clear(); //初始化解决方案数组; //连接到对应读写器上,并对读写器进行配置(一个reader配置对应一个impinj解决方案对象) for (int x = 0; x < smii.Readers.Count; x++) { bool bProcessOk = true; //如果系统没有内存分配给revolution,则会抛出异常,所以在这里不需要对ir返回值进行合法性判断 ImpinjRevolution ir = new ImpinjRevolution(); ir.ReaderScanMode = ScanMode.FullScan; ir.HostName = smii.Readers[x].IPaddress; ir.Antennas = smii.Readers[x].antennas; ir.iReaderType = smii.Readers[x].iReaderType; ir.stBQue = stBQue; ir.isConnected = false; //注册委托函数 if (reader_regist_delegate(ir, ir.iReaderType, dRHandler, dWHandler, dCHandler)) { //连接到读写器,并进行配置 if (!ir.ir_connectReader()) { Log.WriteLog(LogType.Trace, "error to connect to reader[" + ir.HostName + "]"); bProcessOk = false; } else { Log.WriteLog(LogType.Trace, "success to connect to reader[" + ir.HostName + "]"); } } else { bProcessOk = false; } //读写器控制节点加入数组 impinjrev.Add(ir); //根据本节点的操作,决定全局操作标志位 if (!bProcessOk) { if (bAllConnected == true) { bAllConnected = false; Log.WriteLog(LogType.Warning, "Warning: reader[" + smii.Readers[x].IPaddress + "] can not be connect to, so we will not using the revolution"); } else { Log.WriteLog(LogType.Warning, "Warning: reader[" + smii.Readers[x].IPaddress + "] can not be connect to"); } } } if (bAllConnected == true) { MessageBox.Show("All the readers in settings[" + smii.SettingsID + "] are connected succesfully!"); } else { MessageBox.Show("there are some readers in settins[" + smii.SettingsID + "] are not connect succesfully!"); } if (bTest || !bAllConnected) { Log.WriteLog(LogType.Trace, "this is a test process or some reader(s) can not connect to, so go to disconnect reader(s)"); //去连接 if (!reader_disconnect(impinjrev)) { Log.WriteLog(LogType.Error, "error to call reader_disconnect"); } } } catch (Exception ex) { MessageBox.Show("Sorry Something went wrong, the connect was not completed!"); bAllConnected = false; } return(bAllConnected); }