コード例 #1
0
ファイル: Form1.cs プロジェクト: heyjeany/JooYoung
        void TestStateUpdate(TESTSTATUS testStatus)
        {
            if (bButtonThreadActive == false)
            {
                return;
            }
            if (btnTestStatus.InvokeRequired)
            {
                _del_UpdateBtn recurFunc = new _del_UpdateBtn(TestStateUpdate);
                this.Invoke(recurFunc, new object[] { testStatus });
            }
            else
            {
                switch (testStatus)
                {
                case TESTSTATUS.READY:
                    btnTestStatus.BackColor = Color.White;
                    btnTestStatus.ForeColor = Color.Black;
                    btnTestStatus.Text      = "Press to Start";
                    break;

                case TESTSTATUS.ERROR:
                    btnTestStatus.BackColor = Color.Red;
                    btnTestStatus.ForeColor = Color.Black;
                    btnTestStatus.Text      = "Error While Testing";
                    break;

                case TESTSTATUS.TESTABORTED:
                    btnTestStatus.BackColor = Color.Red;
                    btnTestStatus.ForeColor = Color.Black;
                    btnTestStatus.Text      = "Test Stopped by User";
                    break;

                case TESTSTATUS.TESTING:
                    btnTestStatus.BackColor = Color.Yellow;
                    btnTestStatus.ForeColor = Color.Black;
                    btnTestStatus.Text      = "Testing";
                    break;

                case TESTSTATUS.TESTDONE:
                    btnTestStatus.BackColor = Color.Blue;
                    btnTestStatus.ForeColor = Color.White;
                    btnTestStatus.Text      = "Test Done.";
                    break;

                case TESTSTATUS.BLANK:
                    btnTestStatus.Text = "";
                    break;
                }
            }
        }
コード例 #2
0
ファイル: Form1.cs プロジェクト: heyjeany/JooYoung
 private void btnTestStatus_Click(object sender, EventArgs e)
 {
     if (bMainTestStarted)
     {
         bMainTestStarted = false;
         testState        = TESTSTATUS.TESTABORTED;
     }
     else
     {
         bMainTestStarted = true;
         this.testThread  = new Thread(new ThreadStart(MainTest));
         testThread.Start();
     }
 }
