發(fā)送數(shù)據(jù)給打印機(jī)問題?

void send_data(unsigned short len,uint8 *buf) { uint8 l,s; while(len) /* 連續(xù)輸出數(shù)據(jù)塊給USB打印機(jī) */ { toggle_send(tog_send); /* 數(shù)據(jù)同步 */ l=len>endp_out_size?endp_out_size:len;/* 單次發(fā)送不能超過端點尺寸 */ wr_usb_data(1,buf); /* 將數(shù)據(jù)先復(fù)制到CH375芯片中 */ s=issue_token((endp_out_addr<<4)|DEF_USB_PID_OUT);/* 請求CH375輸出數(shù)據(jù) */ if(s==USB_INT_SUCCESS) /* CH375成功發(fā)出數(shù)據(jù) */ { tog_send=~tog_send; /* 切換DATA0和DATA1進(jìn)行數(shù)據(jù)同步 */ len-=1; /* 計數(shù) */ buf+=1; /* 操作成功 */ } else if(s==USB_INT_RET_NAK) /* USB打印機(jī)正忙,如果未執(zhí)行SET_RETRY命令則CH375自動重試,所以不會返回USB_INT_RET_NAK狀態(tài) */ {} else { clr_stall(endp_out_addr); /* 操作失敗,正常情況下不會失敗 */ tog_send=0; /* 操作失敗 */ } } }

不管發(fā)送什么數(shù)據(jù),執(zhí)行這個函數(shù)時的s值一直都是0x28,不解?[Emot]1[/Emot]

你可以看下endp_out_addr這個值是多少?這個變量應(yīng)該為端點號


我找到問題了,在改,謝謝!


我有個地方不太明白,數(shù)據(jù)同步是怎么選擇的,DATA0和DATA1是怎么操作的?看不懂具體是怎么動作的!請介紹一下,謝謝1


與打印機(jī)通信采用批量傳輸,第一包數(shù)據(jù)通過DATA0發(fā)送,成功過切換為DATA1,依次切換 這個涉及到USB協(xié)議,想徹底明白,得去看協(xié)議


請問LZ怎么解決的?我一直返回20H


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

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