因此,我对RC玩具无线协议进行了逆向工程,并在GNU Radio Companion中编写了流程图,用于复制玩具的命令。
接收器块是osmocom接收器,发送设备是HackRF One。
我遇到的问题是按下按钮和玩具反应之间的严重滞后,大约1-2秒。
快速按下,例如"前进"按钮两次将导致玩具快速连续前进两次,按下后大约一秒钟。所以它不像流程图本身那么慢。 CPU使用率也相当低。这看起来像是一些缓冲问题。
我非常确定流程图本身会立即响应按钮按下,因为调试打印在按下/按下按钮的同时出现,并且方形波也会立即出现在GUI范围内。< / p>
我尝试将HackRF缓冲区的数量减少到一个(通过设置设备参数hackrf,buffers=1
),但它没有帮助。
我设置了#34;最大输出数量&#34;对于流程图也是10,它也没有区别(我也尝试了其他一些值)。鉴于信号在GUI范围内显示的时间比1秒后更快,它无论如何都不会起作用。
如何减少延迟呢?
编辑:我按照@ Manos的建议,尝试调整采样率。
添加插值为8的合理重采样块(并相应地调整接收器采样率)和设置hackrf,buffers=1
使得延迟几乎不存在。
然而,将我的自定义块的输出采样率降低到500k并进行16倍插值仍然会导致明显的滞后,可能是400-500ms(仍然没有像它在源和接收器上的1M时那样引人注目)。我不确定如何解决它。不幸的是,以1M运行我的自定义块会占用100%的CPU并导致偶尔出现下溢。