在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → C# 程控安捷伦电源和频率计

C# 程控安捷伦电源和频率计

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:6.95M
  • 下载次数:12
  • 浏览次数:99
  • 发布时间:2024-04-29
  • 实例类别:C#语言基础
  • 发 布 人:1zzt1995
  • 文件格式:.zip
  • 所需积分:2
 相关标签: 频率计 电源 C#

实例介绍

【实例简介】用C#程控安捷伦电源和频率计进行自动测试
【实例截图】from clipboard

【核心代码】

sing System;
using System.Linq;
using System.Windows.Forms;
using System.IO.Ports;
using System.Reflection;
using System.Threading;
using System.Runtime.InteropServices;
using Ginkgo;
using System.Collections.Generic;
using System.Drawing;
using NPOI.SS.UserModel;
using NPOI.HSSF.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;
using Modbus.Device;
using Agilent.CommandExpert.ScpiNet.Ag53210_1_05;
using Agilent.CommandExpert.ScpiNet.AgE364xS_1_8;
using Agilent.CommandExpert.ScpiNet.AgE3631_2_1;
//using Agilent.CommandExpert.ScpiNet.AgE3632_1_4;
using Ivi.Visa;
using NationalInstruments.Visa;
using Microsoft.Office;
using System.Text.RegularExpressions;
using ATS545;
using System.ComponentModel;
using System.Data;
using System.Windows.Forms.DataVisualization.Charting;



namespace createxcel_2
{
    public partial class Form1 : Form
    {
        Form2 OA = new Form2();

        public Form1()
        {
            InitializeComponent();
            OA.Hide();                         // 隐藏form2窗体
        }

        //Ag53210 v53131A = new Ag53210("GPIB0::2::INSTR");
        //AgE364xS E3642A = new AgE364xS("GPIB0::6::INSTR");
        //AgE3631 E3631A = new AgE3631("GPIB0::6::INSTR");



        private void button1_Click(object sender, EventArgs e)
        {
            button2.Enabled = true;
            textFreq.Text = "";
            Thread.Sleep(300);
            textFreq.Clear();
            Ag53210 v53131A = new Ag53210(textBox1.Text);
            AgE3631 E3631A = new AgE3631(textBox2.Text);
            AgE364xS E3642A = new AgE364xS(textBox2.Text);
            string GPIB_Address= textBox3.Text;

            string path = textBox7.Text textBox5.Text ".txt";  //测试文件存储路径
            if (File.Exists(path))
            {
                MessageBox.Show("文件已经存在,请更换文件名!!!");
                Environment.Exit(0);

            }
           
            
           StreamWriter sw = File.CreateText(path); // 创建文件
            

            double[] vcc = new double[1000];
            double[] measure = null;
            double[] freq = new double[1000];
            int i = 0;


            double VDD_Min = 0; //设置最小电压
            VDD_Min = Convert.ToDouble(textBox9.Text);
            double Step = 0; //设置测试步长
            Step = Convert.ToDouble(textBox10.Text);
            double VDD_Max = 0;  // 设置最大电压
            VDD_Max = Convert.ToDouble(textBox11.Text);

            int P = Convert.ToInt16(1 / Step);

            double z = (VDD_Max - VDD_Min) * P 1;   //设定测试点数
            double av1, av2, av3 = 0.0;

            int Tdelay = Convert.ToInt32(textBox12.Text);
            string[] Tstr = Regex.Split(textBox6.Text, ",");   //输入的温度值转换成字符串数组
            int Tt = Tstr.Length;                             // 计算字符串数组的长度
            double[] Temp = new double[Tt];                   // 定义温度数组
            for (int j = 0; j < Tt; j )
            {
                Temp[j] = Convert.ToDouble(Tstr[j]);
            }

            if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "")
            {
                MessageBox.Show("请输出GPIB地址!!!");
                System.Environment.Exit(0);
            }





