KerberosSDR代码笔记(2) 代码结构

访问如下网页,这里面是kerberossdr的主程序。

https://github.com/rtlsdrblog/kerberossdr

根目录下有几个文件夹。我们着重看的代码在_GUI、_signalProcessing、_receiver下,它们各自对应的功能是python界面代码,各种处理算法,以及与接收机硬件的交互。除此之外_webDisplay和static都是网页用的,分别是动态部分和静态部分,_views是前段页面,也是网页。最后还有一个文件夹_dataFiles,这里面的python程序可以生成仿真数据,用来在没有kerberossdr硬件的情况下,调试程序。

根目录下还有几个文件run.sh是运行,setup_init.sh是安装,这两个上一篇文章里讲过了,sim.sh是运行仿真模式,它不会调用rtl硬件,而是用自己生成的数据对程序其他部分进行调试。kill.sh是退出程序。

点开_GUI文件夹,有几个文件,Main_hydra_dev.ui应该是手拖出来的界面设计文件,convert.sh可以把它自动生成hydra_mainwindow_layout.py,我们要关心的只是hydra_main_window.py这个文件,它负责与界面进行交互,每个显示出来的波形,或者点击的按钮都是在于这个文件交互的。_dataFiles文件夹下两个python程序,它们分别可以生成两种类型的测试数据,sim_gen.py生成的是比较简单的随机数据,只是包含了采样时间延迟和相位差。DOA_sim_gen.py生成的数据是可以用来测试DOA算法的。_signalProcessing里只有一个python文件,它可以实现延迟计算、相位差计算,DOA计算以及被动雷达计算。_receiver文件夹下还有个C文件夹,另外有一个hydra_receiver.py。C文件夹里的程序比较底层,涉及直接的硬件交互。hydra_receiver.py实现了一个面向对象的接收机,它可以被算法所调用,它可以控制底层的C程序,另外它可以做一些数据预处理工作,包含滤波、去dc offset、相位差修正等功能。

_receiver/C里的c程序比较多。rtl_daq.c是最直接与rtlsdr交互的,它调用了rtlsdr的api,然后通过stdout传输数据给python代码,rtl_rec.h实现了一个封装了rtlsdr硬件的结构体,4个接收机各自可以有不同的增益和中心频点、采样率、缓存等,它的作用是把这些变量打包在一个结构上,这样方便区分。rtl_daq.c就是使用这个结构体来与rtlsdr硬件api进行交互的。sync.c和sync.h利用延迟计算的结果,对stdin中收到的iq数据进行延迟操作并输出到stdout。gate.c相当于一个门,它读取stdin的数据,并有选择性地输出到stdout中。sim.c的作用是当没有实际硬件时,它可以代替rtl_daq.c来仿真,把模拟出来的iq数据提供给python代码。

你可能感兴趣的:(KerberosSDR)