Bootstrap

C# RIGOL DS1072U示波器通信

近期在做测试站,用到了示波器,第一次接触,很有意思的设备。

在使用过程中有些参数需要设置,开发测试站,就i尽量减少人工手动操作,所以必须实现一些基本操作,比如AUTO和设置时基,以下为设置后的显示结果

以下为执行AUTO操作的结果

需要设置下边的Time参数改变成需要的波形

以下为相关内容

 RIGOL DS1072U示波器支持USB和RS232通信,这里使用的是USB。

首先去设备官网下载相关手册和编程手册等PDF文件  ,https://www.rigol.com/icon-default.png?t=M7J4https://www.rigol.com/

 型号系列是DS1000U。

然后是一些官方提供的程序。可以查看下载数据。不赘述。

下载到官方的C#例程,提供了CVisaOpt类,实现了一些基本操作,还有例程的主体:

static void Main(string[] args)
        {
            string m_strResourceName = null; //仪器资源名

            CVisaOpt m_VisaOpt = new CVisaOpt(); 

            string[] InstrResourceArray = m_VisaOpt.FindResource("?*INSTR"); //查找资源

            if (InstrResourceArray[0] == "未能找到可用资源!")
            {
                
            }
            else
            {
                //示例,选取DSG800系列仪器作为选中仪器
                for (int i = 0; i < InstrResourceArray.Length;i++ )
                {
                    
                    if (InstrResourceArray[i].Contains("DSG8"))
                    {
                        m_strResourceName = InstrResourceArray[i];
                    }
                }
               
            }
            //如果没有找到指定仪器直接退出
            if (m_strResourceName == null)
            {
                return;
            }
            //打开指定资源
            m_VisaOpt.OpenResource(m_strResourceName);
            //发送命令
            m_VisaOpt.Write("*IDN?");
            //读取命令
            string strback = m_VisaOpt.Read();
            //设置操作命令 1GHz频率 -10dBm幅度 打开RF输出开关
            m_VisaOpt.Write(":SOURce:FREQuency 1GHz");
            m_VisaOpt.Write(":SOURce:LEVel -10dBm");
            m_VisaOpt.Write(":OUTPut:STATe ON");
            //显示读取内容
            Console.Write(strback);
            
            //是否设备资源
            m_VisaOpt.Release();

例程里还一并有了2个dll文件,记得加入自己的项目

NationalInstruments.Common.dll

NationalInstruments.VisaNS.dll

using NationalInstruments.VisaNS;

有了以上内容基本就可以做了,我使用的是VS2015,界面如下:

 

 很简单,从手册查询指令,来添加相关代码就可以了,

在要发送的指令位置可以输入要发的指令,也可以点解界面上的常用操作,

注意点是有些指令不能读取返回数据,做个字符串数组排除一下就可以了。

我这个只针对一个型号,而且不会在其它设备使用,所以直接没做设备型号判定,直接进入了具体操作。

;