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

📄 maindemo.c

📁 本代码包为该GUI LIB在PC上的测试移植. PIC_Graphics 为PIC GUI的源代码目录 Demo 为PIC GUI 测试代码目录 其他的代码和目录均是uCGUI
💻 C
📖 第 1 页 / 共 5 页
字号:
        	if((tick-prevTick)>100) {
        		pLb = (LISTBOX*)GOLFindObject(ID_LISTBOX1);
			    pSld = (SLIDER*)GOLFindObject(ID_SLIDER1);
				pObj = GOLFindObject(ID_BUTTON_DATE_UP);

            	if(GetState(pObj, BTN_PRESSED)) {
                	LbSetFocusedItem(pLb,LbGetFocusedItem(pLb)-1);
                	SetState(pLb, LB_DRAW_ITEMS);
                	SldSetPos(pSld,SldGetPos(pSld)+1);
                	SetState(pSld, SLD_DRAW_THUMB);
                }
				pObj = GOLFindObject(ID_BUTTON_DATE_DN);

            	if(GetState(pObj, BTN_PRESSED)) {
	                LbSetFocusedItem(pLb,LbGetFocusedItem(pLb)+1);
    	            SetState(pLb, LB_DRAW_ITEMS);
        	        SldSetPos(pSld,SldGetPos(pSld)-1);
            	    SetState(pSld, SLD_DRAW_THUMB);
            	}
            	prevTick = tick;
            }
            return 1;

       case DISPLAY_DATETIME:

        	// Checks if the pull down menus are to be created or not
		    pObj = GOLFindObject(ID_BUTTON_MO);
		    if (GetState(pObj, BTN_PRESSED)) {
                screenState = SHOW_DATE_PDMENU;  	// change state
		   		return 1;
		   	}
		    pObj = GOLFindObject(ID_BUTTON_YR);
		    if (GetState(pObj, BTN_PRESSED)) {
                screenState = SHOW_DATE_PDMENU;  	// change state
		   		return 1;
		   	}
		    pObj = GOLFindObject(ID_BUTTON_DY);
		    if (GetState(pObj, BTN_PRESSED)) {
                screenState = SHOW_DATE_PDMENU;  	// change state
		   		return 1;
		   	}
        	// this increments the values for the time settings
        	// while the + or - buttons are pressed
       		if((tick-prevTick)>200) {
	       		pObj = GOLFindObject(ID_BUTTONHR_P);
            	if(GetState(pObj, BTN_PRESSED)) {
	            	MsgDateTime(BTN_MSG_PRESSED, pObj);
	            }
				pObj = GOLFindObject(ID_BUTTONHR_M);
            	if(GetState(pObj, BTN_PRESSED)) {
	            	MsgDateTime(BTN_MSG_PRESSED, pObj);
	            }
				pObj = GOLFindObject(ID_BUTTONMN_P);
            	if(GetState(pObj, BTN_PRESSED)) {
	            	MsgDateTime(BTN_MSG_PRESSED, pObj);
	            }
				pObj = GOLFindObject(ID_BUTTONMN_M);
            	if(GetState(pObj, BTN_PRESSED)) {
	            	MsgDateTime(BTN_MSG_PRESSED, pObj);
	            }
				pObj = GOLFindObject(ID_BUTTONSC_P);
            	if(GetState(pObj, BTN_PRESSED)) {
	            	MsgDateTime(BTN_MSG_PRESSED, pObj);
	            }
				pObj = GOLFindObject(ID_BUTTONSC_M);
            	if(GetState(pObj, BTN_PRESSED)) {
	            	MsgDateTime(BTN_MSG_PRESSED, pObj);
	            }
	            prevTick = tick;
	        }
	        return 1;

        case CREATE_METER:
            CreateMeter(); 								// create meter demo
            screenState = DISPLAY_METER; 				// switch to next state
            return 1; 									// draw objects created

        case DISPLAY_METER:
            if((tick-prevTick)>60){
	        	UpdateMeter();
                prevTick = tick;
            }
            return 1; 									// redraw objects if needed

        case CREATE_DIAL:
            CreateDial(); 								// create dial demo
            screenState = DISPLAY_DIAL; 				// switch to next state
            return 1; 									// draw objects created

        case DISPLAY_DIAL:
            return 1; 									// redraw objects if needed

        case CREATE_PICTURE:
            CreatePicture(); 							// create window, picture control and some check boxes
            screenState = DISPLAY_PICTURE; 				// switch to next state
            return 1; 									// draw objects created

        case DISPLAY_PICTURE:
            if(animate){                  				// if animation is on change picture
	            if((tick-prevTick)>(SldGetPos(pSlider)+40)){
				    switch(animate){
                        case 1:
                            PictSetBitmap(pPicture,(void*)&Engine1);
                            animate++;
                            break;
                        case 2:
                            PictSetBitmap(pPicture,(void*)&Engine2);
                            animate++;
                            break;
                        case 3:
                            PictSetBitmap(pPicture,(void*)&Engine3);
                            animate++;
                            break;
                        case 4:
                            PictSetBitmap(pPicture,(void*)&Engine4);
                            animate = 1;
                            break;
                    }
                    SetState(pPicture,PICT_DRAW); 		// must be redrawn
                    prevTick = tick;
                }
            }
            return 1; 									// redraw objects if needed

        case CREATE_CUSTOMCONTROL:
            CreateCustomControl(); 						// create window and custom control
            screenState = DISPLAY_CUSTOMCONTROL; 		// switch to next state
            return 1; 									// draw objects created

        case DISPLAY_CUSTOMCONTROL:
