如题 ⑷ 控制传输完成,在数据阶段中返回的数据作为标准USB 请求GET_STATUS 的返回数据,通常返回数据的长度是2 字节。 但是我想让它返回多个字节。怎样修改命令啊? 希望贵公司给予解答。因为就快验收了。所以很急
switch ( InterruptStatus ) { /* 分析中断状态处理 */ case USB_INT_EP2_OUT: { /* 批量端点下传成功 */ CH375_WR_CMD_PORT( CMD_RD_USB_DATA ); /* 从当前USB中断的端点缓冲区读取数据块,并释放缓冲区 */ length = CH375_RD_DAT_PORT( ); /* 首先读取后续数据长度 */ for ( i = 0; i < length; i ++ ) buffer[ i ] = CH375_RD_DAT_PORT( ); /* 接收数据包 */ /* 测试数据正确性,将接收到的命令包数据取反后返回给PC机 */ CH375_WR_CMD_PORT( CMD_WR_USB_DATA7 ); /* 向USB端点2的发送缓冲区写入数据块 */ CH375_WR_DAT_PORT( length ); /* 首先写入后续数据长度,回传刚接收到的数据长度 */ for ( i = 0; i < length; i ++ ) CH375_WR_DAT_PORT( ~ buffer[ i ] ); /* 数据取反后返回,由计算机应用程序测试数据是否正确 */ break; 这段程序按道理会发过来多少数据,就会有多少返回值的,但在我发送数据后,每次只返回第一个数的相反数。所以很迷惑,希望告诉我如何解决
CH375_WR_DAT_PORT( length ); /* 首先写入后续数据长度,回传刚接收到的数据长度 */ 这个是你需要返回的数据长度,这个长度不能超过64个字节。在0-64字节之间都可以送数据
GET_STATUS 是一个控制传输。是否可以请求数据,取决你USB设备本身是否支持这个命令。 GET_STATUS是一个标准的USB请求。这个数据长度不是可以随意修改的,这个命令是获取端口特性的。就是两个字节。多个字节可能设备直接会返回错误的。也就说这个命令就是两个字节。