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

📄 s_menutask.c

📁 dragon ball vz328 上的一个例子程序。 用于做手持仪表用。
💻 C
字号:
#ifndef VZ328
#define VZ328
#endif
#include <stdlib.h>
#include <M68328.h>
#include <ppsm.h>
#include <errors.h>
#include <proto.h>
#include "sample.h"
#include "tools.h"
#include "main.h"
#include "Sunray.h"

void MenuTaskApp(void)
{
    P_U16   inData;
    U32     size, id;
    S16     xSrc, ySrc, xDest, yDest;
    U16     ShowNowTime[7];
    U8      tmpVal;
    U32     ReadMeterDataId,MeterDataManageId,TestCommunicateId,SystemSetId,CloseId,IntegrateModelId;
    TEXT    welcomtxt[]={'欢','迎','使','用','抄','表','系','统',0};
//    TEXT    ReadMeterDataTxt[]={'实','例','一',0};
//    TEXT    MeterDataManageTxt[]={'实','例','二',0};
    TEXT    TestCommunicateTxt[]={'通','信','实','例',0};
    TEXT    IntegrateModelTxt[]={'数','据','实','例',0};
    TEXT    SystemSetTxt[]={'系','统','设','置',0};
    TEXT    CloseTxt[]={'关','机',0};

ReStartFlag:
    ClearScreen(WHITE);
    Typing(GB_NORMAL_FONT, REPLACE_STYLE, BLACK, 50, 2, (P_U8)welcomtxt);
    /**
    if (TextButton(&ReadMeterDataId, GB_NORMAL_FONT,(P_TEXT)ReadMeterDataTxt, 30, 30, 180, 35, 1)
        != PPSM_OK) rv=PPSM_ERROR;
    if (TextButton(&MeterDataManageId, GB_NORMAL_FONT,(P_TEXT)MeterDataManageTxt, 30, 70, 180, 35, 1)
        != PPSM_OK) rv=PPSM_ERROR;
    **/
    if (TextButton(&TestCommunicateId, GB_NORMAL_FONT,(P_TEXT)TestCommunicateTxt, 30, 30, 180, 35, 1)
        != PPSM_OK) rv=PPSM_ERROR;
    if (TextButton(&IntegrateModelId, GB_NORMAL_FONT,(P_TEXT)IntegrateModelTxt, 30, 70, 180, 35, 1)
        != PPSM_OK) rv=PPSM_ERROR;
    if (TextButton(&SystemSetId, GB_NORMAL_FONT,(P_TEXT)SystemSetTxt, 30, 190, 180, 35, 1)
        != PPSM_OK) rv=PPSM_ERROR;
    if (TextButton(&CloseId, GB_NORMAL_FONT,(P_TEXT)CloseTxt, 30, 230, 180, 35, 1)
        != PPSM_OK) rv=PPSM_ERROR;
    PreVoltageProcess2();
    CkeckCutButtonFlag=0;
    ElWorkCount=0;
    SetPeriod(RTC_PERI_SECOND);    
    while (1) {
        switch (IrptGetData((P_U32)&id, (P_U32*)&inData, (P_U32)&size)) {
        case IRPT_RTC:
            tmpVal=ReadPenIRQFlagValue();
            if (tmpVal==0) {
                VoltageProcess2();
            }
            AnyGetTime(ShowNowTime); 
            DisplayTimeOt(ShowNowTime);
            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==ReadMeterDataId) {
                    if (AdvMessageDelete(MenuTaskAppID, IRPT_ICON, -1)
                        !=PPSM_OK) rv = PPSM_ERROR;
                    if (AdvSendMessage(QueryDataAppID, NULL, SWAP_TASK) 
                        != PPSM_OK) rv= PPSM_ERROR;
                    break;
                } else if (id==TestCommunicateId) {
                    ASDPLength=CommPackage();
                    AppSwap(FALSE);
                    if (MessageDelete(-1)!= PPSM_OK) rv= PPSM_ERROR;
                    CommunicationApp();
                    AppSwap(TRUE);   
                    goto ReStartFlag;
                } else if (id==MeterDataManageId) {
                    if (AdvMessageDelete(MenuTaskAppID, IRPT_ICON, -1)
                        !=PPSM_OK) rv = PPSM_ERROR;
                    if (AdvSendMessage(ListUserAllDataAppID, NULL, SWAP_TASK) 
                        != PPSM_OK) rv= PPSM_ERROR;
                     break;
                } else if (id==IntegrateModelId) {
                    if (AdvMessageDelete(MenuTaskAppID, IRPT_ICON, -1)
                        != PPSM_OK) rv = PPSM_ERROR;
                    if (AdvSendMessage(IntegrateModelAppID, NULL, SWAP_TASK)
                        != PPSM_OK) rv= PPSM_ERROR;
                    break;
                } else if (id==SystemSetId) {
                    if (AdvMessageDelete(MenuTaskAppID, IRPT_ICON, -1)
                        !=PPSM_OK) rv = PPSM_ERROR;
                    if (AdvSendMessage(SystemSetAppID, NULL, SWAP_TASK) 
                        != PPSM_OK) rv= PPSM_ERROR;
                    break;
                } else if (id==CloseId) {
                    if (AdvMessageDelete(MenuTaskAppID, IRPT_ICON, -1)
                        !=PPSM_OK) rv = PPSM_ERROR;
                    if (AdvSendMessage(ShutDownAppID, NULL, SWAP_TASK) 
                        != PPSM_OK) rv= PPSM_ERROR;
                    break;
                }
            }
        default:
            break;
        }
    }
}

