|
From: | david vanhorn |
Subject: | Re: CSV file as input |
Date: | Fri, 18 Mar 2022 12:26:51 -0600 |
Hey :)
CSV might or might not be convenient, but if C or assembler is your tool: The things that
the GNU Radio file source reads or the file sink writes is exactly what you get when you
take a buffer of samples and do an `fwrite` on that :) Just a dump of the raw memory to a
file. 32 bit unsigned should be directly digestible by GNU Radio (even if there were
endianness issues – you can just read as bytes and reshuffle as needed :)).
I didn't fully get how you're currently interfacing your hardware. Care to explain in a
bit more breadth? What are the components of your system, and how does the computer
running GNU Radio relate?
Best and slightly excited regards,
Marcus
On 18.03.22 18:37, david vanhorn wrote:
> Hi!
>
> I'm trying to interface some radio hardware I built to GnuRadio by way of data captured to
> SD cards.
> I have two channels (I and Q) of 32 bit unsigned data internally, and I originally assumed
> CSV would be the easy path, but now I see it's not.
> Coming in through the PC sound card is not an option for me, I'm using a particular codec
> selected for the application, and my goal is to develop signal processing algorithms to
> then be implemented back on my processor in C or ASM.
>
> I suppose it would be easiest if I rework my hardware to log data as if it were the
> "Signal Source" block with complex output.
> Where can I see what that looks like at the level of raw data?
>
>
>
>
> On Fri, Mar 18, 2022 at 4:59 AM Marcus Müller <mmueller@gnuradio.org
> <mailto:mmueller@gnuradio.org>> wrote:
>
> Hi David,
>
> you could write a quick python block that just reads values from the CSV file and outputs
> them. That'd be a very nice, basic exercise, and I think our freshly overhauled
> tutorials[1] should bring you there very quickly!
> If you want help with that, hit us up in this mailing list (ideally after reading the
> tutorials up to the point of roughly understanding how to write (embedded) Python
> blocks),
> and tell us more about the data in your CSV files.
>
> Alternatively, you could also write a converter of CSV to a format that GNU Radio by
> itself already has a reader for – and the main candidate here would probably just be
> plain
> raw data files (as e.g. numpy's `ndarray.tofile("filename")` does) – the File Source
> could
> directly read that. But with our freshly rewrite Wavfile sink and source blocks, we can
> write and read most audio files, just as well.
>
> Then your flow graph could do the signal processing you want – e.g frequency translation,
> low-pass filtering… and finally output it to any device that you have a GNU Radio
> interface to (e.g., your sound card). The hardware runs at a sample rate – GNU Radio
> itself just tries to feed it as fast as possible. So, the signal processing in GNU Radio
> itself isn't concerned with rate at all!
>
> Hope this helps,
> Marcus
>
> [1] https://tutorials.gnuradio.org <https://tutorials.gnuradio.org>
>
> PS: you'll often find me online, recommending not to use CSV as a sample storage format.
> I'll do the same to you here, but not because I think it's in any way invalid to have
> data
> in CSV files; I just want to point out it might be worth thinking about using something
> else. So take this with a "I think it's pretty cool you're doing this!".
>
> That has the reasons that
> a) unless you're more restricted than "CSV" says, you don't know how many bits are there
> per sample, as numbers might be represented in different lengths, so seeking exactly only
> works by reading and understanding the whole file up to the point you seek to,
> b) conversion of floating point numbers to human-readable form incurs rounding errors,
> and
> that can really wreck your day if you need to rerun *exactly* the same experiment twice,
> c) printing numbers as text is really inefficient, both storage-wise as well as compute
> wise (which will only matter at higher sampling rates) and sometimes, but only sometimes,
> ( d) people say that CSV is good because it's human-readable, but I challenge anyone to
> read a text file with only 10000 values and be happier about that than if he used a tool
> that displayed the values graphically, zoomably, and then allows for inspection of single
> values once zoomed sufficiently in.)
>
>
> On 18.03.22 04:55, david vanhorn wrote:
> > I've done a little with Gnuradio a couple years ago, but I'd now like to apply it to a
> > serious problem.
> >
> > I have a design I'm working on that will output raw data that could be interpreted
> as an
> > audio stream centered on 1kHz. I'd like to work on extracting CW signals that are
> rather
> > slow, from a rather narrow bandwidth, and see how far down into the noise I can
> actually
> > extract the signals.
> >
> > Is there a block that can bring in CSV data from a file at a specific rate, and
> serve as
> > the input to my CW detection system?
> >
> >
> > --
> > K1FZY (WA4TPW) SK 9/29/37-4/13/15
>
>
>
> --
> K1FZY (WA4TPW) SK 9/29/37-4/13/15
[Prev in Thread] | Current Thread | [Next in Thread] |