            if (checkBox1.Checked == true)   //选择温度测试
            {


                Thread thread = new Thread(new ThreadStart(OA.Open545));//创建线程
                thread.Start();

                OA.ATS545_Ini();
                Thread.Sleep(100);        //到达温度后等待时间

                for (int j = 0; j < Tt; j )
                {
                    //StreamWriter sw = File.CreateText(path name "-" Tstr[j] ".txt"); // 创建存在文件
                    
                    Temp[j] = Convert.ToDouble(Tstr[j]);
                    double Tset = Temp[j];
                    Thread.Sleep(100);
                    OA.ATS545_Set(Tset);
                    Thread.Sleep(Tdelay * 1000);

                    if (radioButton1.Checked == true || radioButton2.Checked == true)  //选择单电源设备
                    {

                        try
                        {
                            v53131A.Connect();
                            E3642A.Connect();
                            Thread.Sleep(100);

                            v53131A.SCPI.RST.Command();
                            E3642A.SCPI.RST.Command();
                        }
                        catch
                        {
                            MessageBox.Show("Ini Equip Error");
                            return;
                        }
                        Thread.Sleep(100);

                        for (i = 0; i < z; i )
                        {
                            vcc[i] = (double)(VDD_Min Step * i);

                            try
                            {
                                measure = null;
                                E3642A.SCPI.OUTPut.STATe.Command(false);
                                Thread.Sleep(100);
                                E3642A.SCPI.APPLy.Command(vcc[i], 0.1D);
                                Thread.Sleep(100);

                                E3642A.SCPI.OUTPut.STATe.Command(true);
                                Thread.Sleep(1000);

                                    v53131A.SCPI.READ.QueryAsciiReal(out measure);
                                    av1 = measure[0];
                                    Thread.Sleep(100);

                                    v53131A.SCPI.READ.QueryAsciiReal(out measure);
                                    av2 = measure[0];
                                    Thread.Sleep(100);

                                    v53131A.SCPI.READ.QueryAsciiReal(out measure);
                                    av3 = measure[0];
                                    Thread.Sleep(100);

                                    if (measure.Count() > 0)
                                    {
                                        freq[i] = (av1 av2 av3) / 3000000;
                                    }

                                    else
                                    {
                                        freq[i] = 0;
                                    }    
                            }
                            catch
                            {
                                freq[i] = 0;
                            }

                            string Vcc = Convert.ToString(vcc[i]);
                            string Fr = Convert.ToString(freq[i]);
                            sw.WriteLine(Vcc "  " Fr);
                            textFreq.AppendText(Vcc "  " Fr "\r\n");

                        }

                        //sw.Flush();
                        //sw.Close();
                        //E3631A.SCPI.OUTPut.STATe.Command(false);
                        //this.BackColor = Color.PaleTurquoise;
                        //button1.BackColor = Color.Bisque;
                    }

                    else if (radioButton3.Checked == true && radioButton4.Checked == true)   //选择多通道电源,只使用P6V 通道
                    {
                        try
                        {
                            v53131A.Connect();
                            E3631A.Connect();
                            Thread.Sleep(100);

                            v53131A.SCPI.RST.Command();
                            E3631A.SCPI.RST.Command();
                        }
                        catch
                        {
                            MessageBox.Show("Ini Equip Error");
                            return;
                        }
                        Thread.Sleep(100);

                        for (i = 0; i < z; i )
                        {
                            vcc[i] = (double)(VDD_Min Step * i);

                            try
                            {
                                measure = null;
                                E3631A.SCPI.OUTPut.STATe.Command(false);
                                Thread.Sleep(100);
                                E3631A.SCPI.APPLy.Command("P6V", vcc[i], 0.1D);
                                Thread.Sleep(500);

                                E3631A.SCPI.OUTPut.STATe.Command(true);
                                Thread.Sleep(1000);

                                v53131A.SCPI.READ.QueryAsciiReal(out measure);
                                av1 = measure[0];
                                Thread.Sleep(100);

                                v53131A.SCPI.READ.QueryAsciiReal(out measure);
                                av2 = measure[0];
                                Thread.Sleep(100);

                                v53131A.SCPI.READ.QueryAsciiReal(out measure);
                                av3 = measure[0];
                                Thread.Sleep(100);

                                if (measure.Count() > 0)
                                {
                                    freq[i] = (av1 av2 av3) / 3000000;
                                }

                                else
                                {
                                    freq[i] = 0;
                                }
                            }
                            catch
                            {
                                freq[i] = 0;
                            }

                            string Vcc = Convert.ToString(vcc[i]);
                            string Fr = Convert.ToString(freq[i]);
                            sw.WriteLine(Vcc "  " Fr);
                            textFreq.AppendText(Vcc "  " Fr "\r\n");

                        }

                        //sw.Flush();
                        //sw.Close();
                        //E3631A.SCPI.OUTPut.STATe.Command(false);
                        //this.BackColor = Color.PaleTurquoise;
                        //button1.BackColor = Color.Bisque;
                    }

                    else if (radioButton3.Checked == true && radioButton5.Checked == true)   //选择多通道电源,使用P6V, P25V
                    {
                        string[] Vstr = Regex.Split(textBox4.Text, ",");
                        int Vt = Vstr.Length;
                        double[] VDD2 = new double[Vt];
                        for (int k = 0; k < Vt; k )                                        //第二电源设置
                        {
                            VDD2[k] = Convert.ToDouble(Tstr[k]);
                            Thread.Sleep(100);
                        }

                            try
                        {
                            v53131A.Connect();
                            E3631A.Connect();
                            Thread.Sleep(300);

                            v53131A.SCPI.RST.Command();
                            E3631A.SCPI.RST.Command();
                        }
                        catch
                        {
                            MessageBox.Show("Ini Equip Error");
                            return;
                        }
                        Thread.Sleep(100);

                        for (int k = 0; k < Vt; k )                                        //第二电源设置
                        {
                            double VDD = VDD2[k];
                            Thread.Sleep(100);

                            E3631A.SCPI.OUTPut.STATe.Command(false);
                            Thread.Sleep(100);
                            E3631A.SCPI.APPLy.Command("P25V", VDD, 0.1D);
                            Thread.Sleep(100);

                           for (i = 0; i < z; i )
                            {
                                vcc[i] = (double)(VDD_Min Step * i);

                                try
                                {
                                    measure = null;
                                    E3631A.SCPI.OUTPut.STATe.Command(false);
                                    Thread.Sleep(100);
                                    E3631A.SCPI.APPLy.Command("P6V", vcc[i], 0.1D);
                                    Thread.Sleep(100);

                                    E3631A.SCPI.OUTPut.STATe.Command(true);
                                    Thread.Sleep(1000);

                                    v53131A.SCPI.READ.QueryAsciiReal(out measure);
                                    av1 = measure[0];
                                    Thread.Sleep(100);

                                    v53131A.SCPI.READ.QueryAsciiReal(out measure);
                                    av2 = measure[0];
                                    Thread.Sleep(100);

                                    v53131A.SCPI.READ.QueryAsciiReal(out measure);
                                    av3 = measure[0];
                                    Thread.Sleep(100);

                                    if (measure.Count() > 0)
                                    {
                                        freq[i] = (av1 av2 av3) / 3000000;
                                    }

                                    else
                                    {
                                        freq[i] = 0;
                                    }

                                }
                                catch
                                {
                                    freq[i] = 0;
                                }
                                string Vcc = Convert.ToString(vcc[i]);
                                string Fr = Convert.ToString(freq[i]);
                                sw.WriteLine(Vcc "  " Fr);
                                textFreq.AppendText(Vcc "  " Fr "\r\n");
                            }


                        }
                    }

                }

                sw.Flush();
                sw.Close();
                E3631A.SCPI.OUTPut.STATe.Command(false);
                this.BackColor = Color.PaleTurquoise;
                button1.BackColor = Color.Bisque;

                Thread.Sleep(100);
                OA.ATS545_Set(70);
                Thread.Sleep(10000);
                OA.ATS545_Stop();
                //OA.ATS545_OFF();

            }