コード例 #3
0
ファイル: Form1.cs プロジェクト: heyjeany/JooYoung
        void MainTest()
        {
            try
            {
                testState = TESTSTATUS.TESTING;
                string[] t          = txtFreqToTest.Text.Split(',');
                double[] FreqToTest = new double[t.Length];
                int      i          = 0;
                foreach (string strNum in t)
                {
                    FreqToTest[i++] = Convert.ToDouble(strNum);
                }
                t = txtVoltChange.Text.Split(',');
                double[] VoltLevelToTest = new double[t.Length];
                i = 0;
                foreach (string strNum in t)
                {
                    VoltLevelToTest[i++] = Convert.ToDouble(strNum);
                }
                int nRepeat = Convert.ToInt16(txtRepeatTime.Text);
                t = txtMXGPowerLevelToTest.Text.Split(',');
                double[] PowerlevelToTest = new double[t.Length];
                i = 0;
                foreach (string strNum in t)
                {
                    PowerlevelToTest[i++] = Convert.ToDouble(strNum);
                }

                #region Setup MXG
                iSgControl.SetupSG(parameter.T1, parameter.T2, parameter.DutyCycle, parameter.SGFreqInMhz, PowerlevelToTest[0], parameter.WaveformFileName);
                #endregion
                #region Setup MXA
                // Select WLAN App
                xSA.SendCommand("INST:SEL WLAN");
                // Select 11ax 80Mhz
                xSA.SendCommand("RAD:STAN AX80");
                // configure EVM measurement
                xSA.SendCommand("CONF:EVM");
                // set External trigger to EXT1
                xSA.SendCommand("TRIG:EVM:SOUR EXT1");
                // Set input range
                xSA.SetAttenuator((PowerlevelToTest[0] + parameter.Range));
                // turn off average
                xSA.SendCommand("EVM:AVER:STAT OFF");
                // Equalizer training setting
                xSA.SendCommand("CALC:EVM:EQU:TMOD SDATA");
                #endregion
                #region Power On
                n6700x.SendCommand("SENSE:FUNC \"VOLT\",(@1)");
                #endregion
                string strRead = "";
                Log(" >Measure EVM");
                int nTotalLoop = FreqToTest.Length * VoltLevelToTest.Length * nRepeat * PowerlevelToTest.Length;
                SetProgressBar(PROGRESSSET.MAX, nTotalLoop);
                SetProgressBar(PROGRESSSET.MIN, 0);
                SetProgressBar(PROGRESSSET.STATE, 0);
                nTotalLoop = 0;
                // Main Test
                List <string> Result = new List <string>();

                for (int PowerlevelLoop = 0; PowerlevelLoop < PowerlevelToTest.Length; PowerlevelLoop++)
                {
                    // Set MXG Power Level.
                    iSgControl.SendCommand("POWER " + PowerlevelToTest[PowerlevelLoop].ToString(".00") + "DBM");

                    // added for auto range clippnig : Jooyoung

                    //xSA.SendCommand("POWER:ATT 15");
                    xSA.SetAttenuator(PowerlevelToTest[PowerlevelLoop] + parameter.Range);
                    //xSA.SendCommand("POWER:ATT " + ((int)((PowerlevelToTest[PowerlevelLoop] + parameter.Range))).ToString());
                    //xSA.SendCommand("POWER:RANGE " + (PowerlevelToTest[PowerlevelLoop] + parameter.Range).ToString());
                    Thread.Sleep(1000);
                    for (int FreqLoop = 0; FreqLoop < FreqToTest.Length; FreqLoop++)
                    {
                        xSA.SendCommand("FREQ:CENT " + FreqToTest[FreqLoop].ToString() + "MHZ");
                        iSgControl.SendCommand("FREQ " + FreqToTest[FreqLoop].ToString() + "MHZ");
                        for (int VoltLoop = 0; VoltLoop < VoltLevelToTest.Length; VoltLoop++)
                        {
                            n6700x.SendCommand("SOUR:VOLT:LEVEL:IMM:AMP " + VoltLevelToTest[VoltLoop].ToString() + ",(@1)");
                            n6700x.SendCommand("OUTPUT:STATE 1" + ",(@1)");
                            Thread.Sleep(parameter.GapBtwMeasure);
                            xSA.SendCommand("SENSe:POWer:RF:RANGe:OPTimize IMMediate");


                            Thread.Sleep(parameter.GapBtwMeasure);
                            for (int repeat = 0; repeat < nRepeat; repeat++)
                            {
                                LogStatus("Testing at " + PowerlevelToTest[PowerlevelLoop].ToString() + " dBm/ " + FreqToTest[FreqLoop].ToString() + " Mhz / " + VoltLevelToTest[VoltLoop].ToString() + " Volts ( Repeat " + (repeat + 1).ToString() + " )");
                                SetProgressBar(PROGRESSSET.STATE, ++nTotalLoop);
                                xSA.SendCommand("READ:EVM?");
                                Thread.Sleep(500);
                                xSA.Read(ref strRead);
                                Result.Add(PowerlevelToTest[PowerlevelLoop].ToString() + "," + FreqToTest[FreqLoop].ToString() + "," + VoltLevelToTest[VoltLoop].ToString() + "," + (repeat + 1).ToString() + "," + strRead.Split(',')[0]);
                                Thread.Sleep(parameter.GapBtwMeasure);
                                if (!bMainTestStarted)
                                {
                                    throw new Exception("Test Aborted..");
                                }
                            }
                            n6700x.SendCommand("OUTPUT:STATE 0" + ",(@1)");
                            Thread.Sleep(parameter.GapBtwMeasure);
                        }
                    }
                }
                iSgControl.SendCommand("output off");
                n6700x.SendCommand("OUTPUT:STATE 0" + ",(@1)");
                Log("Test Done. ");

                this.bMainTestStarted = false;
                testState             = TESTSTATUS.TESTDONE;
                double[] data    = new double[Result.Count];
                int      nIndex  = 0;
                bool     tLogSet = bLoggingEverything;
                bLoggingEverything = true;
                DateTimeStamp stamp = new DateTimeStamp();

                FileStream   fs = new FileStream(".\\Report_" + stamp.GetNowTime() + ".txt", FileMode.Create);
                StreamWriter sw = new StreamWriter(fs);
                sw.WriteLine("POWER, FREQ, VOLT,REPEAT,RESULT");

                foreach (string tStr in Result)
                {
                    Log(tStr);
                    data[nIndex++] = Convert.ToDouble(tStr.Split(',')[4]);
                    sw.WriteLine(tStr);
                }

                sw.Close(); fs.Close();
                bLoggingEverything = tLogSet;
                UpdateGraph(data);
            }
            catch (Exception ex)
            {
                if (ex.Message == "Test Aborted..")
                {
                    testState = TESTSTATUS.TESTABORTED;
                }
                else
                {
                    testState = TESTSTATUS.ERROR;
                }
                Log(ex.Message);
            }
        }