SDR# (SDRSharp)代码讲解 (二)

程序结构

进入SDRSharp主文件夹,可以发现下面有很多目录,这些目录主要分为3大类。

 

第一类是只与界面相关的代码,如:FrequencyEdit、FrequencyManager(频率管理界面)、CollapsiblePanel(左侧可收起的界面)、SDRSharp(第二层的SDRSharp子文件夹,里面是主界面)、PanView(主界面里的频谱图和瀑布图)

 

这一类文件夹的特征是,有些.cs文件一般都会有同名的.Designer.cs文件,这个文件就是C#界面编辑器根据拖动的控件自动生成的界面代码,界面上的事件对应的函数在前者的.cs了实现。一般界面代码里都不会有太复杂的逻辑或者算法,因此不必太仔细看,可能只有PanView值得研究下,因为里面涉及到了FFT算法的调用。

 

第二类是与SDR设备有关的代码,如:FUNcube、FUNcubeProPlus、HackRF、RTL283X、RTLSDR、RTLTCP、SDRIQ、SoftRock。可以很容易发现这些文件夹里的程序对应的就是你要使用到的SDR设备,它们也会有简单的硬件配置界面的代码,但是更重要的是,它们的内部都分别有NativeMethods.cs这个文件代码开头都会DllImport,这是用来读入设备对应的.dll文件的(相当于linux中的.so文件,如果是hackrf就相当于在读libhackrf.so),这样就可以在c#里直接调用设备驱动提供的函数接口了。我们会重点讲一下RTLSDR和HackRF文件夹,因为这两类硬件在国内比较常用,如果有时间,也可能会讲一下RTLTCP,通过TCP网络来获取远程RTL-SDR的数据。

 

RTLSDR文件夹中调用的层级结构是:RTLControllerDialog.cs(界面代码)->RTLSDRIO.cs->RtlDevice.cs->NativeMethods.cs->rtlsdr的驱动dll(这个dll是librtlsdr.c及其配套程序在Windows下编译出来的)。

 

其实,如果是初学者自己写程序的话,完全可以把中间的RTLSDRIO.cs、RtlDevice.cs、NativeMethods合并到界面代码中,直接在界面代码里调硬件驱动的API函数也是可以的。

 

第三类是纯算法的文件夹,如DNR(语音降噪)、Radio(各类解调算法)。这一类算法代码是SDR的精华,我们会重点讲解。

 

除这三类之外,还有一些文件夹也挺有意思,比如WavRecorder,主要用于实现录音功能,包括界面和对磁盘的写入代码。Common文件夹实现了一些接口,用于给其它新加入的模块集成,这样程序更加模块化,这样要对这个SDRSharp增加删除一些自定义模块时会更加灵活一些。初学者不需要太关心这个文件夹。

你可能感兴趣的:(SDR#,(SDRSharp)代码讲解)