VISA Write & Read

各位先進你好:

我想請問一下,我有VISA的讀寫問題,就是VISA的VISA Write Function  及  VISA Read Function  後面通常會接 延遲的時間 。

我試著把延遲時間的icon從100ms改成20ms,會讀不到資料,或是作迴圈的時候延遲到下個迴圈出來,難道是延遲時間太短??

沒錯~需等待一段回應的時間

[QUOTE=NewHandAlex]沒錯~需等待一段回應的時間[/QUOTE]

謝謝這位先進回答,

但是我需要一個 (( VISA Write  到  硬體(應該小於2ms)  到  VISA Read  出來  )) 

需要 20 ms 左右   總不能延遲100ms ,  請問這種情況要怎麼解決??

可以利用迴圈,
每1ms檢查並讀取ComPort資料並將資料串接,
若資料最後有結束字碼如\r\n之類,則判斷碰到該字碼停止讀取並且回傳結果
若是固定長度,則在Read的元件上叫他讀取該字串長度,
或是判斷總字串是否到達固定長度後回傳結果。
這樣可以在傳輸完後的1ms之內確認回傳資訊,
而不用等到特定時間之後再比對。

BTW,低BAUDRATE長字串也會使總讀取時間變長,
有可能你的資訊本來就需要20~30ms才讀取的完,
當然你的20ms是沒有辦法讀取完畢的。
此部份跟你的硬體架構有關係就是,並不是所有的架構都可以很快的得到資料。

1個讚

建議你可以試試延遲100ms每次都讀取正常嗎?80ms,60ms,40ms,20ms都試.看看至少要幾ms以上成功率接近100%.就我個人經驗RS232延遲100ms都不一定每次都讀取正常(寫讀的字串數10個時),除非你用RS422或RS485更快的傳輸速度或你字串數很短.

[QUOTE=caeru]可以利用迴圈,
每1ms檢查並讀取ComPort資料並將資料串接,
若資料最後有結束字碼如\r\n之類,則判斷碰到該字碼停止讀取並且回傳結果
若是固定長度,則在Read的元件上叫他讀取該字串長度,
或是判斷總字串是否到達固定長度後回傳結果。
這樣可以在傳輸完後的1ms之內確認回傳資訊,
而不用等到特定時間之後再比對。

BTW,低BAUDRATE長字串也會使總讀取時間變長,
有可能你的資訊本來就需要20~30ms才讀取的完,
當然你的20ms是沒有辦法讀取完畢的。
此部份跟你的硬體架構有關係就是,並不是所有的架構都可以很快的得到資料。
[/QUOTE]

謝謝這位先進

但是我送出的資訊是不需要結束字碼如\r\n之類的。

所以就是一定要延遲那麼長了??