            else                                                                                               //不选择高低温,只测试常温
            {
                //if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "")
                //{
                //    MessageBox.Show("请输出GPIB地址!!!");
                //    System.Environment.Exit(0);

                //}
                //StreamWriter sw = File.CreateText(path name ".txt"); // 创建存在文件
                if (radioButton1.Checked == true || radioButton2.Checked == true)
                {

                    try
                    {
                        v53131A.Connect();
                        E3642A.Connect();
                        Thread.Sleep(100);

                        v53131A.SCPI.RST.Command();
                        E3642A.SCPI.RST.Command();
                    }
                    catch
                    {
                        MessageBox.Show("Ini Equip Error");
                        return;
                    }
                    Thread.Sleep(100);

                    for (i = 0; i < z; i )
                    {
                        vcc[i] = (double)(VDD_Min Step * i);

                        try
                        {
                            measure = null;
                            E3642A.SCPI.OUTPut.STATe.Command(false);
                            Thread.Sleep(100);
                            E3642A.SCPI.APPLy.Command(vcc[i], 0.1D);
                            Thread.Sleep(100);

                            E3642A.SCPI.OUTPut.STATe.Command(true);
                            Thread.Sleep(1000);

                                v53131A.SCPI.READ.QueryAsciiReal(out measure);
                                av1 = measure[0];
                                Thread.Sleep(100);

                                v53131A.SCPI.READ.QueryAsciiReal(out measure);
                                av2 = measure[0];
                                Thread.Sleep(100);

                                v53131A.SCPI.READ.QueryAsciiReal(out measure);
                                av3 = measure[0];
                                Thread.Sleep(100);

                                if (measure.Count() > 0)
                                {
                                    freq[i] = (av1 av2 av3) / 3000000;
                                }

                                else
                                {
                                    freq[i] = 0;
                                }

                        }
                        catch
                        {
                            freq[i] = 0;
                        }
                        string Vcc = Convert.ToString(vcc[i]);
                        string Fr = Convert.ToString(freq[i]);
                        sw.WriteLine(Vcc "  " Fr);
                        textFreq.AppendText(Vcc "  " Fr "\r\n");
                    }

                    //sw.Flush();
                    //sw.Close();
                    //E3631A.SCPI.OUTPut.STATe.Command(false);
                    //this.BackColor = Color.PaleTurquoise;
                    //button1.BackColor = Color.Bisque;
                }

                else if (radioButton3.Checked == true && radioButton4.Checked == true)
                {


                    try
                    {
                        v53131A.Connect();
                        E3631A.Connect();
                        Thread.Sleep(100);

                        v53131A.SCPI.RST.Command();
                        E3631A.SCPI.RST.Command();
                    }
                    catch
                    {
                        MessageBox.Show("Ini Equip Error");
                        return;
                    }
                    Thread.Sleep(100);

                    for (i = 0; i < z; i )
                    {
                        vcc[i] = (double)(VDD_Min Step * i);

                        try
                        {
                            measure = null;
                            E3631A.SCPI.OUTPut.STATe.Command(false);
                            Thread.Sleep(100);
                            E3631A.SCPI.APPLy.Command("P6V", vcc[i], 0.1D);
                            Thread.Sleep(100);

                            E3631A.SCPI.OUTPut.STATe.Command(true);
                            Thread.Sleep(1000);

                                v53131A.SCPI.READ.QueryAsciiReal(out measure);
                                av1 = measure[0];
                                Thread.Sleep(100);

                                v53131A.SCPI.READ.QueryAsciiReal(out measure);
                                av2 = measure[0];
                                Thread.Sleep(100);

                                v53131A.SCPI.READ.QueryAsciiReal(out measure);
                                av3 = measure[0];
                                Thread.Sleep(100);

                                if (measure.Count() > 0)
                                {
                                    freq[i] = (av1 av2 av3) / 3000000;
                                }

                                else
                                {
                                    freq[i] = 0;
                                }



                        }
                        catch
                        {
                            freq[i] = 0;
                        }
                        string Vcc = Convert.ToString(vcc[i]);
                        string Fr = Convert.ToString(freq[i]);
                        sw.WriteLine(Vcc "  " Fr);
                        textFreq.AppendText(Vcc "  " Fr "\r\n");
                    }
                    //sw.Flush();
                    //sw.Close();
                    //E3631A.SCPI.OUTPut.STATe.Command(false);
                    //this.BackColor = Color.PaleTurquoise;
                    //button1.BackColor = Color.Bisque;
                }

                else if (radioButton3.Checked == true && radioButton5.Checked == true)
                {
                    string[] Vstr = Regex.Split(textBox4.Text, ",");
                    int Vt = Vstr.Length;
                    double[] VDD2 = new double[Vt];

                    for (int j = 0; j < Vt; j )                                        //第二电源设置
                    {
                        VDD2[j] = Convert.ToDouble(Vstr[j]);
                        Thread.Sleep(100);
                    }

                    try
                    {
                        v53131A.Connect();
                        E3631A.Connect();
                        Thread.Sleep(100);

                        v53131A.SCPI.RST.Command();
                        E3631A.SCPI.RST.Command();
                    }
                    catch
                    {
                        MessageBox.Show("Ini Equip Error");
                        return;
                    }

                    for (int j = 0; j < Vt; j )                                        //第二电源设置
                    {
                        VDD2[j] = Convert.ToDouble(Vstr[j]);
                        Thread.Sleep(100);

                        E3631A.SCPI.APPLy.Command("P25V", VDD2[j], 0.1D);
                        Thread.Sleep(100);

                        for (i = 0; i < z; i )
                        {
                            vcc[i] = (double)(VDD_Min Step * i);
                            try
                            {
                                measure = null;
                                E3631A.SCPI.OUTPut.STATe.Command(false);
                                Thread.Sleep(1000);
                                E3631A.SCPI.APPLy.Command("P6V", vcc[i], 0.1D);
                                Thread.Sleep(1000);

                                E3631A.SCPI.OUTPut.STATe.Command(true);
                                Thread.Sleep(1000);

                                v53131A.SCPI.READ.QueryAsciiReal(out measure);
                                av1 = measure[0];
                                Thread.Sleep(500);

                                v53131A.SCPI.READ.QueryAsciiReal(out measure);
                                av2 = measure[0];
                                Thread.Sleep(500);

                                v53131A.SCPI.READ.QueryAsciiReal(out measure);
                                av3 = measure[0];
                                Thread.Sleep(500);

                                if (measure.Count() > 0)
                                {
                                    freq[i] = (av1 av2 av3) / 3000000;
                                }

                                else
                                {
                                    freq[i] = 0;
                                }

                            }
                            catch
                            {
                                freq[i] = 0;
                            }
                            string Vcc = Convert.ToString(vcc[i]);
                            string Fr = Convert.ToString(freq[i]);
                            sw.WriteLine(Vcc "  " Fr);
                            textFreq.AppendText(Vcc "  " Fr "\r\n");
                        }
                    }

                    //sw.Flush();
                    //sw.Close();
                    //E3631A.SCPI.OUTPut.STATe.Command(false);
                    //this.BackColor = Color.PaleTurquoise;
                    //button1.BackColor = Color.Bisque;
                }
                sw.Flush();
                sw.Close();
                E3631A.SCPI.OUTPut.STATe.Command(false);
                this.BackColor = Color.PaleTurquoise;
                button1.BackColor = Color.Bisque;

            }


        }



        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (treeView1.SelectedNode != null)
            {
                string str4 = treeView1.SelectedNode.Text;
                try
                {
                    textBox8.Text = Idn(str4);
                }
                catch
                {
                    MessageBox.Show("系统内无此仪器~", "ERROR");
                }
            }