#define SX_ARROW 18
#define SY_ARROW 26
            if((tick-prevTick)>2){
                arrowPos++;  							// change arrows' position
                if(arrowPos>60-SY_ARROW)
                    arrowPos = 0;

                PutImage(70,110-SY_ARROW-arrowPos,(void*)&arrowUp,1); // draw arrows
                PutImage(70,110+arrowPos,(void*)&arrowDown,1);
                PutImage(250-SX_ARROW,110-SY_ARROW-arrowPos,(void*)&arrowUp,1);
                PutImage(250-SX_ARROW,110+arrowPos,(void*)&arrowDown,1);
                prevTick = tick;
            }
            return 1; 									// redraw objects if needed

        case CREATE_SIGNATURE:
            CreateSignature();  						// create window
            screenState = BOX_DRAW_SIGNATURE; 			// switch to next state
            return 1; 									// draw objects created

        case BOX_DRAW_SIGNATURE:
            if(0 == PanelSignature()) 					// draw box for signature
                return 0; 								// drawing is not completed, don't pass
                										// drawing control to GOL, try it again
            screenState = DISPLAY_SIGNATURE; 			// switch to next state
            return 1; 									// pass drawing control to GOL, redraw objects if needed

        case DISPLAY_SIGNATURE:
            return 1; 									// redraw objects if needed

        case CREATE_POT:
            CreatePotentiometer();                  	// create window
            screenState = BOX_DRAW_POT; 				// switch to next state
            return 1; 									// draw objects created

        case BOX_DRAW_POT:
            if(0 == PanelPotentiometer())        	    // draw box for potentiometer graph
                return 0;  								// drawing is not completed, don't pass
                										// drawing control to GOL, try it again
            screenState = DISPLAY_POT; 					// switch to next state
            return 1; 									// pass drawing control to GOL, redraw objects if needed

        case DISPLAY_POT:
            if((tick-prevTick)>20){
                if(GetPotSamples(POT_MOVE_DELTA))
                    GraphPotentiometer();           	// redraw graph
                prevTick = tick;
            }
            return 1; 									// redraw objects if needed

        case CREATE_ECG:
            CreateECG(); 								// create window
            screenState = BOX_DRAW_ECG; 				// switch to next state
            return 1; 									// draw objects created

        case BOX_DRAW_ECG:
            if(0 == PanelECG()) 						// draw box for ECG graph
                return 0;  								// drawing is not completed, don't pass
                										// drawing control to GOL, try it again
            screenState = DISPLAY_ECG; 					// switch to next state
            return 1; 									// pass drawing control to GOL, redraw objects if needed

        case DISPLAY_ECG:
            if((tick-prevTick)>1){
                if(GetECGSamples(ECG_WINDOW_SIZE))
                    GraphECG(); 						// redraw graph
                prevTick = tick;
            }
            return 1; 									// redraw objects if needed
        case CREATE_PULLDOWN:
        	CreatePullDown();
        	screenState = DISPLAY_PULLDOWN;
        	return 1;

        case DISPLAY_PULLDOWN:
            return 1; 									// redraw objects if needed
    }

    return 1;    										// release drawing control to GOL

}

