由于我们是对打印机进行检测,内部已经商定了通信的方式,比如说我向打印机发送“0x11”数据,打印机接到以后,执行某项检查动作,检查完毕以后,它会向我反馈检查的结果,那么我怎么才能读取到它反馈的数据呢,因为我看到你们的代码里只有发送的,谢谢了
你首先需要知道是通过哪个端点往回取数据的,然后才能根据端点来取数据,你可以去参考下面的代码: void token_in()/*上传状态数据*/ { 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后放弃当前NAK的重试*/ CH375_WR_CMD_PORT(CMD_ABORT_NAK); } } CH375_WR_CMD_PORT( CMD_GET_STATUS ); /*获得当前端口状态*/ s=CH375_RD_DAT_PORT(); if (s==USB_INT_SUCCESS){ /*成功获得状态上传数据*/ 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打印机无上传数据,等待1MS后放弃重试*/
} else { /* 操作失败,正常情况下不会失败 */ clr_stall( endp_in_addr ); /* 清除打印机的数据接收端点,或者 soft_reset_print() */ /* soft_reset_print(); 打印机出现意外错误,软复位 */ tog_recv = 0; /* 操作失败 */ } }
请问HCN你这段代码是哪里的?可否告知全部?因为里面有些变量不清楚