本來對USB接口緩沖區(qū)的知識等于零,因為在前想圖點省事曾請教關(guān)于串口編程的知識而不得(并無怨言,與芯片結(jié)構(gòu)無直接關(guān)聯(lián)的內(nèi)容理當自己去學習),就不得不去廣泛查找相關(guān)的知識,當然因此誘發(fā)了這個討論就是意外的收獲了。
這里要探討的不是串口通訊,借用控件“MSComm”數(shù)據(jù)緩沖區(qū)讀寫(同時清空)的功能,自己編寫的程序就可以源源不斷地讀取串口通訊后臺存貯的數(shù)據(jù),而不必隨時照料芯片什么時間填充這些存貯空間。
具體地說就是同樣在一個CH341芯片結(jié)構(gòu)中,既然串口傳輸已經(jīng)成功地嚙合到操作系統(tǒng)控件的數(shù)據(jù)緩沖區(qū)中,用戶只要在沒有發(fā)生溢出之前及時取走現(xiàn)存的數(shù)據(jù),就不會造成數(shù)據(jù)損失,那么并口照樣也可以輕易地做到,所差不過是把API結(jié)構(gòu)中由應用軟件直接調(diào)用讀寫的操作,改變?yōu)椴僮飨到y(tǒng)直接進行罷了。
例如我在那篇《[原創(chuàng)]巧用CH341評估板測試并口接收速率 》帖子中闡明的那樣,實測選擇了最大限度選擇了4096字節(jié)的緩沖區(qū),也只能做到每毫秒22到23組32字節(jié)(總數(shù)大約700左右)的接收速率。雖然對比芯片公開的數(shù)據(jù)還是明顯不足,但至少是現(xiàn)實能夠達到的標準;而因為實際運用中再大的緩沖區(qū)也難以滿足需要,再次調(diào)用同樣的API指令就存在銜接的問題,甚至因為不能確定硬件實際傳輸效益,為避免幀間數(shù)據(jù)的損失不得不再降低標準保守使用。
這樣的改變對芯片用戶而言就有莫大的好處。后臺操作的結(jié)果是芯片及配套的API只要面對操作系統(tǒng),或者簡單地說就是最大限度地不斷填充系統(tǒng)內(nèi)存劃撥出來的緩沖區(qū),而用戶則只要隨時從緩沖區(qū)取走數(shù)據(jù)而不管你的填充速度。于是只要1K而不是現(xiàn)在上限的4K就足夠無限量連續(xù)采集而不怕傳輸遺失了。