由于有一个功能是更新打印机固件,需要每发送一个字节的内容检查一次打印机状态。如果打印机空闲,我就发送下一个字节数据。但是,我的程序打印机只能收到第一个字节数据,帮忙分析一下原因。测试程序大概如下: if(CheckPrtStatus())//如果打印机状态ok { if(prtchar++ >=0x7f) prtchar = 0x20; SendUsbChar( prtchar); } BOOL SendUsbChar(UINT8 prtchar)//发送usb数据的程序,打印机只能收到一个字节数据 { UINT8 pc[1],s; pc[0]=prtchar; ToggleSend( tog_send ); WriteUsbData( 1,pc ); s = IssueToken( ( endp_out_addr << 4 ) | DEF_USB_PID_OUT ); if (( s==USB_INT_SUCCESS)||(s == USB_INT_CONNECT)) return TRUE; return FALSE; } // 向CH37X写入数据块 void WriteUsbData(UINT8 len,UINT8 *buf) { Ch375WriteCmdPort(CMD_WR_USB_DATA7);/* 向CH375的端点缓冲区写入准备发送的数据 */ Ch375WriteDataPort(len); /* 后续数据长度, len不能大于64 */ while(len--) { Ch375WriteDataPort(*buf); putchar(*buf);//回显调试 buf++; } } 下面的数据是我在ch375 数据端口读回的: A1 01 00 00 00 00 01 00 //取状态命令 98//返回ok 20 //发送到打印机的数据 A1 01 00 00 00 00 01 00 //取状态命令 98//返回ok 21 //发送到打印机的数据 A1 01 00 00 00 00 01 00 //取状态命令 98//返回ok 22 //发送到打印机的数据 A1 01 00 00 00 00 01 00 //取状态命令 98//返回ok 23 //发送到打印机的数据 A1 01 00 00 00 00 01 00 //取状态命令 98//返回ok 24 //发送到打印机的数据
可以看出,数据的确发送出去了,但是每次发送打印机只能收到0x20,请问这是为什么?