使用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资源也可以选择了。
优化效果验证
总结本文介绍的内容只是万里长征的第一步,即实现了仪器资源地址的下拉选择,距离实现完整的仪器控制还有很多编程工作需要开展,接下来会逐一更新发布,共同学习进步。