我正在尝试在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无法正常运行,这与子进程运行有关。