littlebot
Published on 2025-04-09 / 5 Visits
0

【源码】基于C语言的摩尔斯 霍夫曼编码传输库

项目简介

本项目是一个用于学术研究及特定工业场景的C语言库,可通过微控制器输出,以摩尔斯格式向人眼直接实时传输消息。同时,在输出信号的每个边沿变化时,利用霍夫曼编码传输一个字符,以此压缩传输比特,节省时间并避免干扰应用程序主要性能。该项目源于瓜达拉哈拉自治大学计算机科学硕士学位论文项目。

项目的主要特性和功能

  1. 支持以摩尔斯格式和霍夫曼编码两种方式传输消息。
  2. 摩尔斯和霍夫曼编码各有独立的可配置大小的缓冲区,能有效管理数据。
  3. 使用有限状态机控制传输过程,确保传输的正确性和稳定性。
  4. 具备硬件抽象层(HAL),将代码与具体硬件解耦,便于在不同硬件平台上移植和使用。

安装使用步骤

安装

  1. 确认 morsehuffman_cfg.h 文件中的定义与你希望运行库的配置相匹配:
    • def_cfg_buffer_size:缓冲区的字节大小,默认值为16。
    • def_cfg_huffman_us_0:霍夫曼传输脉冲之间等待的微秒数,默认值为1。
  2. 更新 morsehuffman_hal.c 文件,根据硬件情况填充所有函数:
    • hal_switch_led(unsigned char state):根据接收到的参数更新配置的GPIO状态。
    • hal_delayexecution_us(unsigned char us):在霍夫曼数据传输中,根据要传输的数字延迟应用程序的执行。
    • hal_setuppin(unsigned char led_id):将接收到的GPIO设置为库的主输出。

使用

  1. 在项目的初始化阶段添加初始化函数: c void init_MorseHuffman(unsigned char led_id);
  2. 在一个固定周期运行的周期性任务中添加主有限状态机调用: c void morsehuffman_fsm(void);
  3. 在需要传输数据时,使用API: c void morsehuffman_msg(const char *str, op_modes mode); 其中 mode 可指定使用的方法:enum_opmode_morse(默认)或 enum_opmode_huffman

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】