// Shows intro screen and waits for touch
void StartScreen(void){

SHORT counter;
//XCHAR *text = TouchScreenStr;
static const XCHAR text[] = "Touch screen to continue";

WORD i, j, k;
WORD m;
WORD ytemp, xtemp, srRes = 0x0001;

    SetColor(WHITE);
    ClearDevice();
    PutImage(0,0,(void*)&mchpLogo,IMAGE_NORMAL);
    PutImage(2,60,(void*)&intro,IMAGE_X2);

    for(counter=0;counter<320-32;counter++){  // move Microchip icon
        PutImage(counter,205,(void*)&mchpIcon0,IMAGE_NORMAL);
    }
    SetColor(BRIGHTRED);
    SetFont((void*)&FONTDEFAULT);

    MoveTo((GetMaxX()-GetTextWidth((XCHAR*)text,(void*)&FONTDEFAULT))>>1,182);
    while(!OutText((XCHAR*)text));

    // wait for touch
    while(TouchGetX() == -1);
    Beep();

	// random fade effect using a Linear Feedback Shift Register (LFSR)
    SetColor(WHITE);
    for (i = 1800; i > 0 ; i--) {
		// for a 16 bit LFSR variable the taps are at bits: 1, 2, 4, and 15
   		srRes = (srRes >> 1) ^ (-(int)(srRes & 1) & 0x8006);
    	xtemp = (srRes & 0x00FF)%40;
    	ytemp = (srRes >> 8)%30;

    	// by replicating the white (1x1) bars into 8 areas fading is faster
		for (j = 0; j < 8; j++) {
    		for (k = 0; k < 8; k++)
	    		PutPixel(xtemp+(j*40), ytemp+(k*30));
	    }
	}
}

void CreatePage(XCHAR *pText) {
OBJ_HEADER* obj;
SHORT i;

    WndCreate(ID_WINDOW1,       		// ID
              0,0,GetMaxX(),GetMaxY(), 	// dimension
              WND_DRAW,                	// will be dislayed after creation
              (void*)&mchpIcon,               	// icon
              pText,	   				// set text
              navScheme);               // default GOL scheme

    BtnCreate(ID_BUTTON_BACK,         	// button ID
              0,40,					   	// left, top corner
              25,GetMaxY(),0, 		   	// right, bottom corner (with radius = 0)
              BTN_DRAW,               	// will be dislayed after creation
              NULL,					   	// no bitmap
              LeftArrowStr, 			// LEFT arrow as text
              navScheme);          	   	// use navigation scheme

    obj = (OBJ_HEADER*)BtnCreate(
    		  ID_BUTTON_NEXT,   	    // button ID
              GetMaxX()-25,40,
              GetMaxX(),GetMaxY(),0,   	// dimension (with radius = 0)
              BTN_DRAW,               	// will be dislayed and disabled after creation
              NULL,					   	// no bitmap
              RightArrowStr, 			// RIGHT arrow as text
              navScheme);          	   	// use navigation scheme


	RTCCProcessEvents();				// update the date and time strings
	i = 0;
	while (i < 12) {
		dateTimeStr[i] 	  = (XCHAR)_time_str[i];
		dateTimeStr[i+13] = (XCHAR)_date_str[i];
		i++;
	}
	dateTimeStr[12] = (XCHAR)'\n';
	dateTimeStr[25] = (XCHAR)'\0';

    StCreate(ID_STATICTEXT1,           	// ID
             GetMaxX()-(GetTextWidth(dateTimeStr,(void*)&GOLSmallFont)+15),
             3,							// dimensions
             GetMaxX()-5,
             3+(GetTextHeight((void*)&GOLSmallFont)<<1),
             ST_DRAW|ST_FRAME|
             ST_CENTER_ALIGN,     		// will be dislayed, has frame and center aligned
             dateTimeStr, 				// text is from time value
             timeScheme);             	// alternate scheme

	GOLSetFocus(obj); 					// set focus for the button

}

/* definitions for the pull down menu demo */
#define BOTTOM_NORMAL   40
#define BOTTOM_DROPPED  220

/*
const char ScreenItems[] =
"Buttons\n" "Checkbox\n" "Radio buttons\n" "Group box\n" "Slider\n" "Progress bar\n" "List box\n" "Edit box\n" "MORE......";
const char ScreenItems2[] =
"BACK......\n" "Meter\n" "Dial\n" "Picture\n" "Custom control\n" "Signature\n" "Plotting\n" "ECG";
*/
XCHAR *ScreenItems = ScrSelList1;
XCHAR *ScreenItems2 = ScrSelList2;


void CreatePullDown() {
	OBJ_HEADER *pFObj;

⌨️ 快捷键说明

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