BI4IRZ 单片机机能有限,特别是内存珍贵,不建议用复杂的算法。莫尔斯码表可以采用32位整数数组表示: 0b101110000000000000000000,// A 0b111010101000000000000000, // B 0b111010111010.... 匹配也好,播放也好,用一个变量循环左移一位比较,知道变为零结束。
BG5VLI BI4IRZ 没太明白,请问这个二进制串中的01是分别指的点划的拍发时长吗?比如说A是.-对应0111,这样的话对于自动键好像是没有必要的,因为自动键本身不依靠拍发时长区分点划,重点应该是通过按住的时长判断连续发出多少个点或划。您那个0111应该代表j了。 您的算法效率好像比bst好不少,不用递归查找还省空间,就是拍发匹配时会慢点。学习了。
BI4IRZ 不管手键还是电键,对单片机说只需在设定的速度下检测是否按下状态,直到连续两个以上的0视为字母结束,才需要去循环查表匹配录入的字符。对百兆的处理器来说,这点算例微不足道。而且二叉树的话并不是满树,有符号的叶节点是悬空的。 真要纠结于速度,就建个码表排序后的索引,用中间值法快查,效率上应该会超过递归检索树
ReadAir 第一个视频已上传至B站,这个版本没有做UI,耳机输出和设置页也没有开启,过完年继续完善!各位HAM新年快乐! 视频链接:https://www.bilibili.com/video/BV1PC41167M9/