[嵌入式C语言专精]利用链表实现有效的串口命令行模块

本文介绍了一个基于C语言的Debug_Lib模块,用于通过串口字符串执行系统内命令和变量操作。通过简单的API接口,实现数据的注册、赋值和函数调用,适用于嵌入式系统的高效通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Debug_Lib

我们的目的是开发一款使用串口字符串进行系统内的命令操作的模块组件, 如:通过字符串命令来唤起指定的函数, 通过字符串命令来对系统内变量进行修改.

当然, 目前市面上也有着很多广泛应用的成熟项目, 如Json格式数据包, terminal终端的底层逻辑等等, 他们都实现了上述的功能, 尤其是Json, 可以让用户简便地进行大批量数据的交互.

但是你都写C语言了, 不自己造一遍轮子还叫C吗
在嵌入式系统中, 简单高效是必要的要求, 本工程便是用最简单的方法实现了较简便的交互数据包格式.

如何使用 How to use?

  1. 导入头文件#include “N_CmdString_debug.h”
  2. 定义函数句柄时, 参数应定义为(void* argument).
void cmdFunction(void* argument){
   
    printf("here is test function.\r\n");
    printf("Received argument: %s\r\n", (char*)argument);
}
  1. 声明好符合格式的结构体变量.
    debug_cmd_t cmd =
    		{
   
            .name = "cmd",
            .handlerFunc = cmdFunction,
    		};
    		
	N_debug_addCMD(&cmd);
  1. 将符合格式的字符串传入 N_debug_handler 函数.
	N_debug_handler("CMD cmd helloNino");

使用例 example

#include <stdio.h>

#include "N_CmdString_debug.h"

void cmdFunction(void* argument){
   
    printf("here is test function.\r\n");
    printf("Received argument: %s\r\n", (char*)argument);
}

int main(void) {
   
    int a = 0;
    int b = 200;
    int PWM_Compare = 500;
    float f = 0;
    char char_buf[100];

    debug_variable_t va =
            {
   
                    .name = "a",
                    .pData = &a,
                    .type = DATATYPE_INT32
            };
    debug_variable_t vb =
            {
   
                    .name = "b",
                    .pData = &b,
                    .type = DATATYPE_INT32
            };
    debug_variable_t cmp =
            {
   
                    .name = "cmp",
                    .pData = &PWM_Compare,
                    .type = DATATYPE_INT16
            };
    debug_variable_t vf =
            {
   
                    .name = "f",
                    .pData = &f,
                    .type = DATATYPE_FLOAT
            };
    
    debug_cmd_t cmd =
    		{
   
            .name = "cmd",
            .handlerFunc = cmdFunction,
    		};

    N_debug_addVariable(&va);
    N_debug_addVariable(&vb
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值