优化这段代码 if( DBData[i] >= RT1064KZZ_GL1_ALM && DBData[i] <= RT1064KZZ_KZHL && DBData[i] != RT1064KZZ_MODE && DBData[i] != RT1064KZZ_UAB_CH && DBData[i] != RT1064KZZ_UBC_CH && DBData[i] != RT1064KZZ_FBS && DBData[i] != RT1064KZZ_FBS_MODE) { (isDraw ? LCD_DisString_Not((i%LISTOFFSET)+1, 20,(char *)gcszOnOff[(int)val]) : LCD_DisString((i%LISTOFFSET)+1, 20,(char *)gcszOnOff[(int)val]) ); } else if(DBData[i] == RT1064KZZ_MODE) { (isDraw ? LCD_DisString_Not((i%LISTOFFSET)+1, 20,(char *)ModeName[(int)val]) : LCD_DisString((i%LISTOFFSET)+1, 20,(char *)ModeName[(int)val]) ); } else if (DBData[i] == RT1064KZZ_FBS || DBData[i] == RT1064KZZ_FBS_MODE ) { (isDraw ? LCD_DisString_Not((i%LISTOFFSET)+1, 20,(char *)FBS_NAME[(int)val]) : LCD_DisString((i%LISTOFFSET)+1, 20,(char *)FBS_NAME[(int)val]) ); } else if(DBData[i] == RT1064KZZ_UAB_CH || DBData[i] == RT1064KZZ_UBC_CH || DBData[i] == RT1064_DZ_CHZCS) { sprintf(szVal, "%0.f" , val); LCD_DisString((i%LISTOFFSET)+1, 19 , szVal); if(DBData[i] == RT1064_DZ_CHZCS) LCD_DisString((i%LISTOFFSET)+1, 24, (char *)"次"); if (isDraw == 1) len = LCD_BitNot(UNIT_PROTECT,UNIT_GAP_RT1064,gapid,DBData[i],i,bit); } else { sprintf(szVal, "%0.3f" , get_ActionDZInfo_val(UNIT_GAP_RT1064,gapid,DBData[i])); LCD_DisString((i%LISTOFFSET)+1, 19, szVal); if (DBData[i] >= RT1064_YS_GL1 && DBData[i] <= RT1064_YS_FBS_JY) LCD_DisString((i%9)+1, 25, (char *)"S"); else if ((DBData[i] >= RT1064_DZ_GL1 && DBData[i] <= RT1064_DZ_I02) || ((DBData[i] >= RT1064_DZ_PHASE_I && DBData[i] <= RT1064_DZ_I0DLT) && DBData[i] != RT1064_DZ_YL_HAR && DBData[i] != RT1064_DZ_LMJ) || DBData[i] == RT1064_DZ_SD || DBData[i] == RT1064_DZ_I0HJS || DBData[i] == RT1064_DZ_FC_CHZ || (DBData[i] >= RT1064_DZ_I03 && DBData[i] <= RT1064_DZ_FBS_I0)|| DBData[i] == RT1064_DZ_FBS_OL) { LCD_DisString((i%LISTOFFSET)+1, 25, (char *)"A"); } else if (DBData[i] == RT1064_DZ_LMJ || DBData[i] == RT1064_DZ_JC || DBData[i] == RT1064_DZ_GYJC) { LCD_DisString((i%LISTOFFSET)+1, 25, (char *)"°"); } else if (DBData[i] == RT1064_DZ_YL_HAR) LCD_DisString((i%LISTOFFSET)+1, 25, (char *)"%"); else if (DBData[i] == RT1064_DZ_IDS ||DBData[i] == RT1064_DZ_OPENCS || (DBData[i] >= RT1064_DZ_I03 && DBData[i] <= RT1064_DZ_FBS_I0)) { LCD_DisString((i%LISTOFFSET)+1, 24, (char *)"次"); } else if (DBData[i] == RT1064_DZ_DP || DBData[i] == RT1064_DZ_GP) { LCD_DisString((i%LISTOFFSET)+1, 25, (char *)"HZ"); } else LCD_DisString((i%LISTOFFSET)+1, 25, (char *)"V"); if (isDraw == 1)len = LCD_BitNot(UNIT_PROTECT,UNIT_GAP_RT1064,gapid,DBData[i],i,bit); }
时间: 2024-03-01 12:52:09 浏览: 58
这段代码可以优化的地方比较多,建议按照以下几个方面进行调整:
1. 将重复的代码片段提取出来,封装成函数,提高代码复用性和可读性;
2. 尽可能地使用 switch-case 语句替换 if-else 语句,提高代码执行效率;
3. 对于需要频繁操作的字符串拼接操作,可以使用 sprintf 函数来代替,提高代码执行效率。
下面是一个可能的优化版本:
```c
void draw_LCD(int i, int isDraw, float val, int gapid, int bit) {
char szVal[10];
switch (DBData[i]) {
case RT1064KZZ_MODE:
if (isDraw) {
LCD_DisString_Not((i % LISTOFFSET) + 1, 20, (char *)ModeName[(int)val]);
} else {
LCD_DisString((i % LISTOFFSET) + 1, 20, (char *)ModeName[(int)val]);
}
break;
case RT1064KZZ_FBS:
case RT1064KZZ_FBS_MODE:
if (isDraw) {
LCD_DisString_Not((i % LISTOFFSET) + 1, 20, (char *)FBS_NAME[(int)val]);
} else {
LCD_DisString((i % LISTOFFSET) + 1, 20, (char *)FBS_NAME[(int)val]);
}
break;
case RT1064KZZ_UAB_CH:
case RT1064KZZ_UBC_CH:
case RT1064_DZ_CHZCS:
sprintf(szVal, "%0.f", val);
LCD_DisString((i % LISTOFFSET) + 1, 19, szVal);
if (DBData[i] == RT1064_DZ_CHZCS) {
LCD_DisString((i % LISTOFFSET) + 1, 24, (char *)"次");
}
if (isDraw) {
LCD_BitNot(UNIT_PROTECT, UNIT_GAP_RT1064, gapid, DBData[i], i, bit);
}
break;
default:
sprintf(szVal, "%0.3f", get_ActionDZInfo_val(UNIT_GAP_RT1064, gapid, DBData[i]));
LCD_DisString((i % LISTOFFSET) + 1, 19, szVal);
if (DBData[i] >= RT1064_YS_GL1 && DBData[i] <= RT1064_YS_FBS_JY) {
LCD_DisString((i % 9) + 1, 25, (char *)"S");
} else if ((DBData[i] >= RT1064_DZ_GL1 && DBData[i] <= RT1064_DZ_I02) ||
((DBData[i] >= RT1064_DZ_PHASE_I && DBData[i] <= RT1064_DZ_I0DLT) &&
DBData[i] != RT1064_DZ_YL_HAR && DBData[i] != RT1064_DZ_LMJ) ||
DBData[i] == RT1064_DZ_SD || DBData[i] == RT1064_DZ_I0HJS || DBData[i] == RT1064_DZ_FC_CHZ ||
(DBData[i] >= RT1064_DZ_I03 && DBData[i] <= RT1064_DZ_FBS_I0) || DBData[i] == RT1064_DZ_FBS_OL) {
LCD_DisString((i % LISTOFFSET) + 1, 25, (char *)"A");
} else if (DBData[i] == RT1064_DZ_LMJ || DBData[i] == RT1064_DZ_JC || DBData[i] == RT1064_DZ_GYJC) {
LCD_DisString((i % LISTOFFSET) + 1, 25, (char *)"°");
} else if (DBData[i] == RT1064_DZ_YL_HAR) {
LCD_DisString((i % LISTOFFSET) + 1, 25, (char *)"%");
} else if (DBData[i] == RT1064_DZ_IDS || DBData[i] == RT1064_DZ_OPENCS ||
(DBData[i] >= RT1064_DZ_I03 && DBData[i] <= RT1064_DZ_FBS_I0)) {
LCD_DisString((i % LISTOFFSET) + 1, 24, (char *)"次");
} else if (DBData[i] == RT1064_DZ_DP || DBData[i] == RT1064_DZ_GP) {
LCD_DisString((i % LISTOFFSET) + 1, 25, (char *)"HZ");
} else {
LCD_DisString((i % LISTOFFSET) + 1, 25, (char *)"V");
}
if (isDraw) {
LCD_BitNot(UNIT_PROTECT, UNIT_GAP_RT1064, gapid, DBData[i], i, bit);
}
break;
}
}
```
调用方式如下:
```c
for (int i = 0; i < DBData.size(); i++) {
if (DBData[i] >= RT1064KZZ_GL1_ALM && DBData[i] <= RT1064KZZ_KZHL && DBData[i] != RT1064KZZ_MODE &&
DBData[i] != RT1064KZZ_UAB_CH && DBData[i] != RT1064KZZ_UBC_CH && DBData[i] != RT1064KZZ_FBS &&
DBData[i] != RT1064KZZ_FBS_MODE) {
draw_LCD(i, isDraw, val, gapid, bit);
} else {
draw_LCD(i, isDraw, val, gapid, bit);
}
}
```
阅读全文