各位先進你好:
我想請問一下,我有VISA的讀寫問題,就是VISA的VISA Write Function 及 VISA Read Function 後面通常會接 延遲的時間 。
我試著把延遲時間的icon從100ms改成20ms,會讀不到資料,或是作迴圈的時候延遲到下個迴圈出來,難道是延遲時間太短??
各位先進你好:
我想請問一下,我有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是沒有辦法讀取完畢的。
此部份跟你的硬體架構有關係就是,並不是所有的架構都可以很快的得到資料。
建議你可以試試延遲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之類的。
所以就是一定要延遲那麼長了??