用EXCEL内嵌的Visual Basic for Application 编程,通过 USB-GPIB 控制器来驱动仪器34401A,并从34401A读取数据

Posted GPIB的魅力

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用EXCEL内嵌的Visual Basic for Application 编程,通过 USB-GPIB 控制器来驱动仪器34401A,并从34401A读取数据相关的知识,希望对你有一定的参考价值。

现在市场上有很多中USB-GPIB 控制器,或叫 USB 转GPIB链接线。 每种GPIB控制器都有它的 函数库(dll库)。各种GPIB 控制器的价钱插别很大。这里以一种价钱较便宜的USB-GPIB 控制器UGSimple USB-GPIB 控制器为例,看它的VBA编程时怎么用的。UGSimple USB-GPIB 控制器在淘宝上有卖。

用EXCEL内嵌的VBA编程的好处是 仪器测试读取的数据可以同时放入EXCEL表格里,并同时进行数据处理。并且VBA 相对其它编程语言来讲,容易好学。这里用一个Office 2003的EXCEL 来说明。

拿到UGSimple 以后,首先是安装 。现将UGSimple插入电脑的USB接口。然后启动UGSimple_setup.exe,按照它的安装过程安装好UGSimple 软件。

这里用一台 安捷伦的 6位半万用表 34401A为例。安装好UGSimple 软件后,将UGSimple 的GPIB 接头 (GPIB host)插入34401A的GPIB设备接口 (GPIB device),GPIB接头插好后,硬件就连接好了。然后,打开 34401A的电源, 设置 34401A的GPIB 地址为 22。

下来该做软件的工作了。我们先看一下UGSimple是否连接正确。点电脑上的Start->All Programs->LQ Electronics->UGSimple->UGSimple (不好意思,我的电脑是用的英文界面),打开UGSimple 的主控板。在Address栏输入22,在GPIB command 栏 写入 *IDN?,然后点击 主控板上的Command Write键,这时,*IDN?指令就送到34401A里去了。然后再点击 主控板上的Data Read键, 如果读回HEWLETT-PACKARD,34401A,0,11-5-2,则所有连接正确, 见下图。

 

打开Office2003 的 EXCEL,在 (2, “B”) 单元格写入 “直流电压”,在(2, “D”)单元格写入“交流电压”。之后,我们将会把读到的数据写入相应的直流或交流电压下面。点击菜单 Tools->Macro->Visual Basic. 如果右边是灰色,点击左边的Sheet1(Sheet1),右边的VBA编辑器就出现了。

首先在最上面写上 UGSimple 的GPIB 指令 发送函数 Gwrite 和 读取指令Gread的函数声明, 以及用于延时的函数Sleep的函数声明。

Private Declare Function Gwrite Lib "C:\\Program Files\\LQElectronics\\UGSimple\\UGSimpleAPI\\LQUGSimple_s.dll" Alias "#100" (ByVal address As Integer, ByVal SCPI As String) As Integer

Private Declare Function Gread Lib "C:\\Program Files\\LQElectronics\\UGSimple\\UGSimpleAPI\\LQUGSimple_s.dll" Alias "#101" (ByVal address As Integer) As String

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

然后在开始VBA 编程。其程序如下,

Private Sub sendread()

Dim command, data As String

Dim success, r As Integer

For r = 3 To 7                           \'设循环

success = Gwrite(22, "MEAS:VOLT:DC?")    \'发送直流电压读取指令

If success <> "0" Then                   \'判断发送指令是否成功,

MsgBox ("Something Wrong!")              \'显示出错

GoTo out                                 \'退出

End If                                      \'判断结束

Sleep (200)                                 \'延时0.2秒,等34401A准备数据

data = Gread(22)                            \'读取数据

Worksheets("Sheet1").Cells(r, "B") = CDbl(data) \'将数据写入相应栏里

success = Gwrite(22, "MEAS:VOLT:AC?")   \'发送交流电压读取指令

If success <> "0" Then                  \'判断发送指令是否成功

MsgBox ("Something Wrong!")             \'显示出错

GoTo out                                \'退出

End If                                  \'判断结束

Sleep (800)                             \'延时0.8秒,等34401A准备数据

data = Gread(22)                        \'读取数据

Worksheets("Sheet1").Cells(r, "D") = CDbl(data) \'将数据写入相应栏里

Next r                                  \'下一个循环

out:                                    \'退出

End Sub

           

           

安装好的程序里也有EXCEL的例子。

 

以上是关于用EXCEL内嵌的Visual Basic for Application 编程,通过 USB-GPIB 控制器来驱动仪器34401A,并从34401A读取数据的主要内容,如果未能解决你的问题,请参考以下文章

已删除的部件:部件/xl/vbaProject.bin。(Visual Basic for Applications(VBA))

请问,如何批量下载网页内嵌的图片?

Visual Basic 2017 操作Excel和word

如何更换openfire数据库,比如我现在用的是mysql,想换成内嵌的数据库应该怎么操作?

Visual Basic 2017 操作Excel和word持续更新……

使用 Visual Basic 和互操作搜索 Excel 文档列