-1

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

''未定义子或函数''。

也就是说,当调用Call SendIFC(BOARD_ID)or 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 Formatted I/O 1.0 添加到 Excel 引用中。

这是 YOKOGAWA 的示例代码(稍作编辑),可以在网上找到并适用于 Visual Basics,但我无法在 VBA 中运行。为了清楚起见,我删除了大部分代码。它只是将屏幕截图保存在内部存储器中。

私有子 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())

结束子

4

1 回答 1

0

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

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

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

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

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

尝试使用:

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

(引号的数量要包含在字符串中)

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

于 2018-08-22T16:28:09.237 回答