如何通过NI-488.2从VBA(Excel)的GPIB端口查询文件(csv,bmp)

时间:2018-08-22 14:37:58

标签: excel vba gpib

使用VBA,我尝试直接使用NI-488.2调用,而不是使用VISA COM。但是,当我尝试在VBA中使用NI-488.2命令时,出现以下错误消息:

  

``未定义子或功能''。

也就是说,当调用Call SendIFC(BOARD_ID)Call EnableRemote(BOARD_ID, intAddrList())Call SendGPIB(osa, ":mmem:stor:grap color,bmp,""test"",int")= RecieveBinaryGPIB(osa, byteData())等时...

我的第一个猜测是我只是缺少正确的库。 (或者这里有更深层次的问题吗?)。现在,我将VISA COM 3.0类型库和VISA COM 488.2格式化的I / O 1.0添加到Excel引用中。

这是来自YOKOGAWA(略经编辑)的示例代码,可以在网上找到该示例代码并将其应用于Visual Basics,但无法在VBA中运行。为了清晰起见,我删除了大多数代码。它只是将屏幕截图保存在内部存储器中。

私人Sub SaveImage()

Const BOARD_ID = 0 'GP-IB Interface card Address
Const osa = 1 'OSA GP-IB Address

Dim intAddrList(31) As Integer

'----- GP-IB Interface setting
' send IFC
 Call SendIFC(BOARD_ID)

' assert th REN GPIB line
intAddrList(0) = NOADDR
Call EnableRemote(BOARD_ID, intAddrList())

' GPIB time out setting
Call ibtmo(BOARD_ID, T30s) 'Time out = 30sec

'----- send command to OSA
Call SendGPIB(osa, "CFORM1") ' Command mode set(AQ637X mode)
Call SendGPIB(osa, ":mmem:stor:grap color,bmp,""test"",int")

'----- Disconnect
Call EnableLocal(BOARD_ID, intAddrList())

结束子

2 个答案:

答案 0 :(得分:0)

*我没有足够的声誉来添加评论。

您还没有提到您到目前为止尝试过的内容。您是否包含了对项目的引用?

答案 1 :(得分:0)

现在我们有了代码...您现在已经编辑掉了有用的部分...我要回溯一下,说即使您直接接到上班电话,您仍然会遇到问题提取文件。

如果您使用“ SYST:ERR:ALL?”查询OSA,我会猜测您会收到“未定义的标头”错误。这很可能是因为数据查询命令无效。

我注意到您正在使用包含命令的数据类型:

":mmem:data? ""test.bmp"",int"

“ test.bmp”,int,0是查询目录时可能看到的内容,但是,提取文件时不需要。

尝试使用:

":mmem:data? ""test.bmp"""

(引号应包含在字符串中)

如果不是,那么GPIB错误是什么?