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);
        }
Beispiel #3
0
        //保存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);
        }
Beispiel #4
0
        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!");
            }
        }
Beispiel #6
0
        //保存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);
        }
Beispiel #7
0
        //保存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!");
            }
        }
Beispiel #9
0
        //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);
        }
Beispiel #11
0
        //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!");
            }
        }
Beispiel #12
0
        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);
            }
        }
Beispiel #13
0
        /*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);
            }
        }
Beispiel #14
0
        /*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);
        }