优化这段代码 sprintf(szVal, "%0.3f" , get_ActionDZInfo_val(UNIT_GAP_RT1064,gapid,DBData[i])); LCD_DisString((i%9)+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%9)+1, 25, (char *)"A"); } else if (DBData[i] == RT1064_DZ_LMJ || DBData[i] == RT1064_DZ_JC || DBData[i] == RT1064_DZ_GYJC) { LCD_DisString((i%9)+1, 25, (char *)"°"); } else if (DBData[i] == RT1064_DZ_YL_HAR) LCD_DisString((i%9)+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%9)+1, 24, (char *)"次"); } else if (DBData[i] == RT1064_DZ_DP || DBData[i] == RT1064_DZ_GP) { LCD_DisString((i%9)+1, 25, (char *)"HZ"); } else LCD_DisString((i%9)+1, 25, (char *)"V"); if (not == 2) { if(draw == (i+1)) len = LCD_BitNot(UNIT_PROTECT,UNIT_GAP_RT1064,gapid,DBData[i],i,bit); }
时间: 2024-02-03 17:03:53 浏览: 28
可以尝试使用 switch-case 语句来优化这段代码,将每种情况分开处理,让代码更加清晰易懂。同时,可以考虑定义一些常量或枚举值来代表每种情况,避免在代码中出现过多的数字和字符串常量。例如:
```c++
switch (DBData[i]) {
case RT1064_YS_GL1:
case RT1064_YS_FBS_JY:
LCD_DisString((i%9)+1, 25, (char *)"S");
break;
case RT1064_DZ_GL1:
case RT1064_DZ_I02:
case RT1064_DZ_SD:
case RT1064_DZ_I0HJS:
case RT1064_DZ_FC_CHZ:
case RT1064_DZ_I03:
case RT1064_DZ_FBS_I0:
case RT1064_DZ_FBS_OL:
case RT1064_DZ_PHASE_I:
case RT1064_DZ_I0DLT:
if (DBData[i] != RT1064_DZ_YL_HAR && DBData[i] != RT1064_DZ_LMJ) {
LCD_DisString((i%9)+1, 25, (char *)"A");
}
break;
case RT1064_DZ_LMJ:
case RT1064_DZ_JC:
case RT1064_DZ_GYJC:
LCD_DisString((i%9)+1, 25, (char *)"°");
break;
case RT1064_DZ_YL_HAR:
LCD_DisString((i%9)+1, 25, (char *)"%");
break;
case RT1064_DZ_IDS:
case RT1064_DZ_OPENCS:
if (DBData[i] >= RT1064_DZ_I03 && DBData[i] <= RT1064_DZ_FBS_I0) {
LCD_DisString((i%9)+1, 24, (char *)"次");
}
break;
case RT1064_DZ_DP:
case RT1064_DZ_GP:
LCD_DisString((i%9)+1, 25, (char *)"HZ");
break;
default:
LCD_DisString((i%9)+1, 25, (char *)"V");
break;
}
if (not == 2 && draw == (i+1)) {
len = LCD_BitNot(UNIT_PROTECT, UNIT_GAP_RT1064, gapid, DBData[i], i, bit);
}
```
另外,可以考虑将相同的代码逻辑提取出来,避免重复的代码出现。例如,多个情况下都需要将浮点数转换成字符串并输出,可以将这部分代码提取出来,避免重复编写:
```c++
char szVal[16];
sprintf(szVal, "%0.3f", get_ActionDZInfo_val(UNIT_GAP_RT1064, gapid, DBData[i]));
LCD_DisString((i%9)+1, 19, szVal);
```