我使用串口模式根据/* 单片机通过CH375控制USB打印机 */提供的程序,自己改写上位机(用PC com做通讯)程序。程序运行到读取设备描述符这段。 /* 初始化USB打印机,完成打印机枚举 */******************************************** 。 。 。 status=get_descr(1); /* 获取设备描述符 */ if ( status==USB_INT_SUCCESS ) { len=rd_usb_data( buffer ); /* 将获取的描述符数据从CH375中读出到单片机的RAM缓冲区中,返回描述符长度 */ 。 。 。 /* 数据读写, 单片机读写CH375芯片中的数据缓冲区 */******************************* unsigned char rd_usb_data( unsigned char *buf ) { /* 从CH37X读出数据块 */ unsigned char i, len; CH375_WR_CMD_PORT( CMD_RD_USB_DATA ); /* 从CH375的端点缓冲区读取接收到的数据 */ len=CH375_RD_DAT_PORT(); /* 后续数据长度 */ for ( i=0; i!=len; i++ ) *buf++=CH375_RD_DAT_PORT(); return( len ); } /* 从CH375的数据端口读出数据,周期不小于1.5uS,如果单片机较快则延时 */************ unsigned char CH375_RD_DAT_PORT() { delay1us(); /* 因为MCS51单片机较慢所以实际上无需延时 */ return( CH375_DAT_PORT ); } ********************************************************************************
并口是延时后就直接读取口数据。因为我用的是串口方式。执行(PC模拟执行到)“CH375_WR_CMD_PORT( CMD_RD_USB_DATA );”命令后串口缓冲区返回0x0是什么原因(设备已连接).。要怎么才能读取设备描述符呢(串口模式下)!