现在市场上有很多中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. C++语法

    http://stackoverflow.com/questions/4269034/what-is-the-meaning-of-prepended-double-colon

  2. DotNet 资源大全中文版【转】

    转自:https://github.com/jobbole/awesome-dotnet-cn 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesom ...

  3. CSS定位position

    position选项来定义元素的定位属性,选项有5个可选值:static.relative.absolute.fixed.inherit 属性值为relative.absolute.fixed时top ...

  4. haproxy +keepalived 原创

    Haproxy+keepalived 原理: HAProxy介绍及其定位 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.根 ...

  5. [Maven]Maven详解

    转自:http://www.cnblogs.com/hongwz/p/5456578.html 一.前言     以前做过的项目中,没有真正的使用过Maven,只知道其名声很大,其作用是用来管理jar ...

  6. OAF_开发系列21_实现OAF事物控制TransactionUnitHelper(案例)

    20150716 Created By BaoXinjian

  7. nginx长连接设置

    http { keepalive_timeout 20; --长连接timeout keepalive_requests 8192; --每个连接最大请求数} events { worker_conn ...

  8. Stanford NLP学习笔记:7. 情感分析(Sentiment)

    1. 什么是情感分析(别名:观点提取,主题分析,情感挖掘...) 应用: 1)正面VS负面的影评(影片分类问题) 2)产品/品牌评价: Google产品搜索 3)twitter情感预测股票市场行情/消 ...

  9. java 无符号byte转换

    java中的byte类型是有符号的,值得范围是-128-127 做网络通讯时,接收过来的数据往往都是无符号的byte,值得范围是0-255 因此直接转换时,存储到java显示的值就会有问题 int o ...

  10. opencv从txt文本读取像素点并显示

    opencv从txt文本读取像素点并显示 文本储存格式为每行一个像素点,排列为RGB.每帧图像的帧头为65535.  如下图所示 废话不多说,代码如下: // #include <iostrea ...