如何發(fā)送大于4096的數(shù)據(jù)給上位機(jī)

有幾個問題: 1. 4096的單位是什么,byte還是bit,根據(jù)我調(diào)試的感覺是4096bit,也就是512字節(jié)。 2. 4096長度的緩沖區(qū)應(yīng)該是在計算機(jī)段申請的吧 3.我測試過,如果我在中斷服務(wù)程序里,每次端點2上傳成功就再發(fā)送50字節(jié)的數(shù)據(jù)到端點2的上傳緩沖區(qū),用一個全局變量num=100來控制發(fā)送次數(shù),發(fā)送一次num--,我在上位機(jī)調(diào)試的時候發(fā)現(xiàn)我開辟的4096的緩沖區(qū)里有100個數(shù)據(jù)包,然后我readdata的時候只能讀出512字節(jié)的數(shù)據(jù),那么剩下的數(shù)據(jù)我如何讀呢,會不會有數(shù)據(jù)丟失?


熱門產(chǎn)品 : USB3.0 HUB控制器:CH634

使用的是內(nèi)部緩沖上傳模式,CH375QueryBufUpload()的時候查詢到里面緩沖區(qū)的數(shù)據(jù)包個數(shù)是100,但是我只是申請了4096的空間,怎么會有100個數(shù)據(jù)包呢


1,4096是字節(jié),也就是4k字節(jié). 2,4kb是x86體系中一頁的大小,WINXP操作系統(tǒng)采用的是分頁方式的內(nèi)存管理,內(nèi)核里面要分配內(nèi)存都是分配一頁. 3,上傳大于64的數(shù)據(jù)時,一般前面的數(shù)據(jù)都是滿包,最后一個數(shù)據(jù)包是零頭包(不滿64) .緩沖上傳時是驅(qū)動不停的緩沖數(shù)據(jù),其實是不停的向設(shè)備要數(shù)據(jù),這樣的話你應(yīng)用層開4096的緩沖區(qū)對驅(qū)動是沒有影響的,他還是在不停的向設(shè)備要數(shù)據(jù)包,用緩沖上傳時應(yīng)該層在讀數(shù)據(jù)的時候CH375ReadData的第三個參數(shù)要是包的整數(shù)倍,并且設(shè)備在上傳數(shù)據(jù)時也要是包的整數(shù)倍


用緩沖上傳時應(yīng)該層在讀數(shù)據(jù)的時候CH375ReadData的第三個參數(shù)要是包的整數(shù)倍,并且設(shè)備在上傳數(shù)據(jù)時也要是包的整數(shù)倍 你是說要是包長也就是64字節(jié)的整數(shù)倍嗎,設(shè)備在上傳數(shù)據(jù)時也要是包的整數(shù)倍,設(shè)備每次最大也就能傳64字節(jié)吧


也就是說我readdata的時候一次最大讀取的數(shù)據(jù)長度是我自己定義的對吧,如果我第三個參數(shù)定義的是一個指向512字節(jié)長度額指針,那么我每次readdata的時候最多就讀512字節(jié)是嗎


是的,你一開始做實驗先不要用緩沖上傳模式,把直接上傳方式的傳多個數(shù)據(jù)包的實驗調(diào)通了,再考慮用內(nèi)部緩沖上傳模式


還一個問題,CH375OpenDevice這個函數(shù),如果我正確打開了USB設(shè)備,他的返回值是多少,如果不正確又是多少呢


CH375OpenDevice返回句柄,出錯的話,返回INVALID_HANDLE_VALUE if ( CH375OpenDevice( 0 ) != INVALID_HANDLE_VALUE ) { ......... 返回正確的句柄,繼續(xù)做其他事情 }


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频