void QueryDataApp(void)
{
    P_U16   inData;
    U32     size, id;
    S16     xSrc, ySrc, xDest, yDest;
    U16     gCursorXPos;
    U16     gCursorYPos;
    U8      tmpRecId[12],i;
    U8      KeyVal,StarNum;
    U32     ButtonOkId, ButtonCancelId, ShowAllDataId;
    TEXT    ButtonOkTxt[]={'确','定',0};
    TEXT    ButtonCancelTxt[]={'取','消',0};
    TEXT    InputMeterTxt[]={'请','输','入','要','查','询','的','编','号',':',0};
    TEXT    InputErrorTxt[]={'输','入','错','误',',','请','重','新','输','入','!',0};

    ReStartFlag:
    ClearScreen(WHITE);
    for (i=0;i<12;i++) {
        tmpRecId[i]=0;
    }
    gCursorXPos=38;
    gCursorYPos=160;
    StarNum=0;
    Typing(GB_NORMAL_FONT, REPLACE_STYLE, BLACK, 20, 10, (P_U8)InputMeterTxt);
    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) {
                    //确定事件
                    break;
                } else if (id==ButtonCancelId) {
                    CursorOff();
                    if (AdvMessageDelete(QueryDataAppID, IRPT_ICON, -1)
                        !=PPSM_OK) rv = PPSM_ERROR;
                    if (AdvSendMessage(MenuTaskAppID, 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;
        }
    }
}

