NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

NIVISA截图遇到4096 bytes 限制怎么办?

    我用的是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里是字符串。这又是为什么?

0 项奖励
1 条消息(共 1 条)
2,093 次查看