有段时间没研究NavTex了,这段时间打算捡起来继续搞。
上一篇文章中,我用frisnit生成了wav文件。然后再用gnuradio观察波形,发现波形确实能与frisnit中的描述以及python解码程序中的dictionary对应上。
接下来,我要重点想办法自己写代码实现自动解码。
我又仔细研究了一下python解码程序,目标是想办法把它转化为c++程序,然后再对接到gnuradio上,这样用gnuradio解调,用c++解码,就能基本实现navtex接收了。
我先看了看python程序,其实它是由两部分组成的。第一部分算音频fft频点+音频fsk(pll算法),实现了解调。解调出的每一时刻的频率值,就是每一时刻的采样点。第二部分,再针对这些采样点做解码,解出0101后,再解出字符。
我们的规划中,已经使用gnuradio实现了音频解调了。所以c++程序只要做第二部分。
我已经把上一篇文章的python代码的第二部分——解码部分已经都看懂了,确实能把gnuradio截图上显示的波形转换为正确的字符。并且符合下文描述
Free NAVTEX decoder / ナブテックスデコーダーフリーダウンロード (frisnit.com)
接下来要做的,就是想办法获得解调结果,把它和我们要写的c++程序连起来。
由于我们之前已经实现了从无线电的方式(portapack)发射wav,到无线电(hackrf)接收,直到解调出音频fsk对应的方波。为了简单起见,我们后续实验不再使用无线电收发来做实验,也不用声波收发来做实验。而是直接读取wav文件,得到方波,再把这种方波用类似nrf解码的方式,通过fifo送到后面的解码程序。
参考这篇文章
Portapack应用开发教程(七)nrf24l01解调_老邵的开源世界的博客-CSDN博客_nrf24l01设置250k没变化https://blog.csdn.net/shukebeta008/article/details/105478579
流图如下:
后面我要重新下载NRF24-BTLE-Decoder,把它做简化,然后收fifo的输出,再print出来,把波形对应的每个采样点的值都打出来。一旦能打出来,离成功解码就不远了。