发送数据给打印机问题?

void send_data(unsigned short len,uint8 *buf) { uint8 l,s; while(len) /* 连续输出数据块给USB打印机 */ { toggle_send(tog_send); /* 数据同步 */ l=len>endp_out_size?endp_out_size:len;/* 单次发送不能超过端点尺寸 */ wr_usb_data(1,buf); /* 将数据先复制到CH375芯片中 */ s=issue_token((endp_out_addr<<4)|DEF_USB_PID_OUT);/* 请求CH375输出数据 */ if(s==USB_INT_SUCCESS) /* CH375成功发出数据 */ { tog_send=~tog_send; /* 切换DATA0和DATA1进行数据同步 */ len-=1; /* 计数 */ buf+=1; /* 操作成功 */ } else if(s==USB_INT_RET_NAK) /* USB打印机正忙,如果未执行SET_RETRY命令则CH375自动重试,所以不会返回USB_INT_RET_NAK状态 */ {} else { clr_stall(endp_out_addr); /* 操作失败,正常情况下不会失败 */ tog_send=0; /* 操作失败 */ } } }

不管发送什么数据,执行这个函数时的s值一直都是0x28,不解?[Emot]1[/Emot]

你可以看下endp_out_addr这个值是多少?这个变量应该为端点号


我找到问题了,在改,谢谢!


我有个地方不太明白,数据同步是怎么选择的,DATA0和DATA1是怎么操作的?看不懂具体是怎么动作的!请介绍一下,谢谢1


与打印机通信采用批量传输,第一包数据通过DATA0发送,成功过切换为DATA1,依次切换 这个涉及到USB协议,想彻底明白,得去看协议


请问LZ怎么解决的?我一直返回20H


只有登录才能回复,可以选择微信账号登录