标签: uhd

在C++中改进/优化文件写入速度

我一直遇到写文件的一些问题 - 即无法写得足够快.

为了解释,我的目标是捕获通过千兆以太网传输的数据流,并将其保存到文件中.

原始数据以10MS/s的速率进入,然后将其保存到缓冲区并随后写入文件.

以下是相关的代码部分:

    std::string path = "Stream/raw.dat";
    ofstream outFile(path, ios::out | ios::app| ios::binary);

    if(outFile.is_open())
        cout << "Yes" << endl;

    while(1)
    {
         rxSamples = rxStream->recv(&rxBuffer[0], rxBuffer.size(), metaData);
         switch(metaData.error_code)
         {

             //Irrelevant error checking...

             //Write data to a file
                std::copy(begin(rxBuffer), end(rxBuffer), std::ostream_iterator<complex<float>>(outFile));
         }
    } 
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是将样本写入文件需要很长时间.大约一秒钟后,发送样本的设备报告其缓冲区已溢出.在对代码进行一些快速分析之后,几乎所有的执行时间都花在了std::copy(...)(确切地说是99.96%的时间).如果我删除这一行,我可以运行该程序几个小时而不会遇到任何溢出.

也就是说,我对如何提高写入速度感到困惑.我已经浏览了这个网站上的几个帖子,看起来最常见的建议(关于速度)是实现文件写入,就像我已经完成的那样 - 通过使用std::copy.

如果它有用,我在Ubuntu x86_64上运行这个程序.任何建议,将不胜感激.

c++ performance usrp software-defined-radio uhd

10
推荐指数
2
解决办法
4440
查看次数

当尝试在GNU Radio中使用我的USRP时,我得到"没有找到----->的设备"错误

当尝试执行使用USRP的GNU Radio程序时,我得到一个错误回溯,(在Python中)通常以以下结尾:

    self.u = uhd.usrp_source(device_addr=args, stream_args=uhd.stream_args('fc32'))
  File "/home/marcus/.usrlocal/lib64/python2.7/site-packages/gnuradio/uhd/__init__.py", line 122, in constructor_interceptor
    return old_constructor(*args)
  File "/home/marcus/.usrlocal/lib64/python2.7/site-packages/gnuradio/uhd/uhd_swig.py", line 2351, in make
    return _uhd_swig.usrp_source_make(*args)
RuntimeError: LookupError: KeyError: No devices found for ----->
Run Code Online (Sandbox Code Playgroud)

USRP正在运行.

gnuradio usrp uhd

7
推荐指数
1
解决办法
2万
查看次数

REDHAWK UHD设备使用方法

我已成功安装了REDHAWK版本1.8.3的UHD设备.我不清楚如何将波形中的组件连接到由设备管理器管理的设备.我也不清楚IDL接口和USRP设备上的数据端口之间的相互作用.

我无法找到一个简单的例子来发送和接收利用USRP设备的波形(例如,信号发生器组件向USRP发送正弦波).有没有人有这个或任何建议的经验?

usrp redhawksdr uhd

1
推荐指数
1
解决办法
1810
查看次数