private void InstrInit(string locSetFilePath)
        {
            #region NA Init

            string na     = _myUtility.ReadTextFile(locSetFilePath, "EQUIPMENT", "NA");
            string nAaddr = _myUtility.ReadTextFile(locSetFilePath, "ADDRESS", "NA");
            _eqmtStatus.Na01 = false;
            try
            {
                switch (na.ToUpper())
                {
                case "E5071B":
                case "E5071C":
                case "E5071D":
                    _eqNa = new LibEqmtDriver.NA.Ena(nAaddr);
                    //EqNA.Preset("1");
                    _eqmtStatus.Na01 = true;
                    break;

                case "ZNB":
                case "ZNBT":
                    _eqNa = new LibEqmtDriver.NA.Znbt(nAaddr);
                    //EqNA.Preset("2");
                    _eqmtStatus.Na01 = true;
                    break;

                case "NONE":
                case "NA":
                    _eqmtStatus.Na01 = false;
                    break;
                }

                _eqNa.TriggerMode(LibEqmtDriver.NA.naEnum.ETriggerMode.Single);
                _eqNa.TriggerSource(LibEqmtDriver.NA.naEnum.ETriggerSource.BUS);
                _eqNa.LoadState(_stateFiles[0].StateFile);
                DelayMs(3000);
                _eqNa.Operation_Complete();
            }
            catch
            {
                DisplayError(this.ToString(), "Init Equipment", "NA with alias name " + nAaddr + " init error.");
            }
            #endregion
        }
        private void Init(ref StringBuilder sb)
        {
            try
            {
                #region Load TCF
                var doneEvents = new ManualResetEvent[6];
                doneEvents[0] = new ManualResetEvent(false);
                doneEvents[1] = new ManualResetEvent(false);
                doneEvents[2] = new ManualResetEvent(false);
                doneEvents[3] = new ManualResetEvent(false);
                doneEvents[4] = new ManualResetEvent(false);
                doneEvents[5] = new ManualResetEvent(false);

                ThreadWithDelegate thLoadFbarTcf = new ThreadWithDelegate(doneEvents[0]);
                thLoadFbarTcf.WorkExternal = ReadFbarTcf;
                ThreadPool.QueueUserWorkItem(thLoadFbarTcf.ThreadPoolCallback, 0);

                ThreadWithDelegate thReadSegment = new ThreadWithDelegate(doneEvents[1]);
                thReadSegment.WorkExternal = ReadSegmentTable;
                ThreadPool.QueueUserWorkItem(thReadSegment.ThreadPoolCallback, 0);

                ThreadWithDelegate thLoadCalInfoTcf = new ThreadWithDelegate(doneEvents[2]);
                thLoadCalInfoTcf.WorkExternal = ReadFbarCalInfoTcf;
                ThreadPool.QueueUserWorkItem(thLoadCalInfoTcf.ThreadPoolCallback, 0);

                ThreadWithDelegate thFbarCalProcTcf = new ThreadWithDelegate(doneEvents[3]);
                thFbarCalProcTcf.WorkExternal = ReadFbarCalProcedure;
                ThreadPool.QueueUserWorkItem(thFbarCalProcTcf.ThreadPoolCallback, 0);

                ThreadWithDelegate thFbarCalKitStd = new ThreadWithDelegate(doneEvents[4]);
                thFbarCalKitStd.WorkExternal = ReadTcfCalKitStd;
                ThreadPool.QueueUserWorkItem(thFbarCalKitStd.ThreadPoolCallback, 0);

                ThreadWithDelegate thFbarTraceSetting = new ThreadWithDelegate(doneEvents[5]);
                thFbarTraceSetting.WorkExternal = ReadTcfTraceSetting;
                ThreadPool.QueueUserWorkItem(thFbarTraceSetting.ThreadPoolCallback, 0);

                WaitHandle.WaitAll(doneEvents);
                //ReadFbarTCF();
                //ReadSegmentTable();
                //ReadFbarCalProcedure();
                //ReadTcfTraceSetting();
                //ReadTcfCalKitStd();
                //ReadTcfTraceSetting();
                #endregion

                #region Retrieve Cal Sheet Info

                //string CalFilePath = Convert.ToString(DicCalInfo[DataFilePath.CalPathRF]); //H2 Cal Path
                string locSetFilePath = Convert.ToString(_dicCalInfo[DataFilePath.LocSettingPath]);
                SnpFile.FileOutputEnable = Convert.ToBoolean(_dicCalInfo[DataFilePath.EnableDataLog]);
                SnpFile.FileOutputPath   = TcfHeader.ConstFBarResultDir;
                SnpFile.FileOutputCount  = int.Parse(_dicCalInfo[DataFilePath.DataLogCount]);
                SnpFile.ADSFormat        = Convert.ToBoolean(_dicCalInfo[DataFilePath.AdsDataLog]);

                ProductTag = _dicCalInfo[DataFilePath.GuPartNo].ToUpper();
                if (ProductTag == string.Empty | !ATFCrossDomainWrapper.GetStringFromCache(PublishTags.PUBTAG_PACKAGE_TAG, "").ToUpper().Contains(ProductTag))
                {
                    InitSuccess = false;
                    MessageBox.Show("TCF Main sheet GuPartNo " + ProductTag + " not match with test package load " +
                                    ATFCrossDomainWrapper.GetStringFromCache(PublishTags.PUBTAG_PACKAGE_TAG, "").ToUpper(), "Read Main Sheet Error", MessageBoxButtons.OK);
                }
                #endregion

                #region Instrument Init

                InstrInit(locSetFilePath);

                #endregion

                #region Verify ENA State
                InitSuccess = VerifyTraceMatch();
                InitSuccess = VerifySegment();
                #endregion

                #region Configure Network Analyzer
                string cnt_str = Interaction.InputBox
                                     ("Do you want to Configure Network Analyzer? If so, please enter \"Yes\".", "Configure Network Analyzer", "No", 100, 100);
                if (cnt_str.ToUpper() == "YES")
                {
                    _eqNa.Reset();
                    _eqNa.SetupCalKit(_fbarCalStdTable);
                    _eqNa.SetupSegmentTable(_segmentParam);
                    for (int i = 0; i < _traceSetting.Length; i++)
                    {
                        _eqNa.SetupTrace(i + 1, _traceSetting[i]);
                    }

                    _eqNa.TriggerSource(naEnum.ETriggerSource.BUS);
                    _eqNa.SaveState(_stateFiles[0].StateFile);
                    InitSuccess = true;
                }

                cnt_str = Interaction.InputBox
                              ("Do you want to perform FBAR subcal? If so, please enter \"Yes\".", "Network Analyzer Calibration", "No", 100, 100);
                if (cnt_str.ToUpper() == "YES")
                {
                    _eqNa.Calibrate(_fbarCalProcedure, _stateFiles[0].StateFile);
                    _eqNa.SaveState(_stateFiles[0].StateFile);
                    InitSuccess = true;
                }

                DialogResult rslt = MessageBox.Show("Switch OFF ENA display?", "ENA Display Setting", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                if (rslt == DialogResult.Yes)
                {
                    _eqNa.DisplayOn(true);
                }
                else
                {
                    _eqNa.DisplayOn(false);
                }
                #endregion

                #region Init Sparam Test Case
                InitTestCase();
                #endregion
            }
            catch (Exception ex)
            {
                InitSuccess = false;
                MessageBox.Show(ex.Message);
            }
        }