Juma TX136 3 控制软件神通广大,ChatGPT大显神威
日期:2024-11-14
硬件基本折腾完了,现在准备动手写软件。
下文提到的所有程序都附在我的github库里: JumaTX136Controler
串口控制上位软件
事实上JumaTX136是有电脑控制软件的,原作者写了一份。但是这个软件只和作者亲自编写的v104固件匹配。这个固件问题相比于最新的v115,只支持CW QRSS和Beacon。

寥寥无几的功能。

v115 F4GCB编写的文档,足足三大页的串口指令。
话虽如此,虽然是想写一个GUI的程序。但是我没有接触过GUI,再者说电脑编程已经是很久以前大一的事情,如今差不多也忘光了。好在,还有ChatGPT。

ChatGPT果然神通广大,把需求描述给他,提交原文档的描述,一会功夫就写好了一段代码,再添油加醋催他写,只一个晚上就写好了足足四五百行的串口控制GUI。功能一切正常。
隔两天,我再把其他什么的乱七八糟串口功能也一股脑的灌进Chatgpt,这次比较费劲了,因为代码已经来到了八九百行的规模,chatgpt4o到上限了。我只能一个一个功能的往里填,在人力复制粘贴出来。最终,还是完成了成品。

这个代码已经完美包括了所有的串口功能。唯一的缺点是tk到上限了,开始变卡了。Python终究不是个高效的语言,不仅运行速度慢,编译出来的exe程序足足有30MB的夸张大小。未来有机会还是用VB或者别的语言来写吧。
顺带一提,V115的作者还在代码里留了个Bug,导致External REMOTE不能正常控制。
1 |
|
实际上External的指令是“=RSx\r”,get_number(2)只会得到第三个字符也就是“S”,S在ascii码里远远大于数字,最后输出结果落入case只能是最大的“3”
到我写稿时,刚好F4GCB反馈修好了这个bug并发布了v1.16


AFP控制软件
F4GCB另一个卓越的工作是编写了用于AFP-FSK控制的功能,就像VOX那样,发射音频、处理音频、发送串口指令,然后发射。这个功能可以实现用WSJT等程序控制发射,让Juma TX136从简单的CW机进化为全能FSK机!

不过,既然最终是用串口来发射的,那么直接用python程序效果应该也是一样的。
音频处理我同样也不了解,这次同样使用ChatGPT。我向chatgpt说明我的需求,它飞快的写出来一个程序。程序的功能很让我满意,但是它的频率精度却不尽如人意。
FFT size是个什么东西?凭着经验,我感觉这个东西调大可以让运算精度变得更细致。但是调大之后,这个程序就会变得非常非常的卡。原本我的设想是每20毫秒输出一次频率串口命令,调大之后100毫秒输出一次都难。
研究一下,最后终于搞明白了,事实上我可以在fft计算出的峰值附近采用抛物线三点插值法,用FFT计算出的幅度最大值点和它附近的两个点来计算抛物线的极大值。这样可以把原本的5Hz精度提升到0.01Hz级。
关于触发的幅度,我再对阈值计算平均值,这样可以过滤突然的幅值抖动。
至于FFT size,是每次执行计算的样本数量,这个数量与采样时间和采样率配合。FFT size当然不是越大越好。我设置的48000波特率,每20毫秒采样进行一次FFT计算,计算同时带上前100毫秒的数据,这样可以平衡精度和时域响应。
至于其他的窗函数、短时FFT计算和小波变换,由于现在的程序已经很满意了,就没有再深入。

上文提到的所有程序都附在我的github库里: JumaTX136Controler