⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s_integratemodel.c

📁 dragon ball vz328 上的一个例子程序。 用于做手持仪表用。
💻 C
📖 第 1 页 / 共 3 页
字号:
                } else if (id==BtnCancelId) {
                    if (AdvMessageDelete(DelRecAppID, IRPT_ICON, -1)
                        != PPSM_OK) rv = PPSM_ERROR;
                    if (AdvSendMessage(LstRecContentAppID, NULL, SWAP_TASK)
                        != PPSM_OK) rv= PPSM_ERROR;
                    break;
                }
            }
        default:
            break;
        }
    }
}
/******************************************************
**查询记录任务
******************************************************/
void QryRecApp(void)
{
    P_U16   inData;
    U32     size, id;
    S16     xSrc, ySrc, xDest, yDest;
    U16     gCursorXPos;
    U16     gCursorYPos;
    U8      tmpRecId[12],i,ErrorFlag;
    U8      KeyVal,StarNum;
    U32     ButtonOkId, ButtonCancelId, ShowAllDataId;
    TEXT    ButtonOkTxt[]={'确','定',0};
    TEXT    ButtonCancelTxt[]={'取','消',0};
    TEXT    InputMeterTxt[]={'请','输','入','要','查','询','的','编','号',':',0};
    TEXT    InputErrorTxt[]={'输','入','错','误',',','请','重','新','输','入','!',0};
    TEXT    NoFoundInputRecTxt[]={'没','有','要','查','找','的','记','录','!',0};

    ErrorFlag=0;
ReStartFlag:
    ClearScreen(WHITE);
    if (ErrorFlag==0) {
        Typing(GB_NORMAL_FONT, REPLACE_STYLE, BLACK, 20, 10, (P_U8)InputMeterTxt);
    } else if (ErrorFlag==1) {
        Typing(GB_NORMAL_FONT, REPLACE_STYLE, BLACK, 20, 10, (P_U8)InputErrorTxt);
    } else if (ErrorFlag==2) {
        Typing(GB_NORMAL_FONT, REPLACE_STYLE, BLACK, 20, 10, (P_U8)NoFoundInputRecTxt);
    }
    for (i=0;i<12;i++) {
        tmpRecId[i]=0;
    }
    gCursorXPos=38;
    gCursorYPos=160;
    StarNum=0;
    ClearRec(WHITE,35,80,20,90,REPLACE_STYLE);            
    DrawRec(BLACK, 35,80,55,170,0,REPLACE_STYLE);   
    CursorInit(16,8);
    CursorSetStatus(PPSM_CURSOR_REVERSED);
    CursorSetBlink(5);
    CursorSetPos(gCursorXPos,gCursorYPos);
    //创建数字软键盘
    KeyPadFunction_letter (150);
    if (TextButton(&ButtonOkId,GB_NORMAL_FONT,(P_TEXT)ButtonOkTxt,40, 284, 60, 35, 1)          
        !=PPSM_OK) rv=PPSM_ERROR;
    if (TextButton(&ButtonCancelId,GB_NORMAL_FONT,(P_TEXT)ButtonCancelTxt,140, 284, 60, 35, 1)          
        !=PPSM_OK) rv=PPSM_ERROR;
    CkeckCutButtonFlag=0;
    ElWorkCount=0;
    SetPeriod(RTC_PERI_SECOND);    
    while (1) {
        switch (IrptGetData((P_U32)&id, (P_U32*)&inData, (P_U32)&size)) {
        case IRPT_RTC:
            Elcheck();
            CutDownCheck();
            break; 
        case IRPT_ICON:                 
            if (ActiveAreaRead(id,&xSrc,&ySrc,&xDest,&yDest) 
                != PPSM_OK) rv = PPSM_ERROR;
            if (InvRec(xSrc+1,ySrc+1,(xDest-(xSrc+1)),(yDest-(ySrc+1)))
                != PPSM_OK) rv = PPSM_ERROR;
            if (*inData == PPSM_ICON_PEN_UP) {
                EL_Open(); 
                BUZZER_ON();
                if (id==ButtonOkId) {
                    if (StarNum==0) {
                        ErrorFlag=1;
                        goto ReStartFlag;
                    } else {
                        CurrRecPoint=SearchRec(tmpRecId);
                        if (CurrRecPoint==0xFFFF) {
                            ErrorFlag=2;
                            goto ReStartFlag;
                        } else {
                            CursorOff();
                            if (AdvMessageDelete(QryRecAppID, IRPT_ICON, -1)
                                != PPSM_OK) rv = PPSM_ERROR;
                            if (AdvSendMessage(LstRecContentAppID, NULL, SWAP_TASK)
                                != PPSM_OK) rv= PPSM_ERROR;
                        }
                    }
                    break;
                } else if (id==ButtonCancelId) {
                    CursorOff();
                    if (AdvMessageDelete(DelRecAppID, IRPT_ICON, -1)
                        != PPSM_OK) rv = PPSM_ERROR;
                    if (AdvSendMessage(IntegrateModelAppID, NULL, SWAP_TASK)
                        != PPSM_OK) rv= PPSM_ERROR;
                    break;
                } else {
                    KeyVal=GetKeyChar_Letter(id); 
                    if (KeyVal!=0) {
                        if (KeyVal==11) {
                            if (StarNum>0) {
                                ClearRec(WHITE,36,81,18,88,REPLACE_STYLE);
                                StarNum--;
                                tmpRecId[StarNum]=0;
                                gCursorYPos=gCursorYPos+8;
                                CursorSetPos(gCursorXPos,gCursorYPos); 
                                Typing(GB_NORMAL_FONT, REPLACE_STYLE, BLACK, 72, 38, (P_U8)tmpRecId);
                            }
                        } else {
                            if (StarNum<11) {
                                tmpRecId[StarNum]=KeyVal;
                                StarNum++;
                                ClearRec(WHITE,36,81,18,88,REPLACE_STYLE);
                                gCursorYPos=gCursorYPos-8;
                                CursorSetPos(gCursorXPos,gCursorYPos); 
                                Typing(GB_NORMAL_FONT, REPLACE_STYLE, BLACK, 72, 38, (P_U8)tmpRecId);
                            }
                        }
                    }
                    break;
                }
            }
        default:
            break;
        }
    }
}
/******************************************************
**保存数据函数
**存储数据格式:!!RecNo@@RecData??????
******************************************************/
void SaveData(void)
{
    U16   i,j,tmpVal,tmpLen,DataFullFlag;
    U32   IncDataAddr;
    TEXT  NowSavingTxt[]={'正','在','存','储','数','据',',','请','稍','候','..','. ',0};

    ClearScreen(WHITE);
    Typing(GB_NORMAL_FONT, REPLACE_STYLE, BLACK, 5, 150, (P_U8)NowSavingTxt);
    ram_perase_sector(16);
    IncDataAddr=0;
    DataFullFlag=0;
    if (TestRecCount>0) {
        for (i=0;i<TestRecCount;i++) {
            if (RECDATAADDR+IncDataAddr+24>MAXRECDATAADDR) {
                for (j=0;j<6;j++) {
                    if (j%2==0) {
                        tmpVal=0x3F;
                    } else {
                        tmpVal<<=8;
                        tmpVal|=0x3F;
                        ram_pwrite_word(RECDATAADDR+2*IncDataAddr, (U16)tmpVal);
                        IncDataAddr++;
                    }
                }
                DataFullFlag=1;
                break;
            } else {
                if (TestRecData[i].DelFlag==0) {
                    tmpVal='!';
                    tmpVal<<=8;
                    tmpVal|='!';
                    ram_pwrite_word(RECDATAADDR+2*IncDataAddr, (U16)tmpVal);
                    IncDataAddr++;
                    tmpLen=U8len(TestRecData[i].RecNo);
                    tmpVal=0;
                    if (tmpLen%2==0) {
                        for (j=0;j<tmpLen;j++) {
                            if (j%2==0) {
                                tmpVal=TestRecData[i].RecNo[j];
                            } else {
                                tmpVal<<=8;
                                tmpVal|=TestRecData[i].RecNo[j];
                                ram_pwrite_word(RECDATAADDR+2*IncDataAddr, (U16)tmpVal);
                                IncDataAddr++;
                            }
                        }
                    } else {
                        if (tmpLen==1) {
                            tmpVal=TestRecData[i].RecNo[0];
                        } else {
                            for (j=0;j<tmpLen-1;j++) {
                                if (j%2==0) {
                                    tmpVal=TestRecData[i].RecNo[j];
                                } else {
                                    tmpVal<<=8;
                                    tmpVal|=TestRecData[i].RecNo[j];
                                    ram_pwrite_word(RECDATAADDR+2*IncDataAddr, (U16)tmpVal);
                                    IncDataAddr++;
                                }
                            }
                        }
                        tmpVal<<=8;
                        tmpVal|=0;
                        ram_pwrite_word(RECDATAADDR+2*IncDataAddr, (U16)tmpVal);
                        IncDataAddr++;
                    }
                    tmpVal='@';
                    tmpVal<<=8;
                    tmpVal|='@';
                    ram_pwrite_word(RECDATAADDR+2*IncDataAddr, (U16)tmpVal);
                    IncDataAddr++;
                    tmpLen=U8len(TestRecData[i].RecData);
                    tmpVal=0;
                    if (tmpLen%2==0) {
                        for (j=0;j<tmpLen;j++) {
                            if (j%2==0) {
                                tmpVal=TestRecData[i].RecData[j];
                            } else {
                                tmpVal<<=8;
                                tmpVal|=TestRecData[i].RecData[j];
                                ram_pwrite_word(RECDATAADDR+2*IncDataAddr, (U16)tmpVal);
                                IncDataAddr++;
                            }
                        }
                    } else {
                        if (tmpLen==1) {
                            tmpVal=TestRecData[i].RecData[0];
                        } else {
                            for (j=0;j<tmpLen-1;j++) {
                                if (j%2==0) {
                                    tmpVal=TestRecData[i].RecData[j];
                                } else {
                                    tmpVal<<=8;
                                    tmpVal|=TestRecData[i].RecData[j];
                                    ram_pwrite_word(RECDATAADDR+2*IncDataAddr, (U16)tmpVal);
                                    IncDataAddr++;
                                }
                            }
                        }
                        tmpVal<<=8;
                        tmpVal|=0;
                        ram_pwrite_word(RECDATAADDR+2*IncDataAddr, (U16)tmpVal);
                        IncDataAddr++;
                    }

                }
            }
        }
        if (DataFullFlag==0) {
            for (j=0;j<6;j++) {
                if (j%2==0) {
                    tmpVal=0x3F;
                } else {
                    tmpVal<<=8;
                    tmpVal|=0x3F;
                    ram_pwrite_word(RECDATAADDR+2*IncDataAddr, (U16)tmpVal);
                    IncDataAddr++;
                }
            }
        }
    } else {
        for (j=0;j<6;j++) {
            if (j%2==0) {
                tmpVal=0x3F;
            } else {
                tmpVal<<=8;
                tmpVal|=0x3F;
                ram_pwrite_word(RECDATAADDR+2*IncDataAddr, (U16)tmpVal);
                IncDataAddr++;
            }
        }
    }
    return;
}
/******************************************************
**初始化数据函数,加载到内存结构中
******************************************************/
void InitData(void)
{
    U32  IncDataAddr,i;

    IncDataAddr=RECDATAADDR;
    TestRecCount=0;
    while (*(P_U8)IncDataAddr!=0xFF && *(P_U8)IncDataAddr!='?' && IncDataAddr < MAXRECDATAADDR) {
        for (i=0;i<12;i++) {
            TestRecData[TestRecCount].RecNo[i]=0;
            TestRecData[TestRecCount].RecData[i]=0;
        }
        TestRecData[TestRecCount].DelFlag=0;
        if (*(P_U8)IncDataAddr=='!' && *(P_U8)(IncDataAddr+1)=='!') {
            IncDataAddr++;
            IncDataAddr++;
            i=0;
            while (*(P_U8)IncDataAddr!='!' && *(P_U8)IncDataAddr!='@' && *(P_U8)IncDataAddr!='?' &&
                   *(P_U8)IncDataAddr!=0xFF && i<10) {
                TestRecData[TestRecCount].RecNo[i]=*(P_U8)IncDataAddr;
                IncDataAddr++;
                i++;
            }
        }
        if (*(P_U8)IncDataAddr=='@' && *(P_U8)(IncDataAddr+1)=='@') {
            IncDataAddr++;
            IncDataAddr++;
            i=0;
            while (*(P_U8)IncDataAddr!='!' && *(P_U8)IncDataAddr!='@' && *(P_U8)IncDataAddr!='?' &&
                   *(P_U8)IncDataAddr!=0xFF && i<10) {
                TestRecData[TestRecCount].RecData[i]=*(P_U8)IncDataAddr;
                IncDataAddr++;
                i++;
            }
            TestRecCount++;
        } else {
            IncDataAddr++;
        }
    }
}
/******************************************************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -