我用的是Rohde & Schwarz FSEA30频谱和Keysight 82357B USBGPIB连接器。这仪器太老了,只能使用GPIB连接。没USB也没网口。
现在想截图。目前可以截图的方式是,1,截图放到软盘里,软驱估计坏了,2,截图放到内存中,然后用GPIB传输。
status = viVPrintf(vi, ":SYST:COMM:GPIB:RTER EOI" + vbCrLf, 0) '此命令更改分隔符,以便数据格式正确
status = viVPrintf(vi, ":HCOP:DEV:LANG WMF" + vbCrLf, 0) '设置WMF格式
status = viSetAttribute(vi, VI_ATTR_TMO_VALUE, 20000) '设置超时,数据大时传输时间较长
status = viVPrintf(vi, ":HCOP:DEST1 'MMEM'" + vbCrLf, 0) '保存位置
status = viVPrintf(vi, ":MMEM:NAME 'C:\USER\DATA\FILE.WMF'" + vbCrLf, 0)
status = viVPrintf(vi, ":HCOP" + vbCrLf, 0) '开始截图
status = viVPrintf(vi, ":MMEM:MSIS 'C’" + vbCrLf, 0) '
status = viVPrintf(vi, ":MMEM:CDIR '\USER\DATA\'" + vbCrLf, 0) '
status = viVPrintf(vi, ":MMEM:DATA? 'FILE.WMF'" + vbCrLf, 0) '
status = viSetBuf(vi, VI_READ_BUF, 50000) '设置缓冲区为50000
status = viSetBuf(vi, VI_WRITE_BUF, 50000) '设置缓冲区为50000
status = viReadToFile(vi, "D:\YouName.WMF", 50000, retCount)
最终结果为“#572676淄茪.....” 文件只有4096bytes大小。设置缓冲区大小失败了。
Do
status = viReadToFile(vi, "D:\YouName.WMF", 4096, retCount)
Loop Until (retCount < 4096)
又尝试使用循环读取。但是结果没有变化。
而使用status = viRead(vi, strRes,4096, retCount) ,结果只有18-31bytes.
这是为什么?有人知道吗?
另外,很奇怪的事是VC的viread里是buf()的数组,而VB的viread里是字符串。这又是为什么?