[Follow me第二季第3期] [进阶任务] 示例程序中新增命令打印信息
[复制链接]
简介
quick_start 的menu菜单是一个非常棒的功能。 那么本章节将演示如何在示例程序中新增命令的打印信息
正文
根据程序的追踪menu_main.c 是程序的主菜单入口文件。我们可以观察到上述定义了很多的菜单。 它同时还包括了一些其他的菜单。
我们可以按下ctrl + 鼠标左键来点击对应的方法来跳转到具体的某个菜单实现。
我们可以发现, 菜单的打印其实就是每次把数据写入到缓冲区里, 然后打印到串口。 同时当前的任务等待按下空格然后退出。 所以我们可以仿照这种形式来完成一个属于我们自己的一个简易菜单来打印信息。
仿照上述的格式, 首先我们定义一个菜单的头文件
menu_text.h
#ifndef MENU_TEXT
#define MENU_TEXT
extern test_fn ns_display_hello_world (void);
#endif /* MENU_ETH_WWW_H_ */
和它的具体实现
menu_text.c
/*
* menu_text.c
*
* Created on: 2024年12月1日
* Author: 23391
*/
#include "FreeRTOS.h"
#include "FreeRTOSConfig.h"
#include "semphr.h"
#include "queue.h"
#include "task.h"
#include "common_init.h"
#include "common_utils.h"
#include "menu_text.h"
#define CONNECTION_ABORT_CRTL (0x00)
#define MENU_EXIT_CRTL (0x20)
static char_t s_print_buffer[BUFFER_LINE_LENGTH] = {};
#define MODULE_NAME "\r\n%d. Hello world!\r\n"
test_fn ns_display_hello_world (void)
{
int8_t c = -1;
print_to_console((void*)s_print_buffer);
sprintf (s_print_buffer, MODULE_NAME, g_selected_menu);
print_to_console((void*)s_print_buffer);
sprintf (s_print_buffer, MENU_RETURN_INFO);
while ((CONNECTION_ABORT_CRTL != c))
{
c = input_from_console ();
if ((MENU_EXIT_CRTL == c) || (CONNECTION_ABORT_CRTL == c))
{
break;
}
}
return (0);
}
那么之后在menu_main.c 中包含这个头文件,并且在menu菜单中多增加一行,把我们的方法放进去。
烧录并且查看实验现象。
eefadf42e154a13defad8f70822a0639
|