使用 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())
结束子