C#2程控提高篇

C#2程控提高篇 #

操作系统:Windows7 IDE:VS2015 Visa版本:17.5 通信方式:LAN

在开发之前请确保已配置visa开发环境,参考 Visa开发环境搭建

关于C#2程控的配置参考 C#2程控基础篇的第一步和第二步。

运行本例程序后,将依次输出:S12幅度迹线的标准差、S12相位迹线的标准差、S21幅度迹线的标准差、S21相位迹线的标准差。下面具体介绍整个实现过程。

第一步:编写程序 #

在Program.cs中输入下列代码:

using System;
using NationalInstruments.VisaNS;

namespace demo1
{
    class Program
    {
        private ResourceManager resourceManager = null;
        private TcpipSocket socket = null;
        public void Idn(string resourceName)
        {
            resourceManager = ResourceManager.GetLocalManager();
            socket = (TcpipSocket)resourceManager.Open(resourceName);//打开仪器

            socket.Write("*RST\n");
            socket.Write(":SENS:BWID 1KHZ\n");
            socket.Write(":SENS:FREQ:CENT 10000000\n");

            socket.Write(":DISP:WIND:TRAC1:DEL\n");//删除轨迹
            socket.Write(":CALCulate1:PARameter:DEF 'CH1',S12\n");//在通道1上创建测量名为‘CH1’,测量参数为S12的测量
            socket.Write(":DISP:WIND:TRAC1:FEED  'CH1'\n");//创建轨迹1并将其与测量名称为‘CH1’的测量相关联,之后在窗口1中显示。
            socket.Write(":CALCulate1:PARameter:SEL 'CH1'\n");//设置名称为‘CH1’的测量为通道1的当前选择测量。
            socket.Write(":CALCulate1:FORMat  MLOGarithmic\n");//设置通道1当前选择轨迹的显示格式为对数幅度。
            socket.Write(":CALCulate1:FUNCtion:STAT:STAT  ON\n");//显示通道1轨迹统计。
            socket.Write(":CALCulate1:FUNCtion:TYPE  STDEV\n");//设置通道1轨迹统计返回数据类型为标准偏差。
            System.Threading.Thread.Sleep(1000);//延时,给分析仪足够的时间进行计算
            socket.Write(":CALCulate1:FUNCtion:DATA?\n");//返回通道1轨迹统计返回数据的数值
            string str1 = socket.ReadString(20);//读取20个字节   

            socket.Write(":CALCulate1:PARameter:DEF 'CH2',S12\n");//在通道1上创建测量名为‘CH2’,测量参数为S12的测量
            socket.Write(":DISP:WIND:TRAC2:FEED  'CH2'\n");//创建轨迹2并将其与测量名称为‘CH2’的测量相关联,之后在窗口1中显示。
            socket.Write(":CALCulate1:PARameter:SEL 'CH2'\n");//设置名称为‘CH2’的测量为通道1的当前选择测量。
            socket.Write(":CALCulate1:FORMat  PHASe\n");//设置通道1当前选择轨迹的显示格式为相位。
            socket.Write(":CALCulate1:FUNCtion:STAT:STAT  ON\n");//显示通道1轨迹统计。
            socket.Write(":CALCulate1:FUNCtion:TYPE  STDEV\n");//设置通道1轨迹统计返回数据类型为标准偏差。
            System.Threading.Thread.Sleep(1000);//延时,给分析仪足够的时间进行计算
            socket.Write(":CALCulate1:FUNCtion:DATA?\n");//返回通道1轨迹统计返回数据的数值
            string str2 = socket.ReadString(20);//读取20个字节   

            socket.Write(":CALCulate1:PARameter:DEF 'CH3',S21\n");//在通道1上创建测量名为‘CH3’,测量参数为S21的测量
            socket.Write(":DISP:WIND:TRAC3:FEED  'CH3'\n");//创建轨迹3并将其与测量名称为‘CH3’的测量相关联,之后在窗口1中显示。
            socket.Write(":CALCulate1:PARameter:SEL 'CH3'\n");//设置名称为‘CH3’的测量为通道1的当前选择测量。
            socket.Write(":CALCulate1:FORMat  MLOGarithmic\n");//设置通道1当前选择轨迹的显示格式为对数幅度。
            socket.Write(":CALCulate1:FUNCtion:STAT:STAT  ON\n");//显示通道1轨迹统计。
            socket.Write(":CALCulate1:FUNCtion:TYPE  STDEV\n");//设置通道1轨迹统计返回数据类型为标准偏差。
            System.Threading.Thread.Sleep(1000);//延时,给分析仪足够的时间进行计算
            socket.Write(":CALCulate1:FUNCtion:DATA?\n");//返回通道1轨迹统计返回数据的数值
            string str3 = socket.ReadString(20);//读取20个字节   

            socket.Write(":CALCulate1:PARameter:DEF 'CH4',S21\n");//在通道1上创建测量名为‘CH4’,测量参数为S21的测量
            socket.Write(":DISP:WIND:TRAC4:FEED  'CH4'\n");//创建轨迹4并将其与测量名称为‘CH4’的测量相关联,之后在窗口1中显示。
            socket.Write(":CALCulate1:PARameter:SEL 'CH4'\n");//设置名称为‘CH4’的测量为通道1的当前选择测量。
            socket.Write(":CALCulate1:FORMat  PHASe\n");//设置通道1当前选择轨迹的显示格式为对数幅度。
            socket.Write(":CALCulate1:FUNCtion:STAT:STAT  ON\n");//显示通道1轨迹统计。
            socket.Write(":CALCulate1:FUNCtion:TYPE  STDEV\n");//设置通道1轨迹统计返回数据类型为标准偏差。
            System.Threading.Thread.Sleep(1000);//延时,给分析仪足够的时间进行计算
            socket.Write(":CALCulate1:FUNCtion:DATA?\n");//返回通道1轨迹统计返回数据的数值
            string str4 = socket.ReadString(20);//读取20个字节   

            socket.Dispose();
            Console.WriteLine(str1+str2+str3+str4);//输出得到的标准差
            Console.ReadLine();
        }
        static void Main(string[] args)
        {
            Program oa = new Program();//实例化              
            oa.Idn("TCPIP0::172.141.64.51::5025::SOCKET");//TCPIP0::127.0.0.1::5025::SOCKET为网络分析仪的IP地址和端口号。这里使用的是我的配置,要根据自己的情况进行改动。 
        }
    }
}

第二步:运行程序 #

运行程序后输出:

图-2021

矢量网络分析仪界面:

图-2022