quanweibuaa 2018-10-09 08:11 采纳率: 0%
浏览 1694

C++ 读取USB3.0数据问题

是这样的,我需要读取USB3.0(Cypress)自动上传的数据,速率大概2MB/s,每个数据包1KB,也就是2048pkt/s,但我通过主动读取代码,如下:

  void USBDataPacket::GetUSBDataPacket()
{
     ZeroMemory(inBuf, 1024); 
     LONG length = 1024;
     UCHAR *inContext = USBDevice->BulkInEndPt->BeginDataXfer(inBuf, length, &inOvLap);
     USBDevice->BulkInEndPt->WaitForXfer(&inOvLap, 100);
     USBDevice->BulkInEndPt->FinishDataXfer(inBuf, length, &inOvLap, inContext);   
}
```    工作流程大概为:

while(true)
{
GetUSBDataPacket();
处理函数();
}


  这样的问题是我调用一次GetUSBDataPacket(),时间大概为1.5ms,也就是即使我不加数据处理函数,疯狂循环调用GetUSBDataPacket(),1.5ms才能得到1KB的数据,速率达不到2MB/S的要求,请问有其他快一点的方式么,新手,请教各位大大了
  • 写回答

1条回答 默认 最新

  • Lingxy 2018-10-12 08:26
    关注

    我是把USB枚举成一个串口,然后上位机和单片两边建立通讯协议,就随便写了。USB2.0也能到30m/s啊

    评论

报告相同问题?