完善以下代码 char display_buf[MAX_LINE][LINE_LEN + 1] = {0}; // 显示缓存 char BackStor_buf[MAX_Back_LINE][LINE_Back_LEN + 1]; // 备份缓存 uint8_t current_line = 0; // 当前行数 uint8_t current_pos = 0; // 当前字符数 uint8_t fact_line = 0; // 当前真实行数,即已经添加到缓存中的行数 uint8_t Page_logo = 0; // 当前页面 uint8_t Page_line = 0; // 备份行数 uint8_t MAX_Page; // 向显示缓存中添加一行文本 void add_display_line(char* text) { strcpy(BackStor_buf[fact_line], text); if (current_line == MAX_LINE) { // 如果缓存已满,则将所有行上移一行 ; for (int i = 1; i < MAX_LINE; i++) { strcpy(display_buf[i - 1], display_buf[i]); } if ((fact_line / current_line) != 0) { Page_logo = fact_line / current_line; MAX_Page=Page_logo; } if(Page_line==current_line) Page_line=0; current_line--; } // 将新行添加到缓存末尾 strcpy(display_buf[current_line], text); current_line++; fact_line++; Page_line++; }
时间: 2024-02-06 19:01:58 浏览: 67
完善后的代码如下:
```
#define MAX_LINE 10 // 显示缓存最大行数
#define LINE_LEN 80 // 每行最大字符数
#define MAX_Back_LINE 20 // 备份缓存最大行数
#define LINE_Back_LEN 80 // 每行最大字符数
char display_buf[MAX_LINE][LINE_LEN + 1] = {0}; // 显示缓存
char BackStor_buf[MAX_Back_LINE][LINE_Back_LEN + 1]; // 备份缓存
uint8_t current_line = 0; // 当前行数
uint8_t current_pos = 0; // 当前字符数
uint8_t fact_line = 0; // 当前真实行数,即已经添加到缓存中的行数
uint8_t Page_logo = 0; // 当前页面
uint8_t Page_line = 0; // 备份行数
uint8_t MAX_Page = 0; // 最大页数
// 向显示缓存中添加一行文本
void add_display_line(char* text) {
// 将新行添加到缓存末尾
strcpy(BackStor_buf[fact_line], text);
strcpy(display_buf[current_line], text);
// 如果缓存已满,则将所有行上移一行
if (current_line == MAX_LINE) {
for (int i = 1; i < MAX_LINE; i++) {
strcpy(display_buf[i - 1], display_buf[i]);
}
current_line--;
Page_line--;
// 如果当前页已满,则翻页,并更新最大页数
if (Page_line == 0) {
Page_logo++;
MAX_Page = fact_line / current_line;
if (Page_logo > MAX_Page) {
Page_logo = MAX_Page;
}
}
}
current_line++;
fact_line++;
Page_line++;
}
```
在修改后的代码中,我们增加了一些宏定义,定义了缓存的最大行数和字符数,以及备份缓存的最大行数和字符数。同时,我们还添加了一个最大页数的变量 `MAX_Page`。在 `add_display_line` 函数中,我们首先将新行添加到缓存末尾,然后再判断当前缓存是否已满,如果已满,则将所有行上移一行。在上移行的过程中,需要将当前行和页码减一。如果当前页已满,则翻页,并更新最大页数。最后,我们将当前行、实际行和页码均加一。
阅读全文