rtlsdr.rtlsdraio¶
This module adds asyncio support for reading samples from the device.
The main functionality can be found in the stream()
method of rtlsdr.rtlsdraio.RtlSdrAio.
Example
import asyncio
from rtlsdr import RtlSdr
async def streaming():
sdr = RtlSdr()
async for samples in sdr.stream():
# do something with samples
# ...
# to stop streaming:
await sdr.stop()
# done
sdr.close()
loop = asyncio.get_event_loop()
loop.run_until_complete(streaming())
-
class
rtlsdr.rtlsdraio.RtlSdrAio(device_index=0, test_mode_enabled=False, serial_number=None)[source]¶ Bases:
rtlsdr.rtlsdr.RtlSdr-
stop()[source]¶ Stop async stream
Stops the
read_samples_asyncandExcecutortask created bystream().
-
stream(num_samples_or_bytes=131072, format='samples', loop=None)[source]¶ Start async streaming from SDR and return an async iterator (Python 3.5+).
The
read_samples_async()method is called in anExcecutorinstance usingasyncio.AbstractEventLoop.run_in_executor().The returned asynchronous iterable can then used to retrieve sample data using
async forsyntax.Calling the
stop()method will stop theread_samples_asyncsession and close theExcecutortask.- Parameters
- Returns
An
asynchronous iteratorto yield sample data
-
-
class
rtlsdr.rtlsdraio.AsyncCallbackIter(func_start, func_stop=None, queue_size=20, *, loop=None)¶ Bases:
objectConvert a callback-based legacy async function into one supporting asyncio and Python 3.5+
The queued data can be iterated using
async for- Parameters
func_start – A callable which should take a single callback that will be passed data. Will be run in a seperate thread in case it blocks.
func_stop (optional) – A callable to stop
func_startfrom calling the callback. Will be run in a seperate thread in case it blocks.queue_size (
int, optional) – The maximum amount of data that will be buffered.loop (optional) – The
asyncio.event_loopto use. If not supplied,asyncio.get_event_loop()will be used.
-
async
add_to_queue(*args)¶ Add items to the queue
- Parameters
*args – Arguments to be added
This method is a
coroutine