            else
            {
                textBox8.Text = "";

            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
            if (treeView1.SelectedNode != null)
            {
                string str1 = treeView1.SelectedNode.Text;
                textBox1.Text = str1;
            }
            else
            {
                MessageBox.Show("选择信息不能为空,请选择对应的地址!");
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            textBox2.Clear();
            if (treeView1.SelectedNode != null)
            {
                string str1 = treeView1.SelectedNode.Text;
                textBox2.Text = str1;
            }
            else
            {
                MessageBox.Show("选择信息不能为空,请选择对应的地址!");
            }
        }

        private void button5_Click(object sender, EventArgs e)
        {
            textBox3.Clear();
            if (treeView1.SelectedNode != null)
            {
                string str3 = treeView1.SelectedNode.Text;
                textBox3.Text = str3;
            }
            else
            {
                MessageBox.Show("选择信息不能为空,请选择对应的地址!");
            }
        }




        private void radioButton3_CheckedChanged(object sender, EventArgs e) //显示单电源,双电源选择项
        {
            if (radioButton3.Checked == true)
            {
                radioButton4.Visible = true;
                radioButton5.Visible = true;
                if (radioButton5.Checked == true)
                {
                    label12.Visible = true;
                    textBox4.Visible = true;
                }
                else
                {
                    label12.Visible = false;
                    textBox4.Visible = false;
                }
            }
            else
            {
                radioButton4.Visible = false;
                radioButton5.Visible = false;
                label12.Visible = false;
                textBox4.Visible = false;
            }

        }

        private void radioButton5_CheckedChanged(object sender, EventArgs e) // 显示第二电源设置
        {
            if (radioButton5.Checked == true)
            {
                label12.Visible = true;
                textBox4.Visible = true;
            }
            else
            {
                label12.Visible = false;
                textBox4.Visible = false;
            }

        }


        private void button2_Click(object sender, EventArgs e)  //查询选中地址的设备信息
        {
            System.Environment.Exit(0);
        }

        public string Idn(string name)   // 查询设备信息的函数
        {

            string str1 = "*IDN?";
            string str2;


            ResourceManager rm1 = new ResourceManager();

            var mbsession = (MessageBasedSession)rm1.Open(name);


            mbsession.RawIO.Write(str1);
            str2 = mbsession.RawIO.ReadString();
            return str2;


        }

        private void button1_MouseDown(object sender, MouseEventArgs e)
        {
            button1.BackColor = Color.YellowGreen;
            this.BackColor = Color.Wheat;
            textFreq.Text = "";
        }

        private void GPIBaddress_Click(object sender, EventArgs e)  // 查询GPIB地址--------------------------------
        {
            //textBox1.Clear();
            //textBox2.Clear();
            //textBox3.Clear();
            treeView1.Nodes.Clear();
            Ivi.Visa.Interop.ResourceManager rm = new Ivi.Visa.Interop.ResourceManager();
            {
                try
                {
                    IEnumerable<string> names = rm.FindRsrc("?*");
                    foreach (string s in names)
                    {
                        treeView1.Nodes.Add(s);
                    }

                }
                catch (Exception)
                {
                    MessageBox.Show("系统内不存在此类系统~", "ERROR");
                }


            }
        }
    }
}

标签: 频率计 电源 C#

实例下载地址

C# 程控安捷伦电源和频率计

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警