VISA READ要如何指定byte count?

使用VISA Read儀器傳回來的資料,要如何指定才會全部顯示?

如果我指定過多會全部顯示沒錯,不過會出現TIME OUT的error。

如果指定過少會顯示不完全,但不會出現error。

謝謝你們的回答~![](upload://aeTYlqEc1qXvs9Jv3ju6pnq9wZt.gif)

請告知是用哪種介面? GPIB或是RS-232?

RS-232C的介面...

謝謝~

請問是儀器的Time out值嗎?

如果是儀器的Time out值,或許將這個Time Out值設定大一些就可以了.

其實我有試過....

只有在指定的byte count剛剛好的情形才不會出錯~

如果指定的byte count過少的時候,也不會出現錯誤,但是資料會無法全部顯示!

也就是指定byte count數過少,資料顯示不全。例如應該顯示55555,byte count指定3就只會顯示555。如果指定10就會全部顯示,但是會出現-1073807339的錯誤訊息,這個訊息也就是T ime Out。

我也試過將Time Out指定多一點,但是似乎沒有辦法解決!

多謝你們的回答!![](upload://aeTYlqEc1qXvs9Jv3ju6pnq9wZt.gif)

我在NI.com這邊有看到一個資料,原文請連到:VISA Troubleshooting Wizard-Timeout Errors

以下是轉載自ni.com的內容,請您試試他的方法,

========================

Description and Solution

  • A timeout error is generally indicative of a different problem. Often the instrument will timeout because the syntax of the command written was wrong. You should single-step through your code to find where the timeout error occurs. Once you know where it occurs, check the command strings sent to it in the last couple reads and writes, ensuring that the command strings are the proper syntax for your instrument.
  • In most cases, increasing the timeout value will solve these timeout errors. After the VISA Open.vi, you should put an attribute node increasing the timeout value (by default it is only 2 seconds). If you are using an instrument driver, the code is usually written for you in the Initialize.vi. You just need to change the value passed in. The image below demonstrates the code. (Note: If you are not familiar with VISA Attribute Nodes, they are documented in the Instrument I/O VI Reference Manual.)

![](upload://yBWmy6rMWnaWskIC6vmMi1IRIFO.gif)

Benjamin38050.9416898148

我有把TimeOut值設的很大....也是一樣會出現~

我想我的問題是在於要如何指定byte count,畢竟READ Bufferbyte count需要指定byte count。而這一個指定是未知的~

多謝版主的幫忙囉~

在 VISA write 之後連接一VISA Byte at Serial Port就可以讀取每次不同的byte count.

![](upload://8C2n6WZm4Ji367MT76DI5ACE94P.jpeg)

 

用這個方法即可得知到底回傳多少Bytes

[QUOTE=mong]

![](upload://8C2n6WZm4Ji367MT76DI5ACE94P.jpeg)

 

用這個方法即可得知到底回傳多少Bytes

[/QUOTE]

VISA write後面記得加一個delay function,否則儀器來不及回應

[QUOTE=小小羊兒][QUOTE=mong]

![](upload://8C2n6WZm4Ji367MT76DI5ACE94P.jpeg)

 

用這個方法即可得知到底回傳多少Bytes

[/QUOTE]

VISA write後面記得加一個delay function,否則儀器來不及回應

[/QUOTE]

謝謝提醒~~~

我的程式上是有加的~~~

為了貼出來竟然忘了~~~

謝謝你的幫忙~~~

若有些儀器需要 Terminate Code, 要記得在Configure Serial Port.vi 設定所指定的字元…

INSTR的 Bytes at port要在那裡找到?

GPIB也可以用嗎?

多謝各位的回答~我已經解決了~

謝謝~

TO WCK

我也遇到和你一樣的問題,能分享成功的結果?

感謝,上班再試上面的方法是否有效!!

下面的程式不知是否有問題2004-03-16_193816_VISA-RS232.vi

 

2004-03-16_194631_VISA_and_Serial_Communication.doc

和大家分享VISA串列通訊,剛接觸不熟請多指教!!