Python中的SDR脚本

时间:2018-06-07 15:06:06

标签: python raspberry-pi

我正在尝试在python中编写一个简单的代码来搜索baofeng无线电频谱上的有效频率并听取它。我使用RPI和一个小加密狗来捕获射频信号,但我的代码中有一些问题:

import os#lib do fopen
import subprocess
import time
import signal

f1=136000000
f2=174000000
f3=400000000
f4=520000000
p=2500
th=0.0
maior=th

ff1=0
ff2=0
pp=0


comando = 'rtl_power -f '+str(f1)+':'+str(f2)+':'+str(p)+' -g 50 -i 1 -1'#monta comando
saida=os.popen(comando).readlines()#executa o comando

k=0
while k<len(saida):
    linha=saida[k].split(",")#pega primeira linha
    ff1=int(linha[2])#pega freq inicial
    ff2=int(linha[3])#pega freq final
    pp=float(linha[4])#pega passo

    i=6#inicio dos valores de frequencia
    while i<len(linha):
        if float(linha[i])>maior:
            maior=float(linha[i])#pega maior valor de th

        if float(linha[i])>=th:
            print((ff1+((i-6)*pp)),' - ',str(linha[i]),'dB')
            comando = 'rtl_fm -f '+str(ff1+((i-6)*pp))+' | aplay' #monta comando
            proc1 = subprocess.Popen(comando,shell=True)
            time.sleep(2)
            subprocess.call(['killall', 'rtl_fm'])
            proc1.wait()
        i+=1

    k+=1

它需要四个频率:f1..f4,但是对于第一次测试我只使用f1和f2

我正在使用rtl_power从每个频率接收dB值,并使用rtl_fm来监听它。现在我遇到了一些问题:

1-我无法杀死rtl_fm打开的进程 - 它仍然在后台播放音频 2-该脚本在RPI上的“Thonny”平台上运行正常,但在shell上显示了来自rtl_power和rtl_fm的大量信息

为了将来实现,我将为控制跳过频率功能设置一个按钮,并尝试扫描小块频率,然后听它。

有关rtl_power的更多信息:http://kmkeen.com/rtl-power/

有关rtl_fm的更多信息:http://kmkeen.com/rtl-demod-guide/

提前致谢!

更新:os.kill无法正常运行,这与子进程运行有关。

0 个答案:

没有答案