GRC. You get 1 USRP sink, but it will have 2 independent inputs. On 31.05.2014 15:22, xianda wrote: > Hi > Thank you so much for your patient instructions. > Yes ,I know the "UHD:USRP Sink" can specifies two USRP addresses.But the > symbol i try to transmit to the usrp is different. > They may be should in two flow graph. > [file source 1] --> [ (I)FFT ] --> [ cyclic prefixer ] --> [ USRP sink 1] > [file source 2] --> [ (I)FFT ] --> [ cyclic prefixer ] --> [ USRP sink 2] > Can i realize it in grc?Or should i write the c++ code? > Thank you.Thank you. > Best regards, > xianda > > > > > > > > > At 2014-05-31 09:15:03, "Marcus Müller" <marcus.muel...@ettus.com> wrote: >> Hi! >> >> The gr-uhd USRP sink can represent multiple USRPs at once. >> If you have a recent GNU Radio version, in gnuradio-companion your "UHD: >> USRP Sink" block will have a "Documentation" tab. >> There is an example that specifies two USRP addresses. This will >> automatically enable you to transmit the contents of both files >> simultaneously [1]. >> You should start with the gnuradio-companion, which will generate >> easy-to-read Python code. >> Usually, you don't need to write your own blocks to interface with USRPs. >> >> Greetings, >> Marcus >> >> [1] "Simultaneously" does not mean "coherently"! >> >> On 31.05.2014 14:48, xianda wrote: >>> Hi: >>> Thank you so much for your kindly reply. >>> Sorry for my poor English. >>> The reason why i directly write the c++ code is that I want to use the >>> uhd to control my two usrps send simultaneously. >>> The aim i want to reach is that read symbol from file and perform ifft >>> and insert cp and then transmit.Just like you write: >>> [file source 1] --> [ (I)FFT ] --> [ cyclic prefixer ] --> [ USRP sink >>> 1] >>> [file source 2] --> [ (I)FFT ] --> [ cyclic prefixer ] --> [ USRP sink 2] >>> I can control them simutanously.Use some class like uhd::usrp::multi_usrp. >>> Which is the best way to realize it?Use the c++ or write python flow >>> graph?Thanks. >>> Thank you so much. >>> Best regards, >>> xianda >>> >>> >>> >>> >>> >>> >>> >>> >>> At 2014-05-31 08:25:53, "Marcus Müller" <marcus.muel...@ettus.com> wrote: >>>> Hi Xianda, >>>> >>>> some of your emails are really hard to read due to your email client >>>> writing non-standard-compliant HTML mail. Could you disable >>>> HTML/multimedia mail? >>>> >>>>> What I want to do is that read symbols from file and perform fft and >>>>> insert cp and then transmit to the usrp. >>>> ok, thanks for clarifying that! >>>> >>>>> Just as the "fft" and "OFDM Cyclic Prefixer" do! >>>> Well, the fft block doesn't read from a file, and ofdm cyclic prefixer >>>> does not transmit, but I get your point. >>>> >>>>> The easy way is use the <gnuradio/fft/fft.h> and >>>>> <gnuradio/digital/ofdm_cyclic_prefixer.h>; >>>> No! >>>> In GNU Radio, you build flow graphs out of existing blocks, whenever >>>> possible. So you want to use >>>> >>>> [file source] --> [ (I)FFT ] --> [ cyclic prefixer ] --> [ USRP sink ] >>>> >>>> by instantiating these blocks, and connecting them to a GNU Radio flow >>>> graph. Then you let GNU Radio run that flow graph. >>>> There's no need to write your own block, so far. Actually, you can do this >>>> without writing a single line of code just by constructing >>>> above flow graph in gnuradio-companion. That will generate the flowgraph >>>> setup and starting program in python. >>>> >>>> If you need to add more functionality, you usually just add another block >>>> to this chain, but from what you've said there will be no need to do this. >>>> >>>> >>>>> But as you said fft_complex_vcc is a block. But now how can i call it in >>>>> my code? >>>> You don't, see my previous post on calling work(). >>>> >>>> >>>> Greetings, >>>> Marcus >>>> >>>> >>>> >>>> On 31.05.2014 13:53, xianda wrote: >>>>> Hi:<br/> Thank you so much.<br/> What I want to do is that >>>>> read symbols from file and perform fft and insert cp and then transmit to >>>>> the usrp.Just as the "fft" and "OFDM Cyclic Prefixer" do!<br/> The >>>>> easy way is use the<gnuradio/fft/fft.h> and >>>>> <gnuradio/digital/ofdm_cyclic_prefixer.h>.But as you said >>>>> fft_complex_vcc is a block.But now how can i call it in my code?(It's a >>>>> block.It has work function.)Can i add it's work function in my code?Thank >>>>> you.<br/>Best regards,<br/>xianda >>>>> At 2014-05-31 07:36:24, "Marcus Müller" <marcus.muel...@ettus.com> wrote: >>>>>> Hi Xianda, >>>>>> >>>>>>> I just want to write c++ code to realize ("fft" block+"OFDM Cyclic >>>>>> Prefixer"). >>>>>> >>>>>> Sorry, I still did not understand. I only understand your C++, so here's >>>>>> my comments: >>>>>> >>>>>> The code you posted has really nothing to do with gr::block; >>>>>> gr::fft:fft_complex is *not* a gr::block, and has no work()! >>>>>> http://gnuradio.org/doc/doxygen/classgr_1_1fft_1_1fft__complex.html >>>>>> >>>>>> Also, I don't see the need to #include >>>>>> <gnuradio/digital/ofdm_cyclic_prefixer.h>. Is this a mistake or was it >>>>>> intentional? >>>>>> >>>>>> fft_complex really just a convenience wrapper around FFTW. >>>>>> I haven't tried to test your code, and you could read() directly into >>>>>> the get_inbuf() buffer, and write directly from your get_outbuf() >>>>>> buffer, but it looks ok. >>>>>> >>>>>> Again: gr::fft:fft_complex is not a block! it is used from within >>>>>> fft_complex_vcc (which is a block). >>>>>> All it does is use the FFTW library to perform FFTs, you can do that >>>>>> yourself without using GNU Radio at all. Only use it when you are >>>>>> developing a GNU Radio program! >>>>>> >>>>>> Greetings, >>>>>> Marcus >>>>>> >>>>>> >>>>>> On 31.05.2014 13:21, xianda wrote: >>>>>>> Hi: >>>>>>> Thank you so much. >>>>>>> I just want to write c++ code to realize ("fft" block+"OFDM Cyclic >>>>>>> Prefixer"). >>>>>>> And I attached my code which just realize ifft but the "OFDM Cyclic >>>>>>> Prefixer" has it's work function. >>>>>>> #include <fstream> >>>>>>> #include <vector> >>>>>>> #include <gnuradio/gr_complex.h> >>>>>>> #include <gnuradio/fft/fft.h> >>>>>>> #include <gnuradio/digital/ofdm_cyclic_prefixer.h> >>>>>>> >>>>>>> std::vector<std::complex<float> *> buff1(64);//read data >>>>>>> std::vector<std::complex<float> *> buff2(64);//write data >>>>>>> >>>>>>> std::ifstream infile("a.dat",std::ifstream::binary); >>>>>>> std::ofstream outfile("b.dat",std::ofstream::binary); >>>>>>> >>>>>>> int main(){ >>>>>>> while(not infile.eof()) >>>>>>> { >>>>>>> infile.read((char*)&buff1.front(),buff1.size()*sizeof(std::complex<float>)); >>>>>>> >>>>>>> gr::fft::fft_complex *buff=new gr::fft::fft_complex(64,0); >>>>>>> gr_complex *bu=buff->get_inbuf(); >>>>>>> memcpy(bu,&buff1.front(),buff1.size()*sizeof(std::complex<float>)); >>>>>>> buff->execute(); >>>>>>> gr_complex *out=buff->get_outbuf(); >>>>>>> memcpy(&buff2.front(),out,buff2.size()*sizeof(std::complex<float>)); >>>>>>> >>>>>>> outfile.write((char*)&buff2.front(),buff2.size()*sizeof(std::complex<float>)); >>>>>>> } >>>>>>> >>>>>>> infile.close(); >>>>>>> outfile.close(); >>>>>>> } >>>>>>> >>>>>>> Thank you. >>>>>>> Best regards, >>>>>>> xianda >>>>>>> >>>>>>> At 2014-05-31 06:33:35, "Martin Braun" <martin.br...@ettus.com> wrote: >>>>>>> >>>>>>> >>>>>>> >>>>>>> On 31 May 2014 11:57, "Marcus Müller" <marcus.muel...@ettus.com> wrote: >>>>>>>> Hi Xianda, >>>>>>>> >>>>>>>> >>>>>>>>> I know every block should have it's work or general_work >>>>>>>>> function.And i know it's used by scheduler >>>>>>> For the record, a block that only uses message passing doesn't need a >>>>>>> work function - not that that's what you're looking for here. >>>>>>> >>>>>>> >>>>>>> M >>>>>>> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Discuss-gnuradio mailing list >>>>>>> Discuss-gnuradio@gnu.org >>>>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio >>>>>> _______________________________________________ >>>>>> Discuss-gnuradio mailing list >>>>>> Discuss-gnuradio@gnu.org >>>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio