關(guān)于PC端的中斷的問(wèn)題?

怎么我向端點(diǎn)1發(fā)送數(shù)據(jù)要發(fā)送8次(一共64個(gè)字節(jié)),PC才響應(yīng)一次中斷(發(fā)每一幀數(shù)據(jù)的時(shí)間間隔大于1分鐘)?

發(fā)送的代碼: USBWriteCMD( CMD_WR_USB_DATA5 ); cnt = 8; // 首先寫(xiě)入后續(xù)數(shù)據(jù)長(zhǎng)度 USBWriteData( cnt ); // 將緩沖區(qū)中的數(shù)據(jù)發(fā)出 if ( cnt ) { // 指向緩沖區(qū) buf = UsbBuffer; do { // 寫(xiě)入數(shù)據(jù)到CH375 USBWriteData( (*buf) ); buf ++; } while ( -- cnt ); }

PC響應(yīng)函數(shù):

// // 接收到USB中斷 // // 中斷服務(wù)程序是由CH375驅(qū)動(dòng)程序中斷后通過(guò)DLL在應(yīng)用層模擬調(diào)用的 VOID CALLBACK mInterruptEvent( // 中斷服務(wù)程序 PUCHAR iBuffer ) // 指向一個(gè)緩沖區(qū),提供當(dāng)前的中斷特征數(shù)據(jù) { // CH375產(chǎn)生中斷后,產(chǎn)生一個(gè)消息通知主程序 SendMessage( mCNCHWND, WM_COMM_RXUSB , 0 , 0 ); // }


熱門(mén)產(chǎn)品 : CH32X035: 32位USB+USB PD單片機(jī)

你上位機(jī)端點(diǎn)1每次接收的長(zhǎng)度是多少,假如是64字節(jié),肯定要等8次。


我用的是WCH的中斷.還沒(méi)有到讀取這一步呢!


補(bǔ)充: 下位也接收到了8次端點(diǎn)1上傳成功的中斷. 我用 debug372 程序試用了,也是要下位機(jī)發(fā)8幀(一共64個(gè)字節(jié)),PC才能收到一幀(8個(gè)字節(jié)).


那看來(lái)上位機(jī)還是每次接收64字節(jié),你每次發(fā)少于8個(gè)試試.肯定會(huì)每次都返回.


我用的PC端用的是 WCH 說(shuō)的那種中斷,在中斷前我沒(méi)有執(zhí)行讀端點(diǎn)1的操作也.在哪里指定端點(diǎn)1接發(fā)到指定的字節(jié)數(shù)中斷也?

嘿嘿.


是這樣,假如PC機(jī)每次接收的數(shù)據(jù)大于端點(diǎn)的緩沖區(qū),那麼上位機(jī)直到收滿(mǎn)數(shù)據(jù),或這遇到不滿(mǎn)緩沖區(qū)的數(shù)據(jù)才會(huì)返回.這樣假如上位機(jī)要求接收64字節(jié),因?yàn)槎它c(diǎn)1上傳緩沖區(qū)大小為8字節(jié),是需要8次才返回,假如你每次PC機(jī)接收少于或等于緩沖區(qū)大小,那肯定每次都會(huì)返回.


上位機(jī)的中斷服務(wù)程序每次讀取64字節(jié),如果您發(fā)8個(gè)8字節(jié),它會(huì)一起收到,應(yīng)用層1次中斷。 如果您發(fā)8個(gè)7字節(jié)(0到7個(gè)字節(jié)),那么它每次接收7字節(jié)后提前結(jié)束,共讀取8次,應(yīng)用層8次中斷。


嘿嘿. usbxf tech 都是WCH的吧. 可惜DATASHEET沒(méi)有說(shuō)你們說(shuō)的這一種情況.我本來(lái)是想發(fā)送一次8個(gè)字節(jié)發(fā)生一次中斷.看來(lái)只能發(fā)送7個(gè)字節(jié)來(lái)一次中斷了. 剛才改為一次發(fā)7個(gè)字節(jié),真的發(fā)生你們的模擬中斷,可惜程序就沒(méi)有響應(yīng)了,你們開(kāi)的那一個(gè)中斷線(xiàn)程還在運(yùn)行.重啟計(jì)算機(jī)了.


告訴我.我要當(dāng)端點(diǎn)1接收到8個(gè)字節(jié)就發(fā)生一次中斷怎么辦?


可能是編譯器的版本不一樣.用VC++6.0編譯的就可以退出中斷線(xiàn)程. 現(xiàn)在將就著一次發(fā)7個(gè)字節(jié),這樣來(lái)解決問(wèn)題算了.

多謝,多謝.


usbxf和tech當(dāng)然都是WCH的,看看發(fā)的其它帖子就知道了,tech是WCH的技術(shù)支持公用帳號(hào)。 我調(diào)了CH372驅(qū)動(dòng)程序和DLL的C源程序看了,是DLL源程序中始終讀取64字節(jié),所以如果將它改為8字節(jié), 就可以只收取8字節(jié)產(chǎn)生中斷了。編譯器版本應(yīng)該沒(méi)關(guān)系,因?yàn)閂C/VB/BC等都能用,何況是同一語(yǔ)言呢。 順便提醒在C語(yǔ)言中寫(xiě)USB中斷服務(wù)程序時(shí),一定要加CALLBACK關(guān)鍵字,因?yàn)樗腔卣{(diào)子程序。 中斷服務(wù)程序是高優(yōu)先級(jí)線(xiàn)程,不宜進(jìn)行USB傳輸,通常只是發(fā)個(gè)消息或者置個(gè)全局變量通知主程序處理。


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

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