示例#1
0
        private string MeasureFun()
        {
            try
            {
                ioDmm.WriteString("SYSTem:REMote", true);
                ioDmm.WriteString("CONF:FRES", true);
                ioDmm.WriteString("SENS:FRES:OCOM ON", true);
                ioDmm.WriteString("SENS:FRES:NPLC 10", true);

                if (checkBoxNull.Checked)
                {
                    ioDmm.WriteString("FRES:NULL:STAT ON", true);
                }
                else
                {
                    ioDmm.WriteString("FRES:NULL:STAT OFF", true);
                }
                ioDmm.WriteString("READ?", true);
                Pause(3000);
                return(ioDmm.ReadNumber(IEEEASCIIType.ASCIIType_R4, true).ToString());
            }
            catch
            {
                return("Ошибка");
            }
        }
示例#2
0
        /*The following example uses Measure? command to make a single
         * ac current measurement. This is the easiest way to program the
         * multimeter for measurements. However, MEASure? does not offer
         * much flexibility.
         * Be sure to set the instrument address and Initialize before
         * calling this method.
         */
        private void btnMeasure_Click(object sender, System.EventArgs e)
        {
            double dbResult;

            try
            {
                System.Windows.Forms.Cursor.Current = Cursors.WaitCursor;

                btnConfigure.Enabled = false;
                btnMeasure.Enabled   = false;

                //Reset the dmm
                ioDmm.WriteString("*RST", true);
                //Clear the dmm registers
                ioDmm.WriteString("*CLS", true);

                // Set meter to 1 amp ac range
                ioDmm.WriteString("Measure:Current:AC? 1A,0.001MA", true);
                dbResult = (double)ioDmm.ReadNumber(IEEEASCIIType.ASCIIType_R4, true);

                txtResult.Text = dbResult + " amps AC";

                btnConfigure.Enabled = true;
                btnMeasure.Enabled   = true;

                System.Windows.Forms.Cursor.Current = Cursors.Default;
            }
            catch (SystemException ex)
            {
                btnConfigure.Enabled = true;
                btnMeasure.Enabled   = true;
                MessageBox.Show("Measure command failed. " + ex.Source + "  " + ex.Message, "GPIB_Meas_Config", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
示例#3
0
        private void btnTake1AC_Click(object sender, System.EventArgs e)
        {
            ioDmm.WriteString("MEAS:VOLT:AC?", true);
            double dNum = (double)ioDmm.ReadNumber(IEEEASCIIType.ASCIIType_R8, true);

            this.txtReading1.Text = dNum.ToString();
            this.txtReading2.Text = "---";
            this.txtReading3.Text = "---";
        }
示例#4
0
        public double Config34970A(List <string[]> GlobalConfigStrList, List <string[]> ChannelConfigStrList)
        //"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
        // This function performs the instrument setup.
        //YJW: 函数 配置安捷伦
        //"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
        {
            double DelayVal, TrigTime;
            string rdg;
            string msg;
            string NormalMsg = "";


            // Check for exceptions
            //YJW: 使用TRY捕获异常
            try
            {
                // Reset instrument to turn-on condition
                // YJW: reset设备
                data_logger.WriteString("*RST", true);
                Thread.Sleep(750);
                //----------YJW CODE BEGIN----------
                //拼出通道设定字符串
                for (int k = 0; k < ChannelConfigStrList.Count; k++)
                {
                    for (int i = 1; i < ChannelConfigStrList[k].Length; i = i + 2)
                    {
                        NormalMsg = ChannelConfigStrList[k][0] + ChannelConfigStrList[k][i] + ", " + ChannelConfigStrList[k][i + 1];
                        //Console.WriteLine(NormalMsg);//若调试字符串取消此注释控制台输出
                        data_logger.WriteString(NormalMsg, true);//每拼出一条字符串,就送主机执行
                    }
                }
                NormalMsg = "";//清空

                //拼出全局设定字符串
                for (int k = 0; k < GlobalConfigStrList.Count; k++)
                {
                    for (int i = 1; i < GlobalConfigStrList[k].Length; i++)
                    {
                        NormalMsg = GlobalConfigStrList[k][0] + GlobalConfigStrList[k][i];
                        //Console.WriteLine(NormalMsg);//若调试字符串取消此注释控制台输出
                        data_logger.WriteString(NormalMsg, true);//每拼出一条字符串,就送主机执行
                    }
                }
                //----------YJW CODE END----------

                // Wait for instrument to setup
                //YJW: 确认上述设置已经完成
                data_logger.WriteString("*OPC?", true);
                rdg = data_logger.ReadString();

                // Gets the number of channels to be scanned and is used to determine
                // the number of readings.
                //YJW: 从主机读回扫描的通道总数,传全局变量
                data_logger.WriteString("ROUTe:SCAN:SIZE?", true);
                Globls.NumChan = (double)data_logger.ReadNumber(IEEEASCIIType.ASCIIType_R8, true);

                // Gets the number of triggers; 34970A/34972A returns a floating-point number.
                //YJW: 从主机读回扫描触发的次数,传全局变量
                data_logger.WriteString("TRIGger:COUNt?", true);
                Globls.TrigCount = (double)data_logger.ReadNumber(IEEEASCIIType.ASCIIType_R8, true);

                // Get the delay; for future use; 34970A/34972A returns a floating-point number
                //YJW: 从主机读回通道间隔
                data_logger.WriteString("ROUTe:CHANnel:DELay? (@101)", true);
                DelayVal = (double)data_logger.ReadNumber(IEEEASCIIType.ASCIIType_R8, true);

                // Get the trigger time; 34970A/34972A returns a floating-point number
                //YJW: 从主机读回扫描触发间隔
                data_logger.WriteString("TRIGger:TIMer?", true);
                TrigTime = (double)data_logger.ReadNumber(IEEEASCIIType.ASCIIType_R8, true);

                // Calculate total number of readings
                //YJW: 计算正在扫描的总时间
                Globls.NumRdgs = Globls.NumChan * Globls.TrigCount;

                // Calculate total time
                //YJW: 计算整个测量的总时间
                Globls.TotTime = (TrigTime * Globls.TrigCount) - TrigTime + (Globls.NumChan * DelayVal);

                // Check and make sure the correct instrument is addressed
                //YJW: 再次确认主机身份
                data_logger.WriteString("*IDN?", true);
                msg = data_logger.ReadString();

                //Check for errors
                //YJW: 设定查错句柄,因为原来函数名称为Setup,所以传变量是"Setup"
                Check_Error("Setup");

                return(Globls.TotTime);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message + "\nin function: Setup", "VISACom");
                return(0);
            }
        }