使用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())
结束子
答案 0 :(得分:0)
*我没有足够的声誉来添加评论。
您还没有提到您到目前为止尝试过的内容。您是否包含了对项目的引用?
答案 1 :(得分:0)
现在我们有了代码...您现在已经编辑掉了有用的部分...我要回溯一下,说即使您直接接到上班电话,您仍然会遇到问题提取文件。
如果您使用“ SYST:ERR:ALL?”查询OSA,我会猜测您会收到“未定义的标头”错误。这很可能是因为数据查询命令无效。
我注意到您正在使用包含命令的数据类型:
":mmem:data? ""test.bmp"",int"
“ test.bmp”,int,0是查询目录时可能看到的内容,但是,提取文件时不需要。
尝试使用:
":mmem:data? ""test.bmp"""
(引号应包含在字符串中)
如果不是,那么GPIB错误是什么?