PAT---B1021. 个位数统计 (15)

本文介绍了一个算法问题的解决方法,该问题要求统计一个不超过1000位的大整数中每种不同个位数字出现的次数,并按数字升序输出统计结果。

题目要求:
给定一个k位整数N = dk-1*10k-1 + … + d1*101 + d0 (0<=di<=9, i=0,…,k-1, dk-1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定N = 100311,则有2个0,3个1,和1个3。

输入格式:

每个输入包含1个测试用例,即一个不超过1000位的正整数N。

输出格式:

对N中每一种不同的个位数字,以D:M的格式在一行中输出该位数字D及其在N中出现的次数M。要求按D的升序输出。

输入样例:
100311
输出样例:
0:2
1:3
3:1

解题思路:我们只需要统计每个数的出现的次数,所以可以使用string类型进行存储,这样来简单的统计

#include <iostream>
using namespace std;
int main()
{
    string s;                              //用字符串进行获取输入,这样比较每位数比较方便
    cin >> s;
    int a[10] = {0};                       //存储每个数字出现的次数,a[0]表示输入的数中为0的位的个数
    for(int i=0;i<s.length();i++)          //对每个位进行判别
        for(int j=0;j<10;j++)              //将每一位和0~9的数字进行对比
        {
            if(((int)s[i]-48)==j)          //因为将字符串拆分后得到的是char类型,所以减去48才能和int类型的数进行比较
            {
                 a[j]++;            
                 break;                    //一个数判断完成后就退出此位的判断循环,以此来节约时间
            } 
        }
    for(int i=0;i<10;i++)                  //从小到大进行依次打印
        if(a[i]!=0)                        //不为0才输出
        cout <<i<<":"<<a[i]<<endl;         //因为不要求输出的格式,所以我们就简单地将每个数以及它出现的次数输出后输出换行即可
    return 0;
}
static void scrn_UpdatePage(void) { SCRN_DATA_P pScrnData = SCRN_GetScrnDataPtr(); char *dispStr = (char*)pScrnData->dispStr; u16 tmpVal = SCRN_CurPageId(pScrnData); SCRN_DispFocusIcon (pScrnData); if (SCRN_IsTherapyPage(pScrnData)) { u16 tmpVal2; tmpVal = PAPRM_GetPapMode(); //写文本 if (MODE_CPAP == tmpVal) { SCRN_SetAddrText(ADDR_TextPapMode, "CPAP"); } else if (MODE_ST == tmpVal) { SCRN_SetAddrText(ADDR_TextPapMode, "S/T"); } else if (MODE_PC == tmpVal) { SCRN_SetAddrText(ADDR_TextPapMode, "PAC"); } else if (MODE_AVAPS == tmpVal) { SCRN_SetAddrText(ADDR_TextPapMode, "VAPS"); } else if (MODE_S == tmpVal) { SCRN_SetAddrText(ADDR_TextPapMode, "S"); } else if (MODE_T == tmpVal) { SCRN_SetAddrText(ADDR_TextPapMode, "T"); } else if (MODE_APAP == tmpVal) { /* 24.5.15 OEM 模式为APAP时,显示为cpap ty */ if (SYS_GetReserveValue(RESE_DeviceType) <= 9) { SCRN_SetAddrText(ADDR_TextPapMode, "CPAP"); } else { SCRN_SetAddrText(ADDR_TextPapMode, "APAP"); } } else if (MODE_AUTOS == tmpVal) { /* 24.5.15 OEM 模式为AutoS时,显示为S ty */ if (SYS_GetReserveValue(RESE_DeviceType) <= 9) { SCRN_SetAddrText(ADDR_TextPapMode, "S"); } else { SCRN_SetAddrText(ADDR_TextPapMode, "AutoS"); } } /* 2024.3.16 Added by Tianyongchang */ if (SCRN_CurPageId(pScrnData) == PAGE_Simple_CN || SCRN_CurPageId(pScrnData) == PAGE_Simple_EN) { //第一页不显示第二、三页的数据 SCRN_SetAddrWord(ADDR_IPAPSet, g_sVentRun.DisplayPrs * 10); //设置压力 //SCRN_SetAddrWord(ADDR_PRT, pScrnData->uRealTimePress); //实时压力 /* 倒计时显示 */ scrn_Count_Down(); /* 湿化刷新 */ scrn_Show_Humidity(dispStr); } else {//第二、三页不显示第一页的数据 /* 吸气峰压 */ sprintf(dispStr, "%d.%d", pScrnData->uRealTimeIpap / 10, pScrnData->uRealTimeIpap % 10); SCRN_SetAddrTextE(ADDR_Param_1, dispStr); /* 呼末正压 */ sprintf(dispStr, "%d.%d", pScrnData->uRealTimeEpap / 10, pScrnData->uRealTimeEpap % 10); SCRN_SetAddrTextE(ADDR_Param_2, dispStr); if (Vent_GetBreathCount() < 5 || g_sVentRun.uVentPhase == 0) { delay_us(10000); SCRN_SetAddrTextE(ADDR_Param_3, "-?-"); SCRN_SetAddrTextE(ADDR_Param_4, "-?-"); SCRN_SetAddrTextE(ADDR_Param_5, "-?-"); SCRN_SetAddrTextE(ADDR_Param_6, "-?-"); SCRN_SetAddrTextE(ADDR_Param_7, "-?-"); SCRN_SetAddrTextE(ADDR_Param_8, "-?-"); SCRN_SetAddrTextE(ADDR_Param_9, "-?-"); } else { /* 呼吸频率 */ pScrnData->uRealTimeRR = MIN(60, pScrnData->uRealTimeRR); sprintf (dispStr, "%d", pScrnData->uRealTimeRR); SCRN_SetAddrTextE(ADDR_Param_3, dispStr); /* 分钟通气量 */ pScrnData->uRealTimeMV = MIN(1000, pScrnData->uRealTimeMV); sprintf (dispStr, "%d.%d", pScrnData->uRealTimeMV/10, pScrnData->uRealTimeMV%10); SCRN_SetAddrTextE(ADDR_Param_4, dispStr); /* 潮气量 */ pScrnData->uRealTimeVT = MIN(5000, pScrnData->uRealTimeVT); sprintf (dispStr, "%d", pScrnData->uRealTimeVT); SCRN_SetAddrTextE(ADDR_Param_5, dispStr); /* 泄漏量 */ pScrnData->uRealTimeLeak = MIN(2000, pScrnData->uRealTimeLeak); sprintf (dispStr, "%d.%d", pScrnData->uRealTimeLeak/10, pScrnData->uRealTimeLeak%10); SCRN_SetAddrTextE(ADDR_Param_6, dispStr); /* 吸气时间 */ pScrnData->uRealTimeTI = MIN(9999, pScrnData->uRealTimeTI); sprintf (dispStr, "%d", pScrnData->uRealTimeTI); SCRN_SetAddrTextE(ADDR_Param_7, dispStr); /* 脉率 */ SCRN_SetAddrTextE(ADDR_Param_8, "-?-"); /* 吸呼比 */ IERate_Value((u32)pScrnData->uRealTimeIERate, &tmpVal, &tmpVal2); pScrnData->uRealTimeTI = MIN(9999, pScrnData->uRealTimeTI); sprintf (dispStr, "%d.%d:%d.%d", tmpVal/10, tmpVal%10, tmpVal2/10, tmpVal2%10); SCRN_SetAddrTextE(ADDR_Param_9, dispStr); } } } else if (tmpVal == PAGE_MENU1_CN || tmpVal == PAGE_MENU1_EN) { delay_us (10000); SCRN_SetAddrTxtID (ADDR_TextMenuMaskMatch, TXT_Jump); sprintf(dispStr, "%d", SYS_GetBrightLevelState()); SCRN_SetAddrTextE(ADDR_TextMenuBrightLvl, dispStr); if (SYS_GetEcModeState()) { SCRN_SetAddrTxtID(ADDR_TextMenuGreenMode, TXT_On); } else { SCRN_SetAddrTxtID(ADDR_TextMenuGreenMode, TXT_Off); } delay_us (10000); SCRN_SetAddrTxtID(ADDR_TextMenuLanguage, TXT_Language); if (SYS_GetAlarmClockState(&tmpVal)) { sprintf(dispStr, "%02d:%02d", (tmpVal >> 8)&0xFF, tmpVal&0xFF); SCRN_SetAddrTextE(ADDR_TextMenuAlarmSet, dispStr); } else { SCRN_SetAddrTxtID(ADDR_TextMenuAlarmSet, TXT_Off); } tmpVal = SCRN_CurIconIdx (pScrnData) + 1; SCRN_SetAddrFoucus(ADDR_IconMenuFocus2, (tmpVal == 2 || tmpVal == 3)); SCRN_SetAddrFoucus(ADDR_IconMenuFocus4, (tmpVal == 5 || tmpVal == 6)); } else if (tmpVal == PAGE_MENU2_CN || tmpVal == PAGE_MENU2_EN) { delay_us (10000); if (SYS_GetKeyToneState()) { SCRN_SetAddrTxtID(ADDR_TextMenuKeyTone, TXT_On); } else { SCRN_SetAddrTxtID(ADDR_TextMenuKeyTone, TXT_Off); } SCRN_SetAddrTxtID(ADDR_TextMenuWarnItem, TXT_Jump); switch (SYS_GetMaskTypeState()) { case 0: { SCRN_SetAddrTxtID(ADDR_TextMenuMaskType, TXT_Mask); break; } case 1: { SCRN_SetAddrTxtID(ADDR_TextMenuMaskType, TXT_Nasal); break; } case 2: { SCRN_SetAddrTxtID(ADDR_TextMenuMaskType, TXT_Pillows); break; } case 3: { SCRN_SetAddrTxtID(ADDR_TextMenuMaskType, TXT_Resistor); break; } } delay_us(10000); if (SYS_GetPressUnitState()) { SCRN_SetAddrTxtID(ADDR_TextMenuPressUnit, TXT_hPa); } else { SCRN_SetAddrTxtID(ADDR_TextMenuPressUnit, TXT_cmH2O); } if (SYS_GetTempeUnitState()) { SCRN_SetAddrTxtID (ADDR_TextMenuTempeUnit, TXT_Fahrenheit); } else { SCRN_SetAddrTxtID(ADDR_TextMenuTempeUnit, TXT_Centigrade); } SCRN_SetAddrTxtID(ADDR_TextMenuLocalInfo, TXT_Jump); delay_us(10000); tmpVal = SCRN_CurIconIdx(pScrnData) + 1; SCRN_SetAddrFoucus(ADDR_IconMenuFocus1, (tmpVal == 1 || tmpVal == 2)); SCRN_SetAddrFoucus(ADDR_IconMenuFocus3, (tmpVal == 4 || tmpVal == 5)); SCRN_SetAddrFoucus(ADDR_IconMenuFocus4, (tmpVal == 6 || tmpVal == 7)); SCRN_SetAddrFoucus(ADDR_IconMenuFocus5, (tmpVal == 8 || tmpVal == 9)); } else if (tmpVal == PAGE_MENU3_CN || tmpVal == PAGE_MENU3_EN) { SCRN_SetAddrTxtID(ADDR_ListItem_1, SYS_GetAutoVentState() ? TXT_On : TXT_Off); SCRN_SetAddrTxtID(ADDR_ListItem_2, SYS_GetAutoDryingState() ? TXT_On : TXT_Off); delay_us(10000); SCRN_SetAddrTxtID(ADDR_ListItem_3, SYS_GetAbFilterState() ? TXT_On : TXT_Off); SCRN_SetAddrTxtID(ADDR_ListItem_3_2, TXT_Jump); /*tmpVal = SCRN_CurIconIdx (pScrnData) + 1; SCRN_SetAddrFoucus(ADDR_IconMenuFocus1, (tmpVal == 1 || tmpVal == 2)); SCRN_SetAddrFoucus(ADDR_IconMenuFocus2, (tmpVal == 3 || tmpVal == 4)); SCRN_SetAddrFoucus(ADDR_IconMenuFocus3, (tmpVal == 5 || tmpVal == 6));*/ } else if (tmpVal == PAGE_ComfortSet_CN || tmpVal == PAGE_ComfortSet_EN) { delay_us (10000); tmpVal = PARAM_GetHumidiVal(); sprintf(dispStr, "%d", tmpVal); if (tmpVal == 6) { SCRN_SetAddrTxtID(ADDR_TextComfHumiLevel, TXT_Auto); // add by gt 231128 for auto humidity } else { SCRN_SetAddrTextE(ADDR_TextComfHumiLevel, dispStr); } if (PARAM_GetPreHeatState()) { SCRN_SetAddrTxtID(ADDR_TextComfPreHeat, TXT_On); } else { SCRN_SetAddrTxtID(ADDR_TextComfPreHeat, TXT_Off); } tmpVal = PARAM_GetTemperVal(); if (SYS_GetTempeUnitState()) { tmpVal = tmpVal * 9 / 5 + 32; } sprintf(dispStr, "%d", tmpVal); if (tmpVal) { SCRN_SetAddrTextE(ADDR_TextComfTubeTempe, dispStr); } else { SCRN_SetAddrTxtID(ADDR_TextComfTubeTempe, TXT_Off); } delay_us(10000); if (SYS_GetTubeTypeState()) { sprintf(dispStr, "%s", "19mm"); } else { sprintf(dispStr, "%s", "15mm"); } SCRN_SetAddrTextE(ADDR_TextComfTubeType, dispStr); /* 24.4.8 模式参数设置改变,起始压力需要跟着改变 ty u16 data; if (PAPRM_GetPapMode() == MODE_CPAP) { data = (PAPRM_GetVal(PARAM_Ipap) < PARAM_GetRampPressVal()) ? PAPRM_GetVal(PARAM_Ipap) : PARAM_GetRampPressVal(); } else if (PAPRM_GetPapMode() == MODE_APAP || PAPRM_GetPapMode() == MODE_AUTOS) { data = (PAPRM_GetVal(PARAM_EpapMin) < PARAM_GetRampPressVal()) ? PAPRM_GetVal(PARAM_EpapMin) : PARAM_GetRampPressVal(); } else//S T S/T { data = (PAPRM_GetVal(PARAM_Epap) < PARAM_GetRampPressVal()) ? PAPRM_GetVal(PARAM_Epap) : PARAM_GetRampPressVal(); } PARAM_SetRampPressVal(data); sprintf(dispStr, "%d.%d", PARAM_GetRampPressVal() / 10, PARAM_GetRampPressVal() % 10); SCRN_SetAddrTextE(ADDR_TextComfRampIpap, dispStr);*/ tmpVal = PARAM_GetRampTimeVal(); sprintf (dispStr, "%d", tmpVal); if (tmpVal == 1) { // add by gt 231009 for auto ramps SCRN_SetAddrTxtID(ADDR_TextComfRampTime, TXT_Auto); } else if (tmpVal == 0 || tmpVal == 2)//24.11.28 change by ty : kjr require 2min display off { SCRN_SetAddrTxtID(ADDR_TextComfRampTime, TXT_Off); } else { SCRN_SetAddrTextE(ADDR_TextComfRampTime, dispStr); } /* 2024.3.20 add by Chaoqi * If ramp setting value is changed,will reset ramp time. */ static uint8_t Ramp_Time_Record = 0; if (Ramp_Time_Record != tmpVal) { Ramp_Time_Record = tmpVal; if (tmpVal == 1) { g_sVentRun.uAutoRampTrigger = 1; Vent_StartRamp(((FP32)PARAM_GetRampPressVal()) / 10, 10 * 60); } else { g_sVentRun.uAutoRampTrigger = 0; Vent_StartRamp(((FP32)PARAM_GetRampPressVal()) / 10, PARAM_GetRampTimeVal() * 60); } } delay_us(10000); tmpVal = PAPRM_GetFlexVal(); sprintf (dispStr, "%d", tmpVal); if (tmpVal) { SCRN_SetAddrTextE(ADDR_TextComfFlexState, dispStr); } else { SCRN_SetAddrTxtID(ADDR_TextComfFlexState, TXT_Off); } tmpVal = SCRN_CurIconIdx (pScrnData) + 1; SCRN_SetAddrFoucus(ADDR_IconMenuFocus2, (tmpVal == 2 || tmpVal == 3)); SCRN_SetAddrFoucus(ADDR_IconMenuFocus4, (tmpVal == 5 || tmpVal == 6)); SCRN_SetAddrFoucus(ADDR_IconMenuFocus7, (tmpVal == 9 || tmpVal ==10)); } else if (tmpVal == PAGE_ReportBase_CN || tmpVal == PAGE_ReportBase_EN) { u16 dayCount = 0; switch (pScrnData->sParam1) { //24.4.2 ty 本次报告 case 0: SCRN_SetAddrTxtID (ADDR_TextReportDurat, TXT_ThisTime); dayCount = 0; break; case 1: SCRN_SetAddrTxtID(ADDR_TextReportDurat, TXT_1Days); dayCount = 1; break; case 2: SCRN_SetAddrTxtID(ADDR_TextReportDurat, TXT_7Days); dayCount = 7; break; case 3: SCRN_SetAddrTxtID(ADDR_TextReportDurat, TXT_1Month); dayCount = 31; break; } SCRN_SetAddrWord(ADDR_DispAhiVal, LOG_GetAiAvg(dayCount) + LOG_GetHiAvg(dayCount)); /* 24.4.3 使用时间ty */ tmpVal = (dayCount==0) ? (s_sThisTimeUse.iUseTime / 6) : LOG_GetUseTime(dayCount); SCRN_SetAddrWord(ADDR_DispUseTime, tmpVal); //unit 0.1Hour tmpVal = LOG_GetMaskFitAvg(dayCount); SCRN_SetAddrFoucus(ADDR_IconMatchStar1, tmpVal >= 10); SCRN_SetAddrFoucus(ADDR_IconMatchStar2, tmpVal >= 15); SCRN_SetAddrFoucus(ADDR_IconMatchStar3, tmpVal >= 45); tmpVal = LOG_GetHeatRate(dayCount); SCRN_SetAddrFoucus(ADDR_IconHumiStar1, tmpVal >= 10); SCRN_SetAddrFoucus(ADDR_IconHumiStar2, tmpVal >= 30); SCRN_SetAddrFoucus(ADDR_IconHumiStar3, tmpVal >= 60); } else if (tmpVal == PAGE_ReportMore_CN || tmpVal == PAGE_ReportMore_EN) { u16 dayCount = 0; switch (pScrnData->sParam1) { //24.4.2 ty 本次报告 case 0: SCRN_SetAddrTxtID (ADDR_TextReportDurat, TXT_ThisTime); dayCount = 0; break; case 1: SCRN_SetAddrTxtID (ADDR_TextReportDurat, TXT_1Days); dayCount = 1; break; case 2: SCRN_SetAddrTxtID (ADDR_TextReportDurat, TXT_7Days); dayCount = 7; break; case 3: SCRN_SetAddrTxtID (ADDR_TextReportDurat, TXT_1Month); dayCount = 31; break; } /* 24.4.3 单双水平报告分开 ty */ if (PAPRM_GetPapMode() == MODE_CPAP || PAPRM_GetPapMode() == MODE_APAP) { scrn_ReportMoreSingle(pScrnData, dayCount);//单水平 } else { scrn_ReportMoreDouble(pScrnData, dayCount);//双水平 } } else if (SCRN_IsPapSetPage(pScrnData)) { SCRN_LoadPapParamData(); //24.4.13 注释掉,放到模式界面跳转前 /*tmpVal = pScrnData->uPapModeBak; SCRN_SetAddrFoucus(ADDR_IconCommSel1, (tmpVal==MODE_CPAP) ? 1 : 0); SCRN_SetAddrFoucus(ADDR_IconCommSel2, (tmpVal==MODE_APAP) ? 1 : 0); SCRN_SetAddrFoucus(ADDR_IconCommSel3, (tmpVal==MODE_S) ? 1 : 0); SCRN_SetAddrFoucus(ADDR_IconCommSel4, (tmpVal==MODE_AUTOS) ? 1 : 0); SCRN_SetAddrFoucus(ADDR_IconCommSel5, (tmpVal==MODE_T) ? 1 : 0); SCRN_SetAddrFoucus(ADDR_IconCommSel6, (tmpVal==MODE_ST) ? 1 : 0);*/ } else if (tmpVal == PAGE_DeviceInfo_CN || tmpVal == PAGE_DeviceInfo_EN) { SYS_GetVersionInfo(dispStr, 1); SCRN_SetAddrText(ADDR_TextProductId, dispStr); SYS_GetVersionInfo(dispStr, 2); SCRN_SetAddrText(ADDR_TextHardWareVer, dispStr); SYS_GetVersionInfo(dispStr, 3); SCRN_SetAddrText(ADDR_TextSoftWareVer, dispStr); SYS_GetVersionInfo(dispStr, 4); SCRN_SetAddrText(ADDR_TextDwinDgusVer, dispStr); } else if (tmpVal == PAGE_MaskMatch_CN || tmpVal == PAGE_MaskMatch_EN) { // chg by gt 20231010 for 修改面罩适配流程 scrn_CheckMaskMatch(); } else if (tmpVal == PAGE_WarnEnable_CN || tmpVal == PAGE_WarnEnable_EN) { delay_us (10000); SCRN_SetAddrTxtID(ADDR_ListItem_1, SYS_GetWarnEnableState(WARN_EN_CircFault) ? TXT_On : TXT_Off); SCRN_SetAddrTxtID(ADDR_ListItem_2, SYS_GetWarnEnableState(WARN_EN_LowLeakage)? TXT_On : TXT_Off); SCRN_SetAddrTxtID(ADDR_ListItem_3, SYS_GetWarnEnableState(WARN_EN_MvTooLow) ? TXT_On : TXT_Off); SCRN_SetAddrTxtID(ADDR_ListItem_4, SYS_GetWarnEnableState(WARN_EN_VtTooLow) ? TXT_On : TXT_Off); SCRN_SetAddrTxtID(ADDR_ListItem_5, SYS_GetWarnEnableState(WARN_EN_Overheat) ? TXT_On : TXT_Off); SCRN_SetAddrTxtID(ADDR_ListItem_6, SYS_GetWarnEnableState(WARN_EN_AgingFilter) ? TXT_On : TXT_Off); SCRN_SetAddrTxtID(ADDR_ListItem_7, SYS_GetWarnEnableState(WARN_EN_AgingTank) ? TXT_On : TXT_Off); delay_us(10000); sprintf(dispStr, "%d", SYS_GetWarnLimitValue(WARN_EN_CircFault)); SCRN_SetAddrTextE(ADDR_ListItem_1_2, dispStr); sprintf(dispStr, "%d", SYS_GetWarnLimitValue(WARN_EN_MvTooLow)); SCRN_SetAddrTextE(ADDR_ListItem_3_2, dispStr); sprintf(dispStr, "%d", SYS_GetWarnLimitValue(WARN_EN_AgingFilter)); SCRN_SetAddrTextE(ADDR_ListItem_6_2, dispStr); sprintf(dispStr, "%d", SYS_GetWarnLimitValue(WARN_EN_AgingTank)); SCRN_SetAddrTextE (ADDR_ListItem_7_2, dispStr); delay_us (10000); tmpVal = SCRN_CurIconIdx (pScrnData) + 1; SCRN_SetAddrFoucus(ADDR_IconMenuFocus8, (tmpVal == 4 || tmpVal == 5)); SCRN_SetAddrFoucus(ADDR_IconMenuFocus9, (tmpVal == 8 || tmpVal == 9)); SCRN_SetAddrFoucus(ADDR_IconMenuFocus10, (tmpVal ==13 || tmpVal ==14)); SCRN_SetAddrFoucus(ADDR_IconMenuFocus11, (tmpVal ==16 || tmpVal ==17)); } else if (tmpVal == PAGE_WarnEnable2_CN || tmpVal == PAGE_WarnEnable2_EN) { delay_us (10000); SCRN_SetAddrTxtID(ADDR_ListItem_1, SYS_GetWarnEnableState(WARN_EN_ApneaAlam) ? TXT_On : TXT_Off); SCRN_SetAddrTxtID(ADDR_ListItem_2, SYS_GetWarnEnableState(WARN_EN_PressFault) ? TXT_On : TXT_Off); SCRN_SetAddrTxtID(ADDR_ListItem_3, SYS_GetWarnEnableState(WARN_EN_RrTooHigh) ? TXT_On : TXT_Off); SCRN_SetAddrTxtID(ADDR_ListItem_4, SYS_GetWarnEnableState(WARN_EN_WaterShort) ? TXT_On : TXT_Off); SCRN_SetAddrTxtID(ADDR_ListItem_5, SYS_GetWarnEnableState(WARN_EN_AgingTube) ? TXT_On : TXT_Off); SCRN_SetAddrTxtID(ADDR_ListItem_6, SYS_GetWarnEnableState(WARN_EN_AgingMask) ? TXT_On : TXT_Off); delay_us(10000); sprintf(dispStr, "%d", SYS_GetWarnLimitValue(WARN_EN_ApneaAlam)); SCRN_SetAddrTextE(ADDR_ListItem_1_2, dispStr); sprintf(dispStr, "%d", SYS_GetWarnLimitValue(WARN_EN_RrTooHigh)); SCRN_SetAddrTextE(ADDR_ListItem_3_2, dispStr); sprintf(dispStr, "%d", SYS_GetWarnLimitValue(WARN_EN_AgingTube)); SCRN_SetAddrTextE(ADDR_ListItem_5_2, dispStr); sprintf(dispStr, "%d", SYS_GetWarnLimitValue(WARN_EN_AgingMask)); SCRN_SetAddrTextE(ADDR_ListItem_6_2, dispStr); delay_us (10000); tmpVal = SCRN_CurIconIdx (pScrnData) + 1; SCRN_SetAddrFoucus(ADDR_IconMenuFocus8, (tmpVal == 4 || tmpVal == 5)); SCRN_SetAddrFoucus(ADDR_IconMenuFocus9, (tmpVal == 8 || tmpVal == 9)); SCRN_SetAddrFoucus(ADDR_IconMenuFocus10, (tmpVal ==12 || tmpVal ==13)); SCRN_SetAddrFoucus(ADDR_IconMenuFocus11, (tmpVal ==15 || tmpVal ==16)); } else if (tmpVal == PAGE_WarnList_CN || tmpVal == PAGE_WarnList_EN) { u16 i; for (i = 0; i < 7; i++) { LOG_GetLogRecByIdx(&pScrnData->aLogList[i], pScrnData->uLogPage * 7 + i + 1); if (pScrnData->aLogList[i].DateTime[0]) { delay_us(20000); tmpVal = pScrnData->aLogList[i].fRelayVal * 100; sprintf(dispStr, "%02d%02d%02d-%02d%02d%02d", pScrnData->aLogList[i].DateTime[0], pScrnData->aLogList[i].DateTime[1], pScrnData->aLogList[i].DateTime[2], pScrnData->aLogList[i].DateTime[3], pScrnData->aLogList[i].DateTime[4], pScrnData->aLogList[i].DateTime[5]); if (pScrnData->aLogList[i].uLogCode == WARN_FLOW_HIGH_2) { uint32_t temp_1 = 0, temp_2 = 0; temp_1 = (((uint32_t)pScrnData->aLogList[i].fRelayVal) & 0xFFFF0000) >> 16; temp_2 = ((uint32_t)pScrnData->aLogList[i].fRelayVal) & 0xFFFF; sprintf(&dispStr[13], " %s F=%d P=%d", DISP_GetTxtPtr(pScrnData->aLogList[i].uLogCode), temp_1, temp_2); } else { sprintf(&dispStr[13], " %s", DISP_GetTxtPtr(pScrnData->aLogList[i].uLogCode)); } SCRN_SetAddrTextE(ADDR_ListItem_1 + i * 48, dispStr); } else { SCRN_SetAddrTxtID(ADDR_ListItem_1 + i * 48, TXT_Blank); } } } else if (tmpVal == PAGE_Engineer_CN) { pScrnData->iUpdateFlag = 3; delay_us(10000); sprintf(dispStr, "%d", s_sAuxPage.sParam1); SCRN_SetAddrTextE(ADDR_TextComfPreHeat, dispStr); sprintf(dispStr, "%d.%d", s_sAuxPage.sParam2 / 10, s_sAuxPage.sParam2 % 10); SCRN_SetAddrTextE(ADDR_TextComfRampIpap, dispStr); sprintf(dispStr, "%d", s_sAuxPage.sParam3); SCRN_SetAddrTextE(ADDR_TextComfHumiLevel, dispStr); sprintf(dispStr, "%d", s_sAuxPage.sParam4); SCRN_SetAddrTextE(ADDR_TextComfTubeTempe, dispStr); delay_us(10000); tmpVal = SCRN_CurIconIdx (pScrnData) + 1; SCRN_SetAddrFoucus(ADDR_IconMenuFocus1, (tmpVal == 4 || tmpVal == 5)); SCRN_SetAddrFoucus(ADDR_IconMenuFocus2, (tmpVal == 6 || tmpVal == 7)); SCRN_SetAddrFoucus(ADDR_IconMenuFocus3, (tmpVal == 8 || tmpVal == 9)); SCRN_SetAddrFoucus(ADDR_IconMenuFocus4, (tmpVal == 10 || tmpVal == 11)); if (pScrnData->sParam1 == 0) { delay_us(10000); sprintf(dispStr, "%s", "Flow Ad"); SCRN_SetAddrTextE(ADDR_ListItem_1, dispStr); tmpVal = Get_SmpAD(SMP_SNS_MixFlow) * 10; sprintf(dispStr, "%d.%d", tmpVal / 10, tmpVal % 10); SCRN_SetAddrTextE(ADDR_ListItem_1_2, dispStr); sprintf(dispStr, "%s", "Flow(L/min)"); SCRN_SetAddrTextE(ADDR_ListItem_2, dispStr); tmpVal = Get_FilteredSmpValue(SMP_SNS_MixFlow) * 10; sprintf (dispStr, "%d.%d", tmpVal / 10, tmpVal % 10); SCRN_SetAddrTextE (ADDR_ListItem_2_2, dispStr); delay_us(10000); sprintf(dispStr, "%s", "Prs Turbo Ad"); SCRN_SetAddrTextE(ADDR_ListItem_3, dispStr); tmpVal = Get_SmpAD(SMP_SNS_Prs_Tur) * 10; sprintf(dispStr, "%d.%d", tmpVal / 10, tmpVal % 10); SCRN_SetAddrTextE(ADDR_ListItem_3_2, dispStr); sprintf(dispStr, "%s", "Prs Turbo(hPa)"); SCRN_SetAddrTextE(ADDR_ListItem_4, dispStr); tmpVal = Get_FilteredSmpValue(SMP_SNS_Prs_Tur) * 10; sprintf(dispStr, "%d.%d", tmpVal / 10, tmpVal % 10); SCRN_SetAddrTextE(ADDR_ListItem_4_2, dispStr); delay_us(10000); sprintf(dispStr, "%s", "Air Press(hPa)"); SCRN_SetAddrTextE(ADDR_ListItem_5, dispStr); tmpVal = Get_SmpAD(SMP_SNS_AIR_Prs) / 10; sprintf(dispStr, "%d.%d", tmpVal / 10, tmpVal % 10); SCRN_SetAddrTextE(ADDR_ListItem_5_2, dispStr); sprintf (dispStr, "%s", "Air Temper()"); SCRN_SetAddrTextE (ADDR_ListItem_6, dispStr); tmpVal = Get_FilteredSmpValue(SMP_SNS_AIR_Temp); sprintf(dispStr, "%d", tmpVal); SCRN_SetAddrTextE(ADDR_ListItem_6_2, dispStr); sprintf(dispStr, "%s", "Air Humidi(%)"); SCRN_SetAddrTextE(ADDR_ListItem_7, dispStr); tmpVal = Get_FilteredSmpValue(SMP_SNS_AIR_Humi); sprintf(dispStr, "%d", tmpVal); SCRN_SetAddrTextE(ADDR_ListItem_7_2, dispStr); } else if (pScrnData->sParam1 == 1) { sprintf (dispStr, "%s", "Tank Temper Ad"); SCRN_SetAddrTextE (ADDR_ListItem_1, dispStr); tmpVal = Get_SmpAD(SMP_SNS_Heat_Temp) * 10; sprintf (dispStr, "%d.%d", tmpVal / 10, tmpVal % 10); SCRN_SetAddrTextE (ADDR_ListItem_1_2, dispStr); sprintf (dispStr, "%s", "Tank Temper()"); SCRN_SetAddrTextE (ADDR_ListItem_2, dispStr); tmpVal = Get_FilteredSmpValue (SMP_SNS_Heat_Temp) * 10; sprintf (dispStr, "%d.%d", tmpVal / 10, tmpVal % 10); SCRN_SetAddrTextE (ADDR_ListItem_2_2, dispStr); delay_us (10000); sprintf (dispStr, "%s", "Tube Temper Ad"); SCRN_SetAddrTextE (ADDR_ListItem_3, dispStr); tmpVal = Get_SmpAD(SMP_SNS_Pat_Temp) * 10; sprintf (dispStr, "%d.%d", tmpVal / 10, tmpVal%10); SCRN_SetAddrTextE (ADDR_ListItem_3_2, dispStr); sprintf (dispStr, "%s", "Tube Temper()"); SCRN_SetAddrTextE (ADDR_ListItem_4, dispStr); tmpVal = Get_FilteredSmpValue (SMP_SNS_Pat_Temp) * 10; sprintf (dispStr, "%d.%d", tmpVal / 10, tmpVal% 10); SCRN_SetAddrTextE (ADDR_ListItem_4_2, dispStr); delay_us (10000); sprintf (dispStr, "%s", "Motor Current(mA)"); SCRN_SetAddrTextE (ADDR_ListItem_5, dispStr); tmpVal = Get_FilteredSmpValue (SMP_SNS_Tur_CRNT) * 1000; sprintf (dispStr, "%d", tmpVal); SCRN_SetAddrTextE (ADDR_ListItem_5_2, dispStr); sprintf (dispStr, "%s", "Motor Voltage(V)"); SCRN_SetAddrTextE (ADDR_ListItem_6, dispStr); tmpVal = Get_FilteredSmpValue (SMP_SNS_AC_ADC); sprintf (dispStr, "%d", tmpVal); SCRN_SetAddrTextE (ADDR_ListItem_6_2, dispStr); sprintf (dispStr, "%s", "Motor Speed(kRpm)"); SCRN_SetAddrTextE (ADDR_ListItem_7, dispStr); tmpVal = Get_FilteredSmpValue (SMP_SNS_Tur_RPM) * 10; sprintf (dispStr, "%d.%d", tmpVal / 10, tmpVal % 10); SCRN_SetAddrTextE (ADDR_ListItem_7_2, dispStr); } else if (pScrnData->sParam1 == 2) { sprintf(dispStr, "%s", "Motor Temper Ad"); SCRN_SetAddrTextE (ADDR_ListItem_1, dispStr); tmpVal = Get_SmpAD(SMP_SNS_Tur_Temp) * 10; sprintf(dispStr, "%d.%d", tmpVal / 10, tmpVal % 10); SCRN_SetAddrTextE (ADDR_ListItem_1_2, dispStr); sprintf(dispStr, "%s", "Motor Temper()"); SCRN_SetAddrTextE (ADDR_ListItem_2, dispStr); tmpVal = Get_FilteredSmpValue(SMP_SNS_Tur_Temp) * 10; sprintf(dispStr, "%d.%d", tmpVal / 10, tmpVal % 10); SCRN_SetAddrTextE (ADDR_ListItem_2_2, dispStr); delay_us (10000); SCRN_SetAddrTxtID(ADDR_ListItem_3, TXT_Blank); SCRN_SetAddrTxtID(ADDR_ListItem_3_2, TXT_Blank); SCRN_SetAddrTxtID(ADDR_ListItem_4, TXT_Blank); SCRN_SetAddrTxtID(ADDR_ListItem_4_2, TXT_Blank); delay_us (10000); SCRN_SetAddrTxtID(ADDR_ListItem_5, TXT_Blank); SCRN_SetAddrTxtID(ADDR_ListItem_5_2, TXT_Blank); SCRN_SetAddrTxtID(ADDR_ListItem_6, TXT_Blank); SCRN_SetAddrTxtID(ADDR_ListItem_6_2, TXT_Blank); SCRN_SetAddrTxtID(ADDR_ListItem_7, TXT_Blank); SCRN_SetAddrTxtID(ADDR_ListItem_7_2, TXT_Blank); } } else if (tmpVal == PAGE_Engineer2_CN) { pScrnData->iUpdateFlag = 5; u16 temp_Type = SYS_GetReserveValue(RESE_DeviceType); switch (temp_Type) { case 0: strcpy(dispStr, "30Pro"); break; case 1: strcpy(dispStr, "30PC"); break; case 2: strcpy(dispStr, "30T"); break; case 3: strcpy(dispStr, "30S"); break; case 4: strcpy(dispStr, "25Pro"); break; case 5: strcpy(dispStr, "25PC"); break; case 6: strcpy(dispStr, "25S"); break; case 7: strcpy(dispStr, "20A"); break; case 8: strcpy(dispStr, "20"); break; case 9: default: SYS_SetReserveValue(RESE_DeviceType, 9); strcpy(dispStr, "30OEM");//24.5.14 特殊定制增加新型号 ty break; } SCRN_SetAddrTextE(ADDR_ListItem_1, dispStr); s_sAuxPage.sParam2 = SYS_GetReserveValue(RESE_TubeType); if (s_sAuxPage.sParam2 == -1) { s_sAuxPage.sParam2 = 0; } if (s_sAuxPage.sParam2 == 0) { sprintf(dispStr, "%s", "Rongrui"); } else { sprintf(dispStr, "%s", "Ansenwei"); } SCRN_SetAddrTextE(ADDR_ListItem_2, dispStr); s_sAuxPage.sParam3 = SYS_GetReserveValue(RESE_MaskType); if (s_sAuxPage.sParam3 == -1) { s_sAuxPage.sParam3 = 0; } if (s_sAuxPage.sParam3 == 0) { sprintf(dispStr, "%s", "Ansenwei"); } else { sprintf(dispStr, "%s", "Kaiditai"); } SCRN_SetAddrTextE(ADDR_ListItem_3, dispStr); /* 24.6.4 增加流量传感器型号选择 ty */ s_sAuxPage.sParam4 = SYS_GetReserveValue(RESE_FlowType); if (s_sAuxPage.sParam4 == -1) { s_sAuxPage.sParam4 = 0; } if (s_sAuxPage.sParam4 == 0) { sprintf(dispStr, "%s", "SDP"); } else { sprintf(dispStr, "%s", "ADP"); } SCRN_SetAddrTextE(ADDR_ListItem_4, dispStr); SCRN_SetAddrTxtID(ADDR_ListItem_5, TXT_Jump); /*delay_us(10000); tmpVal = SCRN_CurIconIdx (pScrnData) + 1; SCRN_SetAddrFoucus(ADDR_IconMenuFocus1, (tmpVal == 2 || tmpVal == 3)); SCRN_SetAddrFoucus(ADDR_IconMenuFocus2, (tmpVal == 4 || tmpVal == 5)); SCRN_SetAddrFoucus(ADDR_IconMenuFocus3, (tmpVal == 6 || tmpVal == 7));*/ } else if (tmpVal == PAGE_Engineer3_CN) { s16 tmpVal2; pScrnData->iUpdateFlag = 1; tmpVal = CLBRT_GetCalibType(); tmpVal2 = CLBRT_GetProgress(); if (tmpVal == PF300_FLOW_HIGH) { if (tmpVal2 < 0) { sprintf(dispStr, "%s", "ready"); } else { sprintf(dispStr, "%d%%", tmpVal2); } } else { sprintf(dispStr, "%s", " "); } SCRN_SetAddrTextE(ADDR_ListItem_1, dispStr); if (tmpVal == PF300_PRESS_DIFF) { if (tmpVal2 < 0) { sprintf(dispStr, "%s", "ready"); } else { sprintf(dispStr, "%d%%", tmpVal2); } } else { sprintf(dispStr, "%s", " "); } SCRN_SetAddrTextE(ADDR_ListItem_2, dispStr); sprintf(dispStr, "%s", " "); SCRN_SetAddrTextE(ADDR_ListItem_3, dispStr); CLBRT_Process(); if (tmpVal == PF300_FLOW_HIGH) { sprintf (dispStr, "%s", "流量校准,保持PF300出气口畅通"); } else if (tmpVal == PF300_PRESS_DIFF) { sprintf (dispStr, "%s", "压力校准,保持PF300出气口封闭"); } SCRN_SetAddrText(ADDR_TextWarnText, dispStr); scrn_4G_Test();// 24.11.29 add by ty: 4G test display tip to product } else if (tmpVal == PAGE_PassWdPop_CN) { SCRN_SetAddrFoucus(ADDR_Pwd_Hide, (s_sAuxPage.DstPage != PAGE_Engineer_CN));//无线密码位数隐藏 24.11.28 ty SCRN_SetAddrFoucus(ADDR_IconPwdDisp1, (s_sAuxPage.iPwdCount >= 1)); SCRN_SetAddrFoucus(ADDR_IconPwdDisp2, (s_sAuxPage.iPwdCount >= 2)); SCRN_SetAddrFoucus(ADDR_IconPwdDisp3, (s_sAuxPage.iPwdCount >= 3)); SCRN_SetAddrFoucus(ADDR_IconPwdDisp4, (s_sAuxPage.iPwdCount >= 4)); SCRN_SetAddrFoucus(ADDR_IconPwdDisp5, (s_sAuxPage.iPwdCount >= 5)); SCRN_SetAddrFoucus(ADDR_IconPwdDisp6, (s_sAuxPage.iPwdCount >= 6)); } else if (tmpVal == PAGE_DataAdj_CN) { scrn_AdjByKnob_show(pScrnData, AdjByKnob); } else if (tmpVal == PAGE_TemperSet_CN || tmpVal == PAGE_TemperSet_EN) { scrn_AdjByKnob_show(pScrnData, AdjByKnob_Temp); } else if (tmpVal == PAGE_VerInfo_CN) { scrn_VerInfo(dispStr); } //无线连接 else if (tmpVal == PAGE_Wireless_CN || tmpVal == PAGE_Wireless_EN) { SCRN_SetAddrTxtID(ADDR_ListItem_1, TXT_Jump); SCRN_SetAddrTxtID(ADDR_ListItem_2, SYS_GetDataUploadState() ? TXT_On : TXT_Off); } // 4G else if (tmpVal == PAGE_4G_CN || tmpVal == PAGE_4G_EN) { scrn_4G(dispStr); } else if (tmpVal == PAGE_EvapsSet_CN) { scrn_Evaps(); } } 详细解读这段代码
最新发布
11-08
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值