void showTitlePanel(const char* title,int gapid, int numerator, int denominator) { int i; int denominatorLen = 0; int totalLen = 0; bool isValid = false; char assem[26 + 1] = {0}; char tmpStr[26]; sprintf(tmpStr,"第%d间隔", gapid); for(i = 0; i < 26; ++i) { assem[i] = ' '; } for(i = 0; i < 26; ++i) { if(*(title + i) == 0) { break; } assem[i] = *(title + i); } for(i = 15; i < 26; ++i) { if(*(tmpStr + i) == 0) { break; } assem[i] = *(tmpStr + i); } if(numerator <= 0 || denominator <= 0) //不合法的分子和分母则不显示 { assem[26] = '\0'; LCD_DisString(0, 0, assem); return; } // 1.计算分母长度 for(i = 1000; i > 0; i /= 10) { if(denominator / i > 0) { isValid = true; } if(!isValid) { continue; } ++denominatorLen; } isValid = false; // 2.合并分子与分母 for(i = 1000; i > 0; i /= 10) { if(denominator / i > 0) { numerator *= i * 100; denominator += numerator; break; } } // 3.算出总长度 for(i = 10000000; i > 0; i /= 10) { if(denominator / i > 0) { isValid = true; } if(!isValid) { continue; } ++totalLen; } printf("totalLen:%d\n",totalLen); isValid = false; // 4.添加空格分隔 assem[26 - 1 - totalLen] = ' '; // 5.转换为字符 for(i = 10000000; i > 0; i /= 10) { if(denominator / i > 0) { isValid = true; } if(!isValid) { continue; } assem[26 - 1/*边缘空 1 行*/ - totalLen--] = denominator / i + '0'; denominator = denominator - denominator / i * i; printf("assem11:%s\n",assem); } // 6.添加斜杠分隔 assem[26 - 1/*边缘空 1 行*/ - 1 - denominatorLen] = '/'; printf("assem:%s\n",assem); LCD_DisString(0, 0, assem); }
时间: 2024-04-20 21:23:01 浏览: 93
这段代码是一个函数`showTitlePanel`的实现,它的作用是显示一个标题面板。函数接受四个参数:`title`是一个字符指针,表示标题内容;`gapid`表示间隔ID;`numerator`和`denominator`分别表示分子和分母。
函数首先初始化一些变量,并创建一个长度为26的字符数组`assem`,用于存储最终要显示的字符串。然后,将标题内容和间隔ID拼接到`assem`数组中。
接下来,函数检查分子和分母是否合法,如果不合法则直接显示空字符串并返回。如果合法,则进行以下步骤:
1. 计算分母的长度。
2. 合并分子和分母。
3. 计算总长度。
4. 在适当位置添加空格分隔符。
5. 将分母转换为字符并添加到`assem`数组中。
6. 在适当位置添加斜杠分隔符。
最后,函数通过调用一个名为`LCD_DisString`的函数来在LCD屏幕上显示`assem`数组中的字符串。
请注意,这段代码中有一些调试用的打印语句(`printf`),可能是为了帮助开发者调试程序而添加的。在实际使用时可能需要将它们移除或注释掉。
阅读全文