1 2 Previous Next 15 Replies Latest reply on Aug 5, 2020 7:26 PM by user_1516091

    如何才能实现对两路USB3014芯片的数据采集

    user_1516091

             在对两个USB数据采集电路板进行数据采集,使用一台带win7-64位系统的电脑无法同时对两个设备进行数据采集,当名为VNIR这个USB3014-FX3设备进行数据采集后,插入名为SWIR的USB3014- FX3设备,点击开始采集,VNIR就会无法继续再进行数据采集,仿佛是被SWIR占用的传输通道而被阻塞。我采用的是同步FIFO和自动DMA通道,通过不断的进行指令下发实现连续不断的数据采集,两个设备的主机程序相关代码如下:

      VNIR-FX3设备

          //开始数据传输

           BYTE* pContext0=pBulkEpIn0->BeginDataXfer(pBulkBuf0,nBufSize0,&oRdOvLap0);//overlapped window os锁定该内存块资源,其他线程无法干扰

         //等待数据传输结束

           if(pBulkEpIn0->WaitForXfer(&oRdOvLap0,pBulkParam0->nTimeout0))

         {

              if(pBulkEpIn0->FinishDataXfer(pBulkBuf0,nBufSize0,&oRdOvLap0,pContext0))

            {

              pVdeioshow0->OnDataReady0(nBufSize0);//通知视频显示窗口数据准备完毕

            }   

         }

       

      //创建数据传输线程

      m_pBulkThread0=AfxBeginThread(BulkXferRead0,  &m_oBulkParam0,THREAD_PRIORITY_HIGHEST);

       

      SWIR-FX3设备

         //开始数据传输

           BYTE* pContext1=pBulkEpIn1->BeginDataXfer(pBulkBuf1,nBufSize1,&oRdOvLap1);//overlapped window os锁定该内存块资源,其他线程无法干扰

         //等待数据传输结束

           if(pBulkEpIn1->WaitForXfer(&oRdOvLap1,pBulkParam1->nTimeout1))

         {

             if(pBulkEpIn1->FinishDataXfer(pBulkBuf1,nBufSize1,&oRdOvLap1,pContext1))

           {

              pVdeioshow1->OnDataReady1(nBufSize1);//通知视频显示窗体数据准备完毕

           }   

         }

       

      //创建数据传输线程

      m_pBulkThread1=AfxBeginThread(BulkXferRead1,  &m_oBulkParam1,THREAD_PRIORITY_HIGHEST);

       

      特殊情况:

              当我先插VNIR FX3设备建立数据采集通道并开始采集后,可在三十秒内插入SWIR FX3设备建立数据采集通道并开始数据采集时,VNIR是有可能继续进行数据采集而不会出现无法采集数据的问题。即使成功建立了两路数据采集。当加入基于UVC的相机时,相机速率在250MBps,只能持续采集200秒左右,VNIR-FX3就会无法采集;当相机速率降至一半125MBps时,VNIR-FX3和SWIR-FX3可以持续采集半小时左右,然后就自动出现无法再采集数据的问题。这种特殊情况是基于两个FX3设备使用相同的端口号如0x81。当如果使用不同端口号,则点击第二个FX3设备开始数据采集时,第一个正常进行数据采集的FX3设备就直接出现无法采集数据的问题。

       

             打开Stearmer软件是无法同时加载两个设备的,即使USB control center软件已经将两个FX3设备都加入列表,但是在steamer软件的测试速率页面上,端口endpoint无法同时加载两路不同端点号如0x82和0x83的FX3设备,也确实是只能加载一个FX3设备,所以之前论坛官方技术支持人员建议参考steamer的源代码,该软件本身好像就无法实现。针对这些测试结果带来的问题,想寻求相关技术支持,咨询出现此类的问题的根本原因以及官方是否能提供进行对两路FX3设备进行数据采集的技术方案,谢谢。

       

       

      微信图片_20200709182341.jpg

      微信图片_20200709182316.jpg

      微信图片_20200709182158.jpg

      微信图片_20200709182205.jpg

        1 2 Previous Next