现在市场上有很多中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 编程,通过 UGSimple USB-GPIB 控制器来驱动仪器34401A,并从34401A读取数据的更多相关文章

  1. Visual Basic for Application

    Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'The note of Visual Basic for Applicati ...

  2. C# Dsoframer.ocx 如何在winform中嵌入Excel,内嵌Excel,word

    如果你还不太清楚Dspframer.ocx怎么放到窗体上就看上一篇文章,里面详细介绍了是如何放到窗体上的. 链接:http://www.cnblogs.com/pingming/p/4182045.h ...

  3. C# 如何在winform中嵌入Excel,内嵌Excel,word

    近使用.net做一个小软件遇到一个问题,就是想实现把excel表格在winform中打开,同时可以操作,不单单是打开.或者就提取数据.在网上找了好多资料,发现这方面的资料比较少,即使有,都是旧版本的使 ...

  4. Visual Basic 2012 借助DataGridView控件将SQL server2012 数据导入到Excel 2010

    摘  要: SQL Server 2012 数据和Excel 2010之间的连接和数据的传输,本篇文章主要针对的是SQL Server 2012 数据导入到Excel 2010文件中.Excel软件对 ...

  5. Visual Basic了解

    Visual Basic是一种由微软公司开发的结构化的.模块化的.面向对象的.包含协助开发环境的事件驱动为机制的可视化程序设计语言.这是一种可用于微软自家产品开发的语言.它源自于Basic编程语言.V ...

  6. 杂项-软件: VBA(Visual Basic for Applications)

    ylbtech-杂项-软件: VBA(Visual Basic for Applications) VBA (Visual Basic宏语言) Visual Basic for Application ...

  7. Beennan的内嵌汇编指导(译)Brennan's Guide to Inline Assembly

    注:写在前面,这是一篇翻译文章,本人的英文水平很有限,但内嵌汇编是学习操作系统不可少的知识,本人也常去查看这方面的内容,本文是在做mit的jos实验中的一篇关于内嵌汇编的介绍.关于常用的内嵌汇编(AT ...

  8. Visual Basic相关图书推荐

    Visual Basic从入门到精通(第2版) 作      者 国家863中部软件孵化器 编 出 版 社 人民邮电出版社 出版时间 2015-03-01 版      次 2 页      数 61 ...

  9. MongoDB .Net Driver(C#驱动) - 内嵌数组/嵌入文档的操作(增加、删除、修改、查询(Linq 分页))

    目录 一.前言 1. 运行环境 二.前期准备工作 1. 创建 MongoDBContext MongoDb操作上下文类 2.创建测试类 3.创建测试代码 三.内嵌数组增加元素操作 1.Update.S ...

随机推荐

  1. Angular $scope和$rootScope事件机制之$emit、$broadcast和$on

    Angular按照发布/订阅模式设计了其事件系统,使用时需要“发布”事件,并在适当的位置“订阅”或“退订”事件,就像邮箱里面大量的订阅邮件一样,当我们不需要时就可以将其退订了.具体到开发中,对应着$s ...

  2. ILGenerator.Emit动态 MSIL编程(三)之动态代理

    using System; using System.Linq; using System.Reflection; using System.Reflection.Emit; public seale ...

  3. html5之history对象 控制浏览器前进或后退事件

    一.摘要: 总结用history对象操作浏览器的历史记录的方法,在项目中使用的是mui框架,总结中包括我在实际项目中遇到的问题. 二.总结: 实现效果: 实现代码: 上面的编辑页面加载的时候就要先调用 ...

  4. Python入门4

    函数 函数其实在日常的编码过程中,你都在使用,比如print().input().len()等函数,只不过这些都是python给你写好的内置函数,供你是用,内置的函数数量有限,想让python为我们做 ...

  5. Windows下一些奇怪安装问题的解决

    你可能遇到过无法安装.Net Framework的问题,也许你也知道可以用微软的.Net Framework Cleanup Tool来解决,网上也流传着其他解决办法,然而有时候以上方法都不管用,此时 ...

  6. My Construct

    1.构造函数定义 类中的构造函数用来初始化一个类.构造函数为公有类型,无返回值,用来从类实例中访问类时初始化此类的私有变量. 2.代码 public class UseConstruct { publ ...

  7. SpringMVC中利用@InitBinder来对页面数据进行解析绑定

    同步发布:http://www.yuanrengu.com/index.php/springmvc-user-initbinder.html 在使用SpingMVC框架的项目中,经常会遇到页面某些数据 ...

  8. CentOS7 配置阿里云yum源

    1)下载repo文件 wget http://mirrors.aliyun.com/repo/Centos-7.repo 2)备份并替换系统的repo文件 cp Centos-7.repo /etc/ ...

  9. 《所用到的AJAX技术基础》

    来自百度网页,w3cshool网页:AJAX = Asychronous JavaScript and XML,翻译成中文为:异步的JavaScript XML. 异步的意思就是不重新加载整个页面,后 ...

  10. 【解决】putty使用从AWS下载的private key登录失败

    在AWS启动一个实例时如果创建并下载了一个KeyPair的私钥(*.pem),则可以此私钥作为Credentials通过putty远程登录到这个实例系统.但在实际操作中,用putty登录时会提示如下错 ...