赞
踩
程序结构
进入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增加删除一些自定义模块时会更加灵活一些。初学者不需要太关心这个文件夹。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。