void ListUserAllDataApp(void)
{
    U32       i,j;  
    P_U16     inData;
    U32       size, id;
    U8        Title1Txt[12],Title2Txt[12];
    S16       xSrc, ySrc, xDest, yDest;  
    U32       UserItemId[MENUNUM], UpPageId, DownPageId, CancelId;
    TEXT      ElecMeterTxt[]={'电','子','表','号',0};
    TEXT      CollectorTxt[]={'集','中','器','号',0};
    TEXT      UpPageTxt[]={'上','页',0};
    TEXT      DownPageTxt[]={'下','页',0};
    TEXT      CancelTxt[]={'取','消',0};
    U8        tmpCount;
    U8        PageNum;

    PageNum=0;
    tmpCount=15;
    CurrRecIndex=0;
    for (i=0;i<12;i++) {
        Title1Txt[i]=0;
        Title2Txt[i]=0;
    }
    for (i=0;i<10;i++) {
        Title1Txt[i]='1';
        Title2Txt[i]='2';
    }
    ReDisPlay:
    ClearScreen(WHITE);
    Typing(GB_NORMAL_FONT, REPLACE_STYLE, BLACK, 5, 2, (P_U8)ElecMeterTxt);
    Typing(GB_NORMAL_FONT, REPLACE_STYLE, BLACK, 100, 2, (P_U8)CollectorTxt);
    TextButton(&UpPageId, GB_NORMAL_FONT, (P_TEXT)UpPageTxt, 2, 284, 75, 35, 1);
    TextButton(&DownPageId, GB_NORMAL_FONT, (P_TEXT)DownPageTxt, 82, 284, 75, 35, 1);
    TextButton(&CancelId, GB_NORMAL_FONT, (P_TEXT)CancelTxt, 162, 284, 75, 35, 1);
    /**
    for (i=0;i<(UserDataBaseNumber>=(PageNum+1)*10 ? MENUNUM:(UserDataBaseNumber-PageNum*10) );i++) {
        Typing(GB_NORMAL_FONT, REPLACE_STYLE, BLACK, 2, 30+i*25, (P_U8)UserbaseData[i+PageNum*10].elecmeterid); 
        Typing(GB_NORMAL_FONT, REPLACE_STYLE, BLACK, 100, 30+i*25, (P_U8)UserbaseData[i+PageNum*10].collecter);
        if (ActiveAreaEnable((P_U32)&UserItemId[i],ICON_AREA,CONTINUOUS_MODE, i*25+30, 2, (i+1)*25+28, 237)!=PPSM_OK) rv=PPSM_ERROR;
    }
    **/

    for (i=0;i<(tmpCount>=(PageNum+1)*10 ? MENUNUM:(tmpCount-PageNum*10) );i++) {
        Typing(GB_NORMAL_FONT, REPLACE_STYLE, BLACK, 2, 30+i*25, (P_U8)Title1Txt); 
        Typing(GB_NORMAL_FONT, REPLACE_STYLE, BLACK, 100, 30+i*25, (P_U8)Title2Txt);
        if (ActiveAreaEnable((P_U32)&UserItemId[i],ICON_AREA,CONTINUOUS_MODE, i*25+30, 2, (i+1)*25+28, 237)!=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:
            ActiveAreaRead(id, &xSrc, &ySrc, &xDest, &yDest);
            InvRec(xSrc+1, ySrc+1, (xDest-(xSrc+1)), (yDest-(ySrc+1)));
            if (*inData == PPSM_ICON_PEN_UP) {
                EL_Open(); 
                BUZZER_ON();
                if (id==UpPageId) {
                    if (PageNum>=1) {
                        PageNum--; 
                        goto ReDisPlay;
                    }
                    break;
                } else if (id==DownPageId) {
                    if ((PageNum+1)*10<tmpCount) {
                        PageNum++;
                        goto ReDisPlay;
                    }
                    break;
                } else if (id==CancelId) {
                    if (AdvMessageDelete(ListUserAllDataAppID, IRPT_ICON, -1)
                        !=PPSM_OK) rv = PPSM_ERROR;
                    if (AdvSendMessage(MenuTaskAppID, NULL, SWAP_TASK) 
                        != PPSM_OK) rv= PPSM_ERROR;
                    break;
                } else {
                    for (i=0;i<MENUNUM;i++) {
                        if (PageNum*10+i<tmpCount) {
                            if (id==UserItemId[i]) {
                                CurrRecIndex=PageNum*10+i;
                                if (AdvMessageDelete(ListUserAllDataAppID, IRPT_ICON, -1)
                                    !=PPSM_OK) rv = PPSM_ERROR;
                                if (AdvSendMessage(ListItemContentAppID, NULL, SWAP_TASK) 
                                    != PPSM_OK) rv= PPSM_ERROR;
                            }
                        }
                    }
                    break;
                }

            }
        default:
            break;
        }
    }
}

void ListItemContentApp(void)
{
    P_U16     inData;
    U32       size, id;
    U8        Title2Txt[8],i;
    S16       xSrc, ySrc, xDest, yDest; 
    U32       CancelBtnId;
    TEXT      CancelBtnTxt[]={'返','回',0};
    TEXT      CurrRecTxt[]={'当','前','记','录',':',0};

    ClearScreen(WHITE);
    for (i=0;i<8;i++) {
        Title2Txt[i]=0;
    }
    Typing(GB_NORMAL_FONT, REPLACE_STYLE, BLACK, 20, 60, (P_U8)CurrRecTxt);
    UTL_Word2Deci(CurrRecIndex, Title2Txt);
    Typing(GB_NORMAL_FONT, REPLACE_STYLE, BLACK, 100, 60, (P_U8)Title2Txt);
    TextButton(&CancelBtnId, GB_NORMAL_FONT, (P_TEXT)CancelBtnTxt, 65, 280, 75, 35, 1);
    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:
            ActiveAreaRead(id, &xSrc, &ySrc, &xDest, &yDest);
            InvRec(xSrc+1, ySrc+1, (xDest-(xSrc+1)), (yDest-(ySrc+1)));
            if (*inData == PPSM_ICON_PEN_UP) {
                EL_Open(); 
                BUZZER_ON();
                if (id==CancelBtnId) {
                    if (AdvMessageDelete(ListItemContentAppID, IRPT_ICON, -1)
                        !=PPSM_OK) rv = PPSM_ERROR;
                    if (AdvSendMessage(ListUserAllDataAppID, NULL, SWAP_TASK) 
                        != PPSM_OK) rv= PPSM_ERROR;
                    break;
                }
            }
        }
    }
}

⌨️ 快捷键说明

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