项目简介
本项目是一个用于学术研究及特定工业场景的C语言库,可通过微控制器输出,以摩尔斯格式向人眼直接实时传输消息。同时,在输出信号的每个边沿变化时,利用霍夫曼编码传输一个字符,以此压缩传输比特,节省时间并避免干扰应用程序主要性能。该项目源于瓜达拉哈拉自治大学计算机科学硕士学位论文项目。
项目的主要特性和功能
- 支持以摩尔斯格式和霍夫曼编码两种方式传输消息。
- 摩尔斯和霍夫曼编码各有独立的可配置大小的缓冲区,能有效管理数据。
- 使用有限状态机控制传输过程,确保传输的正确性和稳定性。
- 具备硬件抽象层(HAL),将代码与具体硬件解耦,便于在不同硬件平台上移植和使用。
安装使用步骤
安装
- 确认
morsehuffman_cfg.h
文件中的定义与你希望运行库的配置相匹配:def_cfg_buffer_size
:缓冲区的字节大小,默认值为16。def_cfg_huffman_us_0
:霍夫曼传输脉冲之间等待的微秒数,默认值为1。
- 更新
morsehuffman_hal.c
文件,根据硬件情况填充所有函数:hal_switch_led(unsigned char state)
:根据接收到的参数更新配置的GPIO状态。hal_delayexecution_us(unsigned char us)
:在霍夫曼数据传输中,根据要传输的数字延迟应用程序的执行。hal_setuppin(unsigned char led_id)
:将接收到的GPIO设置为库的主输出。
使用
- 在项目的初始化阶段添加初始化函数:
c void init_MorseHuffman(unsigned char led_id);
- 在一个固定周期运行的周期性任务中添加主有限状态机调用:
c void morsehuffman_fsm(void);
- 在需要传输数据时,使用API:
c void morsehuffman_msg(const char *str, op_modes mode);
其中mode
可指定使用的方法:enum_opmode_morse
(默认)或enum_opmode_huffman
。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】