由于我們是對打印機進行檢測,內(nèi)部已經(jīng)商定了通信的方式,比如說我向打印機發(fā)送“0x11”數(shù)據(jù),打印機接到以后,執(zhí)行某項檢查動作,檢查完畢以后,它會向我反饋檢查的結(jié)果,那么我怎么才能讀取到它反饋的數(shù)據(jù)呢,因為我看到你們的代碼里只有發(fā)送的,謝謝了
你首先需要知道是通過哪個端點往回取數(shù)據(jù)的,然后才能根據(jù)端點來取數(shù)據(jù),你可以去參考下面的代碼: void token_in()/*上傳狀態(tài)數(shù)據(jù)*/ { unsigned char i,s,tog_send =0; unsigned int T_1us=0; toggle_recv(tog_recv); CH375_WR_CMD_PORT( CMD_ISSUE_TOKEN ); CH375_WR_DAT_PORT( ( endp_in_addr << 4 ) | DEF_USB_PID_IN ); /* 高4位目的端點號, 低4位令牌PID */ while( CH375_INT_WIRE ){ T_1us++; if(T_1us==400){ /*1ms超時處理,1ms后放棄當(dāng)前NAK的重試*/ CH375_WR_CMD_PORT(CMD_ABORT_NAK); } } CH375_WR_CMD_PORT( CMD_GET_STATUS ); /*獲得當(dāng)前端口狀態(tài)*/ s=CH375_RD_DAT_PORT(); if (s==USB_INT_SUCCESS){ /*成功獲得狀態(tài)上傳數(shù)據(jù)*/ CH375_WR_CMD_PORT( CMD_RD_USB_DATA ); load_l=CH375_RD_DAT_PORT(); for ( i=0; i!=load_l; i++ ) load_up[i]=CH375_RD_DAT_PORT(); if(busy==1 ) LoadUpData_U3(); else if(busy==2 ) LoadUpData_U5(); tog_recv = ~ tog_recv; } else if ( s==USB_INT_RET_NAK ) { /* USB打印機無上傳數(shù)據(jù),等待1MS后放棄重試*/
} else { /* 操作失敗,正常情況下不會失敗 */ clr_stall( endp_in_addr ); /* 清除打印機的數(shù)據(jù)接收端點,或者 soft_reset_print() */ /* soft_reset_print(); 打印機出現(xiàn)意外錯誤,軟復(fù)位 */ tog_recv = 0; /* 操作失敗 */ } }
請問HCN你這段代碼是哪里的?可否告知全部?因為里面有些變量不清楚