NI產品與技術 討論區

取消
顯示結果 
搜尋替代 
您的意思是: 

VISA READ的byte count不夠大

我跟網路分析儀要DATA 下了一道指令機器所回傳的字串超出byte count的最大值很多...

我思考出兩個解決辦法

1.使visa read不考慮byte count

不知是否可行

2.將DATA分開擷取在組合成一條字串

不知該如何組合visa read在一個buffer....

請高手回答一下 謝謝

0 積分
1 條訊息(共 8 條)
7,853 檢視

我跟網路分析儀要DATA 下了一道指令機器所回傳的字串超出byte count的最大值很多...

我思考出兩個解決辦法

 

1.使visa read不考慮byte count

不知是否可行

不可行,visa read 的 byte count 是 u32 ( 2^32 ),建議使用 advanced>> timeout property >> 提高timeout 的值 (標準是二秒)

2 條訊息(共 8 條)
7,849 檢視

謝謝您的解答 但是可以講得再清楚一些嗎???

因為我是從event structure執行的

所以左上角的event timeout是否會影響到呢?

我是設100.... 字串長度很長....,一個READ BUFFER需容納五個標籤都是#56xxxx

或許可能真的是timeout時間真的不夠 導致VISA READ未讀取完就中斷了...

0 積分
3 條訊息(共 8 條)
7,847 檢視

小飞侠 你好,

 

event的timeout 是指 程序等待这个事件发生的MAX time和 时间内部执行时间无关。

 

或许对于大数据量的VISA Read 可以尝试用一个循环不断读取数据然后拼接的方法来处理。

 

Charles

4 條訊息(共 8 條)
7,840 檢視

CHARLES大您好,關於字串資料的並接該如何處理呢?能否提供範例

我下的指令是說ofv;ch1;ofd;ch2;ofd;ch3;ofd;ch4;ofd

就是先回傳頻率的資料 再回傳四個通道的資料..

是否可以分別取出字串中的資料在並接起來我也正在思考這個

只是不知道該如何進行....

0 積分
5 條訊息(共 8 條)
7,837 檢視

小飞侠 您好,

 

这么长一串指令能拆分成多条让VISA Write发送下去,然后分别用VISA Read读出会不会好一点啊?

 

大概就是这样,不知道行不行。

ofv; (断开) ch1;ofd; (切断) ch2;ofd;(分割)ch3;ofd;(最后一部分)ch4;ofd

 

Charles

6 條訊息(共 8 條)
7,834 檢視

CHARLES您好,我也想過這麼作

只是不知如何把所有字串資料併接成一個完整的字串在一個read buffer

 

0 積分
7 條訊息(共 8 條)
7,831 檢視

小飞侠  您好,

 

大致操作可以是这样 先将之前长命令依据功能 分成若干块,这个需要查询仪器的Programming Guide.

 

然后将第一块命令通过VISA Write发送下去,此刻,立即使用VISA Read读取数据。

 

以此类推发送所有命令块。

 

每个VISA Read得到的结果若长度在可接受范围内 则直接用Build Array将各个数据块的Query结果拼接。

 

若单个命令块Query得到的数据都非常巨大。。。(一次read buff装不下)那也没关系。

 

在这个VISA Read外加一层While循环。循环需要配置一个Shift Register来组合读取到的资讯片段。

 

循环中用Build Array将当前读取到的资讯片段Append到结果字符串中。循环的结束条件是VISA Read的read count (output)< byte count (input)。

 

此时所有资讯已经读取完毕,Shift Register中存放的既是所需要的资讯结果。

 

Charles

0 積分
8 條訊息(共 8 條)
7,798 檢視