Уважаемые специалисты по всему!
Задача: организовать непрерывную запись отсчетов с RTL SRD устройства, обработку сигнала и отображение результата.
Хочу реализовать это при помощи pyrtlsrd, pyqt и pyqtgraph.
В pyrtlsrd есть пример стриминга на asyncio:
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())
Насколько я понимаю, он обеспечивает непрерывное чтение. Однако, если в итоге будет приложение на pyqt, то мне, по сути, не нужна очередь от asyncio, а хватит просто одного QThread, который будет сигналом отдавать в основной поток данные для отрисовки.
Вопрос 1: имеет ли смысл совмещать async/await синтаксис в Qt? Можно ли выполнение async def streaming подпихнуть в event loop от Qt?
Вопрос 2: Как организовать получение сигнала с srd непрерывно без async/await? Вот такой код гарантирует непрерывность?
def streaming():
with closing(RtlSdr()) as sdr:
sdr.sample_rate = sample_rate = 240e3
sdr.center_freq = fc = 101.5e6
sdr.gain = 'auto'
count = 0
while True:
# do something with samples
# ...
streaming()
Вопрос 3: вопрос вообще по-адресу? Разумеется, на ЛОРе есть всё, но, может, порекомендуете более целевой форум?