首页 > 编程语言 >C#实现控制射频仪表E5071C,采集数据,处理数据,保存数据

C#实现控制射频仪表E5071C,采集数据,处理数据,保存数据

时间:2023-06-27 14:22:10浏览次数:36  
标签:string E5071C C# double Write 仪表 using mbSession 数据

using System;
using System.IO;
using System.Text;
using Ivi.Visa.Interop;
using NationalInstruments.Visa;

namespace E5071C_Demo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 连接仪表
            ResourceManager rm = new ResourceManager();
            string e5071c = "GPIB0::16::INSTR";
            MessageBasedSession mbSession = (MessageBasedSession)rm.Open(e5071c);

            // 初始化仪表
            mbSession.Write(":SYST:FPRESET"); // 恢复出厂设置
            mbSession.Write(":CALC:PAR:DEL:ALL"); // 删除所有测量参数

            // 配置仪表参数
            mbSession.Write(":SENS:FREQ:STAR 1000000"); // 设置起始频率
            mbSession.Write(":SENS:FREQ:STOP 3000000000"); // 设置终止频率
            mbSession.Write(":SENS:SWE:POIN 100"); // 设置采样点数
            mbSession.Write(":SENS:BWID 10"); // 设置测量带宽

            // 设置测量类型
            mbSession.Write(":CALC:PAR:DEF 'CH1_S21', 'S21'"); // 定义测量类型及参数
            mbSession.Write(":CALC:FORM MLOG"); // 设置格式

            // 开始测量
            mbSession.Write(":INIT:CONT ON"); // 连续测量

            // 读取数据
            string data = mbSession.Query(":CALC:DATA? FDATA");

            // 处理数据
            StringBuilder sb = new StringBuilder();
            using (StringReader sr = new StringReader(data))
            {
                string line;
                while ((line = sr.ReadLine()) != null)
                {
                    string[] values = line.Split(',');
                    double freq = double.Parse(values[0]);
                    double amp = double.Parse(values[1]);
                    double phase = double.Parse(values[2]);

                    // 处理数据的逻辑
                    // ...

                    sb.AppendLine($"{freq},{amp},{phase}");
                }
            }

            // 保存数据到文件
            string filepath = @"C:\data.txt";
            File.WriteAllText(filepath, sb.ToString());

            // 断开连接
            mbSession.Dispose();
            rm.Dispose();
        }
    }
}

上述代码中,使用了IVI-COM驱动和NI-VISA驱动,
其中IVI-COM驱动提供可重用的控制和测量仪表的API接口,NI-VISA驱动则提供通信协议和设置仪表参数的相关方法。
在代码中,首先使用ResourceManager对象连接了GPIB接口的E5071C仪表,
然后初始化了仪表并设置了相关参数。
之后执行了测量和读取数据的操作,将数据处理后保存到了文件中。
最后断开连接并销毁资源。

标签:string,E5071C,C#,double,Write,仪表,using,mbSession,数据
From: https://www.cnblogs.com/jsjjob/p/17508736.html

相关文章

  • c#远程地址登入共享文件权限失败
    publicclassConnectFile{///<summary>///连接远程共享文件夹添加登录凭证///先关闭所有链接:netuse*/del/y不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接///</summary>///<paramname="Ip">服务器Ip<......
  • SAP UI5 控件 ObjectStatus 的使用方法介绍试读版
    ObjectStatus控件是SAPUI5控件集合中一个极具视觉表现力的控件,用于在应用程序中显示实体(Object)的状态(Status)或属性信息。它可用于向用户提供重要的上下文状态信息,如成功、错误、警告、进行中(InProcess)等等。ObjectStatus控件通常与其他SAPUI5控件(如列表项、表格......
  • .NET Core 获取小程序手机号并解析
    方法一:1.小程序提供微信用户授权后的code,用户手机号的加密数据和iv。2.使用code换取 sessionkey。3. 解密用户手机号的加密数据。参考代码///<summary>///获取openid,sessionkey///</summary>///<paramname="appID"></param......
  • TypeError: token.type.endsWith is not a function
    起因公司产品项目拉下来,安装完依赖就报这个错误token.type.endsWithisnotafunction 解决方案发现是eslint的版本将 babel-eslint版本为10.1.0,把版本降为8.2.2,即重新安装指定版本的依赖。重新安装,并重启后,解决问题 [email protected] ......
  • FCFF、FCFE的区别与联系
        为了帮助同学们强化对知识点的理解,我们每周将推出一篇知识点精讲系列的文章,部分的脱离课本,技术保证内容的精细化。公司估值中,标准公式是公司自由现金流量(FCFF)=(1-税率t)×息税前利润(EBIT)+折旧-资本性支出(CAPX)-净营运资金(NWC)的变化,明显少计算了利息*......
  • 《深入解析 css》笔记
    第一章:层叠、优先级和继承1.优先级:!important>行内样式>id选择器>类选择器>标签选择器2.两条经验法则:选择器少用id;少用!important。3.使用inherit属性使元素属性继承自父元素,方便修改。4.使用简写属性的时候会默认给细化的属性赋默认值,如标签h1的样式font:32pxarial;默......
  • mockito5.4.0单元测试(14) --捕获mock对象调用某方法时的参数ArgumentCaptor,断言其参
    mockito官方文档地址:https://www.javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#resetting_mocks@Testpublicvoidtest_resetting(){//youcanenablepartialmockcapabilitiesselectivelyonmocks:LinkedListmock=mock(Linked......
  • Activiti、Flowable和Camunda选型和对比
    选型的几个标准:社区活跃,至少在Github上能排上名的至少支持BPMN2协议的免费、开源根据上面的标准,目前几大工作流引擎就只有Activiti、Flowable和Camunda了,有些人会问为什么没有AirFlow相关的呢?很明显,AirFlow属于编排类流程引擎,跟工作流没太大关系,他们的共同点就是流程控......
  • 在Androidstudio 中 通过jni java 和c++相互调用实现方法
    在Androidstudio中通过jnijava和c++相互调用实现方法1.创建javanative方法类publicclassNativeAPI{privatestaticfinalStringTAG=APP_TAG+"TestJni";static{System.loadLibrary("testnative");}//从c++so中获取字符串publicna......
  • AtCoder Beginner Contest 238 Ex Removing People
    洛谷传送门AtCoder传送门考虑期望转计数,方案数显然是\(n!\)(第\(i\)次操作有\(n-i+1\)个人可供选择),所以问题转化为求所有方案的代价之和。考虑倒着做,变成先放一个人,然后依次放\(n-1\)个人,每次放的这个人可以让左边的人的\(S\)变成R,代价是他与他左边的人的距离,......