📄 maindemo.c
字号:
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 + -