c#发展

注册

 

发新话题 回复该主题

用C进行仪器控制自动获取硬件资源地址 [复制链接]

1#

使用C#进行仪器控制的前提条件就是要获取到仪器硬件资源地址,有一些方法可以获取到这一信息,比如通过NIMAX软件界面,或者KeysightIOLibrariesSuit软件界面,但这些方法都需要通过第3方软件。对于LabVIEW软件来说,只需要在前面板上添加一个“VISA资源名称”输入控件,就可以通过控件下拉选择对应的仪器通讯地址(前提是安装了NI-VISA驱动软件包)。那么可以通过C#自动获取到连接到电脑的硬件资源地址信息吗?答案肯定是可以的,在LabVIEW上都不需要编程的操作,在C#中却需要一大段代码来实现,本文将介绍实现方法。

目标

使用C#编程语言自动获取硬件资源地址(串口号、USB地址等),并将获取到的地址信息传递给一个下拉列表控件,用户可以通过下拉选择需要进行通讯的仪器的地址。

设计实现过程

1)首先创建一个Windows窗体应用程序(.NetFramework),在窗体中添加1个Label控件和1个ComboBox控件:

添加控件

2)在Label控件的属性窗口中,设置控件名为“lblPortId”,外观Text属性改为“端口号”;

Label控件属性设置

3)在ComboBox控件的属性窗口中,设置控件名为“cboComPorts”

ComboBox属性设置

4)在ComboBox控件的事件属性窗口中,选择行为中的“DropDown”事件,双击此处,将自动添加事件响应代码;

DropDown事件

窗体应用程序代码

5)在privatevoidcboComPorts_DropDown(objectsender,EventArgse)函数中,添加下拉选择事件响应代码段。

下拉选择事件响应代码

代码说明:上述事件响应代码中,首先对下拉框中的下拉选项进行了清除,然后通过系统自带的串口函数获取系统中所有可用串口号,然后再将可用串口号逐一添加至下拉选项中。

完整代码展示

完整的实现代码如下所示:

完整代码程序运行效果验证

运行代码后,点击端口号下拉框,可以看到已经把系统中的串口资源信息加入到了下拉列表框中了,实现了自动获取串口资源信息的目标,但没有列出USB资源等。

程序运行效果验证

程序优化思路

对于除串口外的硬件资源地址获取,需要依赖于VISA驱动程序集,因此对代码进行如下优化。

1)添加对VISA程序集的引用

usingIvi.Visa.Interop;

添加引用

2)优化cboComPorts_DropDown事件响应函数,添加对USB仪器资源的查找,并将查找结果添加至下拉列表框中。

事件响应代码优化程序优化效果验证

运行程序后,点击端口号下拉框,可以看到USB资源也可以选择了。

优化效果验证

总结

本文介绍的内容只是万里长征的第一步,即实现了仪器资源地址的下拉选择,距离实现完整的仪器控制还有很多编程工作需要开展,接下来会逐一更新发布,共同学习进步。

分享 转发
TOP
发新话题 回复该主题