c#发展

首页 » 常识 » 诊断 » C仪器控制系列数字万用表
TUhjnbcbe - 2023/9/15 20:53:00
献礼国庆中科白癜风帮扶 http://m.360xh.com/202001/07/55299.html

由于工作需求,需要使用C#进行一些常用的仪器控制,包括数字万用表、直流电源、信号发生器、示波器、电子负载等。以前都是用LabVIEW进行仪器控制,对于C#编程语言来说也算是新手,就边学习摸索边记录吧,也算是经验总结了!

对于用C#进行仪器控制,网络上的资源实在是太少了(相较于用LabVIEW控制仪器的资料而言),这也算是为后人积累点学习资源做点微不足道的贡献了!

01控制对象——Keysight数字万用表

我们要控制的对象是Keysight最常见的6位半数字万用表,型号为KeysightA,如下图所示。

数字万用表

02控制要求——读取电压值

本次以C#编程控制KeysightA数字万用表读取电压值为例,讲解仪器控制方法。

直接分享C#代码如下:

usingSystem;

usingIvi.Visa.Interop;

usingIvi.Driver.Interop;

usingSystem.Resources;

usingSystem.Runtime.Remoting.Messaging;

namespaceKeysight_DMM

{

classProgram

{

staticvoidMain(string[]args)

{

//创建ResourceManager和MessageBasedSession对象

Ivi.Visa.Interop.ResourceManagerresourceManager=newIvi.Visa.Interop.ResourceManager();

FormattedIOmessageBasedSession=newFormattedIO();

//打开万用表连接

messageBasedSession.IO=(Ivi.Visa.Interop.IMessage)resourceManager.Open("USB0::0x2A8D::0x::MY::INSTR",AccessMode.NO_LOCK,,"");

//设置采集模式和测量范围

messageBasedSession.WriteString(":CONF:VOLT:DCAUTO,DEF",true);

//发送采集命令

messageBasedSession.WriteString(":READ?",true);

//读取返回值

stringresponse=messageBasedSession.ReadString();

//关闭连接

messageBasedSession.IO.Close();

//输出结果

Console.WriteLine("电压测量结果为:"+response.Trim());

Console.ReadLine();

}

}

}

03控制要求——C#代码说明

这个程序使用IVI驱动程序进行通信,在程序中:

1)使用ResourceManager类创建了一个资源管理器;

2)然后创建了一个FormattedIO对象用于处理消息通信;

3)接着使用资源管理器打开USB连接,并将其分配给FormattedIO对象;

4)接着设置万用表的测量模式和测量范围;

5)然后发送读取命令并等待万用表返回结果;

6)最后关闭连接并将结果打印在控制台上。

需要注意的是,这个程序假定万用表通过USB连接到计算机。如果连接方式不同,需要修改资源管理器的Open方法中的参数以及连接地址。同时,如果需要测量其他类型的电信号,可以在程序中修改发送的命令来实现。

04遇到的问题及解决办法

1)IVI驱动安装

本程序使用IVI驱动进行仪器控制,因此首先需要下载安装IVI驱动程序。这里下载安装Keysight

1
查看完整版本: C仪器控制系列数字万用表