/******************************************************************* * * _DemoAntialiasing Draws lines with different antialiasing factors */ static void _DemoAntialiasing(void) { int i, x1, x2, y1, y2; const GUI_FONT *font_old; y1 = 65; y2 = 5; /* Set drawing attributes */ GUI_SetColor(GUI_WHITE); GUI_SetBkColor(GUI_BLACK); GUI_SetPenShape(GUI_PS_FLAT); GUI_Clear(); /* draw headline */ font_old = GUI_SetFont(&GUI_Font24_ASCII); GUI_SetTextAlign(GUI_TA_HCENTER); GUI_DispStringAt("AA_Lines - Sample", 160, 5); /* Draw lines without antialiased */ GUI_Delay(1000); GUI_SetFont(&GUI_Font8x16); GUI_SetTextAlign(GUI_TA_LEFT); GUI_DispStringAtCEOL("draw normal lines using", 5, 40); GUI_DispStringAtCEOL("GUI_DrawLine", 5, 55); GUI_Delay(2500); x1 = 20; x2 = 100; GUI_SetFont(font_old); GUI_DispStringHCenterAt("Normal", (x1 + x2) / 2, 30 + y1); for (i = 1; i < 8; i++) { GUI_SetPenSize(i); GUI_DrawLine(x1, 40 + i * 15 + y1, x2, 40 + i * 15 + y1 + y2); } /* Draw lines with antialiasing quality factor 2 */ GUI_Delay(3000); GUI_SetFont(&GUI_Font8x16); GUI_DispStringAtCEOL("", 5, 40); GUI_DispStringAtCEOL("", 5, 55); GUI_Delay(200); GUI_DispStringAtCEOL("draw antialiased lines using", 5, 40); GUI_DispStringAtCEOL("GUI_AA_DrawLine", 5, 55); GUI_Delay(3500); x1 = 120; x2 = 200; GUI_AA_SetFactor(2); GUI_SetFont(font_old); GUI_DispStringHCenterAt("Antialiased\nusing factor 2", (x1 + x2) / 2, 30 + y1); for (i = 1; i < 8; i++) { GUI_SetPenSize(i); GUI_AA_DrawLine(x1, 40 + i * 15 + y1, x2, 40 + i * 15 + y1 + y2); } /* Draw lines with antialiasing quality factor 6 */ GUI_Delay(1500); x1 = 220; x2 = 300; GUI_AA_SetFactor(6); GUI_SetFont(font_old); GUI_DispStringHCenterAt("Antialiased\nusing factor 6", (x1 + x2) / 2, 30 + y1); for (i = 1; i < 8; i++) { GUI_SetPenSize(i); GUI_AA_DrawLine(x1, 40 + i * 15 + y1, x2, 40 + i * 15 + y1 + y2); } GUI_Delay(7500); }
static void _DrawPie(int x0, int y0, int r, int Angle0, int Angle1, int Type) { int PenSizeOld = GUI_GetPenSize(); GUI_SetPenSize(r); r/=2; GL_DrawArc(x0,y0,r,r,Angle0, Angle1); GUI_SetPenSize(PenSizeOld); GUI_USE_PARA(Type); }
/********************************************************************* * * _LabelGraph */ static void _LabelGraph(void) { GUI_RECT Rect; int x; int y; int xSize; int ySize; WM_GetClientRect(&Rect); xSize = Rect.x1; ySize = Rect.y1; GUI_SetBkColor(_ColorBackGround); GUI_Clear(); GUI_SetColor(_ColorLabel); GUI_SetPenSize(1); GUI_ClearRect(0, (ySize - 21) - ySize, (xSize - 1), (ySize - 1)); GUI_DrawRect(25, 0, xSize, ySize - 20); GUI_SetFont(&GUI_Font6x8); for (x = 0; x < (xSize - 20); x += 40) { int xPos = x + 25; GUI_DrawVLine(xPos, (ySize - 20), (ySize - 14)); GUI_DispDecAt(x / 40, xPos - 2, (ySize - 9), 1); } for (y = 0; y < ySize - 20; y += 20) { int yPos = ySize - 20 - y; GUI_DrawHLine(yPos, 20, 25); GUI_GotoXY(1, yPos - 4); GUI_DispDecSpace(_TempMin + y, 3); } }
static void _Label(void) { int x, y; GUI_SetPenSize(1); GUI_ClearRect(0, (LCD_GetYSize() - 21) - _YSize, (LCD_GetXSize() - 1), (LCD_GetYSize() - 1)); GUI_DrawRect(18, (LCD_GetYSize() - 21) - _YSize, (LCD_GetXSize() - 1), (LCD_GetYSize() - 20)); GUI_SetFont(&GUI_Font6x8); for (x = 0; x < (LCD_GetXSize() - 20); x += 40) { int xPos = x + 18; GUI_DrawVLine(xPos, (LCD_GetYSize() - 20), (LCD_GetYSize() - 14)); GUI_DispDecAt(x / 40, xPos - 2, (LCD_GetYSize() - 9), 1); } for (y = 0; y < _YSize / 2; y += 20) { int yPos = (LCD_GetYSize() - 20) - _YSize / 2 + y; GUI_DrawHLine(yPos, 13, 18); if (y) { GUI_GotoXY(1, yPos - 4); GUI_DispSDec(-y / 20, 2); yPos = (LCD_GetYSize() - 20) - _YSize / 2 - y; GUI_DrawHLine(yPos, 13, 18); GUI_GotoXY(1, yPos - 4); GUI_DispSDec(y / 20, 2); } else { GUI_DispCharAt('0', 7, yPos - 4); } } }
/******************************************************************* * * _Label Labels the x & y-axis */ static void _Label(void) { int x, y; GUI_SetBkColor(GUI_RED); GUI_Clear(); GUI_SetColor(GUI_WHITE); GUI_SetFont(&GUI_Font24_ASCII); GUI_DispStringHCenterAt("MEMDEV_DrawGraph - Sample", 160, 5); GUI_SetPenSize(1); GUI_ClearRect(0, (LCD_YSIZE - 21) - YSIZE, (LCD_XSIZE - 1), (LCD_YSIZE - 1)); GUI_DrawRect(18, (LCD_YSIZE - 21) - YSIZE, (LCD_XSIZE - 1), (LCD_YSIZE - 20)); GUI_SetFont(&GUI_Font6x8); for (x = 0; x < (LCD_XSIZE - 20); x += 40) { int xPos = x + 18; GUI_DrawVLine(xPos, (LCD_YSIZE - 20), (LCD_YSIZE - 14)); GUI_DispDecAt(x / 40, xPos - 2, (LCD_YSIZE - 9), 1); } for (y = 0; y < YSIZE / 2; y += 20) { int yPos = (LCD_YSIZE - 20) - YSIZE / 2 + y; GUI_DrawHLine(yPos, 13, 18); if (y) { GUI_GotoXY(1, yPos - 4); GUI_DispSDec(-y / 20, 2); yPos = (LCD_YSIZE - 20) - YSIZE / 2 - y; GUI_DrawHLine(yPos, 13, 18); GUI_GotoXY(1, yPos - 4); GUI_DispSDec(y / 20, 2); } else { GUI_DispCharAt('0', 7, yPos - 4); } } }
/********************************************************************* * * _OnPaint */ static void _OnPaint(GRAPH_DATA_Handle hDataObj, GUI_RECT * pRect) { GUI_POINT * pData; GRAPH_DATA_XY_OBJ * pDataXYObj; GUI_USE_PARA(pRect); pDataXYObj = (GRAPH_DATA_XY_OBJ *)GUI_ALLOC_h2p(hDataObj); pData = (GUI_POINT *)GUI_ALLOC_h2p(pDataXYObj->hData); if (pData) { GUI_RECT Rect; GRAPH_OBJ * pObj; int xPos, yPos; int BorderL, BorderT, BorderR, BorderB; pObj = GRAPH_H2P(pDataXYObj->GraphDataObj.PaintObj.hGraph); BorderL = pObj->Props.BorderL; BorderT = pObj->Props.BorderT; BorderR = pObj->Props.BorderR; BorderB = pObj->Props.BorderB; WM_GetInsideRectExScrollbar(pDataXYObj->GraphDataObj.PaintObj.hGraph, &Rect); Rect.x0 += BorderL; Rect.y0 += BorderT; Rect.x1 -= BorderR; Rect.y1 -= BorderB; xPos = Rect.x0 + pDataXYObj->GraphDataObj.OffX; yPos = Rect.y1 - pDataXYObj->GraphDataObj.OffY; pObj = GRAPH_H2P(pDataXYObj->GraphDataObj.PaintObj.hGraph); GUI_SetColor(pDataXYObj->GraphDataObj.Color); GUI_SetPenSize(pDataXYObj->PenSize); GUI_SetLineStyle(pDataXYObj->LineStyle); _DrawPolyLine(pData, pDataXYObj->GraphDataObj.NumItems, xPos + pObj->ScrollStateH.v, yPos + pObj->ScrollStateV.v); } }
void GL_SetDefault(void) { GUI_SetBkColor(GUI_DEFAULT_BKCOLOR); GUI_SetColor (GUI_DEFAULT_COLOR); GUI_SetPenSize(1); GUI_SetTextAlign(0); GUI_SetTextMode(0); GUI_SetDrawMode(0); GUI_SetFont(GUI_DEFAULT_FONT); GUI_SetLineStyle(GUI_LS_SOLID); }
int main(void) { DelayInit(); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); UART_QuickInit(UART0_RX_PD06_TX_PD07, 115200); printf("spi touch screen test\r\n"); /* 初始化SPI2 接口连接触控屏的触控芯片*/ SPI_QuickInit(SPI2_SCK_PD12_SOUT_PD13_SIN_PD14, kSPI_CPOL0_CPHA0, 2*1000*1000); PORT_PinMuxConfig(HW_GPIOD, 11, kPinAlt2); /* SPI2_PCS0 */ /* 初始化触控芯片 使用CS0片选 */ ads7843_init(HW_SPI2, HW_SPI_CS0); GUI_Init();//液晶屏界面初始化 GUI_SetBkColor(GUI_WHITE); //设置背景色 GUI_SetColor(GUI_BLACK); //设置前景色 GUI_Clear(); //清屏 GUI_SetPenSize(3); //设置点的大小 GUI_DispString("Measurement of\nA/D converter values"); while (1) { GUI_PID_STATE TouchState; int xPhys, yPhys; GUI_TOUCH_GetState(&TouchState); /* 获得触控位置 */ xPhys = GUI_TOUCH_GetxPhys(); /* 获得x轴的测量值 */ yPhys = GUI_TOUCH_GetyPhys(); /* 获得y轴的测量值 */ /* 显示测量结果 */ GUI_SetColor(GUI_BLUE); GUI_DispStringAt("Analog input:\n", 0, 20); GUI_GotoY(GUI_GetDispPosY() + 2); GUI_DispString("x:"); GUI_DispDec(xPhys, 4); GUI_DispString(", y:"); GUI_DispDec(yPhys, 4); /* Display the according position */ GUI_SetColor(GUI_RED); GUI_GotoY(GUI_GetDispPosY() + 4); GUI_DispString("\nPosition:\n"); GUI_GotoY(GUI_GetDispPosY() + 2); GUI_DispString("x:"); GUI_DispDec(TouchState.x,4); GUI_DispString(", y:"); GUI_DispDec(TouchState.y,4); GUI_DrawPoint(TouchState.x, TouchState.y); GUI_TOUCH_Exec(); } }
/********************************************************************* * * _cbDialog * * Purpose: Dialog callback routine */ static void _cbDialog(WM_MESSAGE *pMsg) { int NCode, Id; WM_HWIN hDlg; BUTTON_Handle hButton; hDlg = pMsg->hWin; switch (pMsg->MsgId) { case WM_PAINT: WM_DefaultProc(pMsg); /* Handle dialog items */ /* After drawing the dialog items add some user drawn items to the window */ GUI_SetPenSize(10); GUI_SetColor(GUI_GREEN); GUI_DrawLine( 95, 5, 185, 95); GUI_SetColor(GUI_RED); GUI_DrawLine( 95, 95, 185, 5); break; case WM_INIT_DIALOG: hButton = WM_GetDialogItem(hDlg, GUI_ID_BUTTON0); WM_SetHasTrans(hButton); /* Set transparency flag for button */ break; case WM_KEY: switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) { case GUI_KEY_ESCAPE: GUI_EndDialog(hDlg, 1); break; case GUI_KEY_ENTER: GUI_EndDialog(hDlg, 0); break; } break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch (NCode) { case WM_NOTIFICATION_RELEASED: /* React only if released */ hButton = WM_GetDialogItem(hDlg, GUI_ID_BUTTON0); if (Id == GUI_ID_BUTTON1) { /* Toggle callback */ if (_pcbCallback) { WM_SetCallback(hButton, _pcbCallback); _pcbCallback = 0; } else { _pcbCallback = WM_SetCallback(hButton, _cbButton); } WM_InvalidateWindow(hButton); } if (Id == GUI_ID_BUTTON2) { /* Toggle font */ if (_Font) { BUTTON_SetFont(hButton, &GUI_Font13_1); } else { BUTTON_SetFont(hButton, &GUI_Font8x16); } _Font ^= 1; } if (Id == GUI_ID_BUTTON3) { /* Toggle color */ if (_Color) { BUTTON_SetBkColor(hButton, 0, 0xaaaaaa); BUTTON_SetBkColor(hButton, 1, GUI_WHITE); BUTTON_SetTextColor(hButton, 0, GUI_BLACK); BUTTON_SetTextColor(hButton, 1, GUI_BLACK); } else { BUTTON_SetBkColor(hButton, 0, GUI_BLUE); BUTTON_SetBkColor(hButton, 1, GUI_RED); BUTTON_SetTextColor(hButton, 0, GUI_WHITE); BUTTON_SetTextColor(hButton, 1, GUI_YELLOW); } _Color ^= 1; } if (Id == GUI_ID_OK) { /* OK Button */ GUI_EndDialog(hDlg, 0); } if (Id == GUI_ID_CANCEL) { /* Cancel Button */ GUI_EndDialog(hDlg, 1); } break; } break; default: WM_DefaultProc(pMsg); } }
static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int Id, NCode; switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = BUTTON_CreateEx(420, 0, 60, 60, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_EXIT); WM_SetCallback(hItem, _cbButton_exit); hItem = WM_GetDialogItem(pMsg->hWin, ID_VNC_CONNECTION); IMAGE_SetBitmap(hItem, &bmconnection_ko); hItem = BUTTON_CreateEx(315, 195, 40, 40, pMsg->hWin, WM_CF_SHOW, 0, START_VNC); WM_SetCallback(hItem, _cbButton_start); hItem = BUTTON_CreateEx(380, 195, 40, 40, pMsg->hWin, WM_CF_SHOW, 0, GO_BACKGROUND); WM_SetCallback(hItem, _cbButton_bg); hItem = BUTTON_CreateEx(245, 195, 40, 40, pMsg->hWin, WM_CF_SHOW, 0, ID_LOCK); WM_SetCallback(hItem, _cbButton_lock); hItem = WM_GetDialogItem(pMsg->hWin, GO_BACKGROUND); BUTTON_SetFont(hItem, &GUI_FontLubalGraph16B); break; case WM_PAINT: GUI_SetColor(GUI_STCOLOR_LIGHTBLUE); GUI_SetPenSize(5); GUI_DrawBitmap(&bmconnect, 7, 45); GUI_DrawCircle(332, 215, 40); GUI_AA_FillCircle(332, 215, 45); GUI_AA_FillRoundedRect(230, 182, 440, 250, 20); GUI_SetColor(GUI_WHITE); GUI_AA_FillCircle(332, 215, 42); GUI_SetBkColor(GUI_WHITE); GUI_AA_FillRoundedRect(233, 185, 437, 247, 20); GUI_SetColor(GUI_STCOLOR_LIGHTBLUE); GUI_AA_FillCircle(332, 215, 33); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch(Id) { case START_VNC: /* Notifications sent by 'Start' */ switch(NCode) { case WM_NOTIFICATION_RELEASED: if((VNC_GetState() == VNC_IDLE)|| (VNC_GetState() == VNC_INIT)) { VNC_SERVER_LogMessage("Starting VNC connection..."); hItem = WM_GetDialogItem(pMsg->hWin, ID_VNC_CONNECTION); IMAGE_SetBitmap(hItem, &bmno_connection); VNC_SetState (VNC_INIT); WM_Exec(); VNC_SERVER_Start(); } else { VNC_SERVER_Stop(); } break; case WM_NOTIFICATION_CLICKED: hItem = WM_GetDialogItem(pMsg->hWin, START_VNC); WM_InvalidateWindow(hItem); WM_Update(hItem); break; } break; case GO_BACKGROUND: /* Notifications sent by 'Background' */ switch(NCode) { case WM_NOTIFICATION_RELEASED: WM_HideWindow(pMsg->hWin); module_prop[k_ModuleGetIndex(&vnc_server)].win_state = 1; ST_AnimatedIconView_SetItemText(hIcon,k_ModuleGetIndex(&vnc_server),"vnc server[B]"); ST_AnimatedIconView_SetDualTextColor(hIcon, ICONVIEW_CI_SEL, GUI_STCOLOR_LIGHTBLUE, GUI_STCOLOR_DARKBLUE ); break; } break; case ID_BUTTON_EXIT: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(VNC_GetState() != VNC_IDLE) { VNC_SERVER_Stop(); } GUI_EndDialog(pMsg->hWin, 0); break; } break; case ID_LOCK: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(VNC_GetState() == VNC_IDLE) { if(VNC_GetLockState()) { VNC_SetLockState(0); } else { VNC_SetLockState(1); } } break; } break; } break; default: WM_DefaultProc(pMsg); break; } }
/** * @brief Callback routine of the dialog * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int Id, NCode; switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = WM_GetDialogItem(pMsg->hWin, ID_EQUAL); IMAGE_SetBitmap(hItem, &bmframe0); hItem = BUTTON_CreateEx(420, 0, 60, 60, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_EXIT); WM_SetCallback(hItem, _cbButton_exit); hItem = BUTTON_CreateEx(335, 185, 40, 40, pMsg->hWin, WM_CF_SHOW, 0, ID_RECORD_PAUSE); WM_SetCallback(hItem, _cbButton_pause); hItem = BUTTON_CreateEx(200, 185, 40, 40, pMsg->hWin, WM_CF_SHOW, 0, ID_RECORD_STOP); WM_SetCallback(hItem, _cbButton_stop); hItem = BUTTON_CreateEx(270, 185, 40, 40, pMsg->hWin, WM_CF_SHOW, 0, ID_RECORD_REC_CANCEL_PLAY); WM_SetCallback(hItem, _cbButton_record); if((module_prop[k_ModuleGetIndex(&audio_player_board)].in_use) || (k_StorageGetStatus(USB_DISK_UNIT) == 0)) { if(module_prop[k_ModuleGetIndex(&audio_player_board)].in_use) { hItem = WM_GetDialogItem(pMsg->hWin, ID_FILENAMECAPTION); TEXT_SetText(hItem, ">>>"); hItem = WM_GetDialogItem(pMsg->hWin, ID_FILENAME); TEXT_SetText(hItem, "Audio IF busy"); } if (k_StorageGetStatus(USB_DISK_UNIT) == 0) { hItem = WM_GetDialogItem(pMsg->hWin, ID_FILENAMECAPTION); TEXT_SetText(hItem, ">>>"); hItem = WM_GetDialogItem(pMsg->hWin, ID_FILENAME); TEXT_SetText(hItem, "USB NOT ready"); } RecorderMode = RECORDER_MODE_REC_DISABLED; hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_STOP); WM_DisableWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_REC_CANCEL_PLAY); WM_DisableWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_PAUSE); WM_DisableWindow(hItem); } else { RecorderMode = RECORDER_MODE_REC_IDLE; } WM_CreateWindowAsChild(0, 100, 10, 10, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS, _cbAudioProcess, 0); WM_CreateWindowAsChild(479, 252, 1, 1, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS, _cbMediaConnection , 0); break; case WM_PAINT: GUI_DrawBitmap(&bmrecorder, 7, 40); GUI_SetColor(GUI_STCOLOR_LIGHTBLUE); GUI_SetPenSize( 5 ); GUI_DrawRect(220, 233, 304, 257); GUI_AA_FillEllipse(285, 222, 114, 70); GUI_SetColor(GUI_WHITE); GUI_AA_FillEllipse(285, 224, 114, 70); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch(Id) { case ID_BUTTON_EXIT: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(module_prop[k_ModuleGetIndex(&audio_player_board)].in_use == 0) { AUDIO_RECORDER_DeInit(); } GUI_EndDialog(pMsg->hWin, 0); break; } break; case ID_RECORD_PAUSE: switch(NCode) { case WM_NOTIFICATION_RELEASED: if((AUDIO_RECORDER_GetState() == AUDIO_RECORDER_PLAY_PAUSE)|| (AUDIO_RECORDER_GetState() == AUDIO_RECORDER_RECORD_PAUSE)) { AUDIO_RECORDER_PauseResume(); hItem = WM_GetDialogItem(pMsg->hWin, ID_EQUAL); IMAGE_SetGIF(hItem, equal, sizeof(equal)); WM_InvalidateWindow(hItem); WM_Update(hItem); } else if((AUDIO_RECORDER_GetState() == AUDIO_RECORDER_PLAYING)|| (AUDIO_RECORDER_GetState() == AUDIO_RECORDER_RECORDING)) { AUDIO_RECORDER_PauseResume(); hItem = WM_GetDialogItem(pMsg->hWin, ID_EQUAL); IMAGE_SetBitmap(hItem, &bmframe0); WM_InvalidateWindow(hItem); WM_Update(hItem); } break; } break; case ID_RECORD_STOP: switch(NCode) { case WM_NOTIFICATION_RELEASED: if( RecorderMode == RECORDER_MODE_RECORDING) { AUDIO_RECORDER_StopRec(); RecorderMode = RECORDER_MODE_PLAY_IDLE; } else if( RecorderMode == RECORDER_MODE_PLAYING) { AUDIO_RECORDER_StopPlayer(); RecorderMode = RECORDER_MODE_PLAY_IDLE; } else if( RecorderMode == RECORDER_MODE_PLAY_IDLE) { RecorderMode = RECORDER_MODE_REC_IDLE; } hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_REC_CANCEL_PLAY); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_STOP); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_PAUSE); WM_InvalidateWindow(hItem); WM_Update(hItem); break; } break; case ID_RECORD_REC_CANCEL_PLAY: switch(NCode) { case WM_NOTIFICATION_RELEASED: if( RecorderMode == RECORDER_MODE_REC_IDLE) /* Start Recored */ { _BuildFileName(); hItem = WM_GetDialogItem(hMainWin, ID_FILENAMECAPTION); TEXT_SetText(hItem, "File : "); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(hMainWin, ID_FILENAME); TEXT_SetText(hItem, FileName); WM_InvalidateWindow(hItem); WM_Update(hItem); AUDIO_RECORDER_SelectFile(FileName, FA_CREATE_ALWAYS | FA_WRITE); AUDIO_RECORDER_StartRec(DEFAULT_AUDIO_IN_FREQ); RecorderMode = RECORDER_MODE_RECORDING; hItem = WM_GetDialogItem(pMsg->hWin, ID_EQUAL); IMAGE_SetGIF(hItem, equal, sizeof(equal)); WM_InvalidateWindow(hItem); WM_Update(hItem); } else if( RecorderMode == RECORDER_MODE_RECORDING) /* Cancel */ { AUDIO_RECORDER_StopRec(); RecorderMode = RECORDER_MODE_REC_IDLE; AUDIO_RECORDER_RemoveAudioFile(FileName); } else if( RecorderMode == RECORDER_MODE_PLAY_IDLE) /* Start Play */ { RecorderMode = RECORDER_MODE_PLAYING; AUDIO_RECORDER_SelectFile(FileName, FA_OPEN_EXISTING | FA_READ); AUDIO_RECORDER_Play(DEFAULT_AUDIO_IN_FREQ); hItem = WM_GetDialogItem(pMsg->hWin, ID_EQUAL); IMAGE_SetGIF(hItem, equal, sizeof(equal)); WM_InvalidateWindow(hItem); WM_Update(hItem); } hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_REC_CANCEL_PLAY); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_STOP); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_PAUSE); WM_InvalidateWindow(hItem); WM_Update(hItem); break; } break; } break; default: WM_DefaultProc(pMsg); break; } }
/******************************************************************* * * _DrawScale Drawing a scale using GUI-functions */ static void _DrawScale(void) { int XSize = LCD_GetXSize(); int YSize = LCD_GetYSize(); int XMid = XSize / 2; int i; int r1 = 110; int r2 = 140; int rt = 100; int y = 240; int step = 15; int r = (r1 + r2) / 2; GUI_SetBkColor(GUI_BLACK); GUI_Clear(); GUI_SetColor(GUI_WHITE); GUI_SetFont(&GUI_Font24_ASCII); GUI_SetTextAlign(GUI_TA_HCENTER); GUI_DispStringAt("DrawScale - Sample", 160, 5); while (1) { int c = 0; GUI_SetColor(GUI_WHITE); GUI_SetFont(&GUI_Font8x16); GUI_SetTextAlign(GUI_TA_LEFT); GUI_Delay(SPEED / 2); GUI_DispStringAtCEOL("using", 5, 40); GUI_DispStringAtCEOL("GUI_AA_DrawArc", 5, 55); GUI_Delay(SPEED * 2); GUI_SetPenSize(r2 - r1); GUI_SetColor(0x0000AA); GUI_AA_DrawArc(XMid, y, r, r, 45, 60); GUI_Delay(SPEED); GUI_SetColor(0x00AA00); GUI_AA_DrawArc(XMid, y, r, r, 60, 90); GUI_Delay(SPEED); GUI_SetPenSize(2); GUI_SetColor(GUI_WHITE); GUI_AA_DrawArc(XMid, y, r1, r1, 45, 135); GUI_Delay(SPEED); GUI_AA_DrawArc(XMid, y, r2, r2, 45, 135); GUI_Delay(SPEED); GUI_DispStringAtCEOL("", 5, 55); GUI_Delay(200); GUI_DispStringAtCEOL("using", 5, 40); GUI_DispStringAtCEOL("GUI_AA_DrawLine & GUI_DispCharAt", 5, 55); GUI_Delay(SPEED * 3); for (i = 45; i <= 135; i += step) { float co = cos(i * 3.1415926 / 180); float si = sin(i * 3.1415926 / 180); int x1 = XMid - r1 * co; int y1 = y - r1 * si; int x2 = XMid - (r2 - 1) * co; int y2 = y - (r2 - 1) * si; int xt = XMid - rt * co; int yt = y - rt * si; GUI_SetColor(GUI_WHITE); GUI_SetPenSize(2); GUI_AA_DrawLine(x1, y1, x2, y2); GUI_SetColor(GUI_GREEN); GUI_SetFont(&GUI_Font8x8); GUI_DispCharAt('0' + c++, xt - 4, yt - 4); GUI_Delay(SPEED / 2); } GUI_Delay(SPEED * 3); GUI_ClearRect(0, 30, 320, 240); } }
/********************************************************************* * * _cbDialog */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; WM_MESSAGE Msg; WM_HWIN hIteminfo; int i; uint8_t sel; uint8_t items; // int wheelval=0; // USER START (Optionally insert additional variables) // USER END hItem = pMsg->hWin; WINDOW_SetBkColor(hItem, GUI_LIGHTGRAY); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); //WM_SetFocus(hItem); switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0); TEXT_SetFont(hItem,&GUI_FontHZ_Song_12); TEXT_SetText(hItem, "测试文件选择"); hIteminfo = WM_GetDialogItem(pMsg->hWin, ID_TEXT_1); TEXT_SetFont(hIteminfo,&GUI_FontHZ_Song_12); TEXT_SetTextColor(hIteminfo,GUI_RED); TEXT_SetText(hIteminfo, (char *)"打开测试文件……"); WM_HideWindow(hIteminfo); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_LOCKINFO); TEXT_SetFont(hItem,&GUI_FontHZ_Song_12); TEXT_SetTextColor(hItem,GUI_RED); TEXT_SetText(hItem, "系统被锁定,请解锁!"); WM_HideWindow(hItem); // // Initialization of 'Dropdown' // hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); DROPDOWN_SetFont(hItem,&GUI_FontHZ_Song_12); //if(k_StorageGetStatus(USB_DISK_UNIT) != 0) DROPDOWN_AddString(hItem, "U盘"); //if(k_StorageGetStatus(MSD_DISK_UNIT) != 0) DROPDOWN_AddString(hItem, "SD卡"); if(k_StorageGetStatus(MSD_DISK_UNIT) != 0) DROPDOWN_SetSel(hItem,1); else DROPDOWN_SetSel(hItem,0); // // Initialization of 'Listview' // store_dev=DROPDOWN_GetSel(hItem); WT_TestFolder_Init(); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); for(i=0;i<TestFolder.number_TotalFile;i++) { LISTBOX_AddString(hItem, (char *)TestFolder.FilesName[i]); } LISTBOX_SetFont(hItem,GUI_FONT_20_1); LISTBOX_SetSel(hItem,TestFolder.number_CurrentFile); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_OK); BUTTON_SetFont(hItem,&GUI_FontHZ_Song_12); BUTTON_SetSkinClassic(hItem); BUTTON_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER); BUTTON_SetBkColor(hItem,BUTTON_CI_UNPRESSED, GUI_GREEN); BUTTON_SetFocussable(hItem,0);//不接收焦点 hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CANCEL); BUTTON_SetFont(hItem,&GUI_FontHZ_Song_12); BUTTON_SetSkinClassic(hItem); BUTTON_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER); BUTTON_SetBkColor(hItem,BUTTON_CI_UNPRESSED, GUI_RED); BUTTON_SetFocussable(hItem,0);//不接收焦点 // USER START (Optionally insert additional code for further widget initialization) // USER END break; case MY_MESSAGE_CLICK: GUI_SendKeyMsg(GUI_KEY_TAB, 1);//改变输入焦点 hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); if(WM_HasFocus(hItem)) { LISTBOX_SetSel(hItem,0); } break; case MY_MESSAGE_DOWN: hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); if(WM_HasFocus(hItem)) { LISTBOX_IncSel(hItem); } hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); if(WM_HasFocus(hItem)) { sel=DROPDOWN_GetSel(hItem); if(sel<1) { DROPDOWN_IncSel(hItem); } else //sel>=1 { DROPDOWN_SetSel(hItem,0); } store_dev=DROPDOWN_GetSel(hItem); WT_TestFolder_Init(); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); items = LISTBOX_GetNumItems(hItem); for(i=0;i<items;i++) { LISTBOX_DeleteItem(hItem,0); } for(i=0;i<TestFolder.number_TotalFile;i++) { LISTBOX_AddString(hItem, (char *)TestFolder.FilesName[i]); } } break; case MY_MESSAGE_UP: hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); if(WM_HasFocus(hItem)) { LISTBOX_DecSel(hItem); } hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); if(WM_HasFocus(hItem)) { sel=DROPDOWN_GetSel(hItem); if(sel>0) { DROPDOWN_DecSel(hItem); } else //sel>=1 { DROPDOWN_SetSel(hItem,1); } store_dev=DROPDOWN_GetSel(hItem); WT_TestFolder_Init(); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); items = LISTBOX_GetNumItems(hItem); for(i=0;i<items;i++) { LISTBOX_DeleteItem(hItem,0); } for(i=0;i<TestFolder.number_TotalFile;i++) { LISTBOX_AddString(hItem, (char *)TestFolder.FilesName[i]); } } break; case MY_MESSAGE_CANCEL://取消 TestFile.command=2;//test cancel TestFile.item_total=0; GUI_EndDialog(pMsg->hWin,0); break; case MY_MESSAGE_OK: hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); if(LISTBOX_GetNumItems(hItem) ==0 ) break; TestFolder.number_CurrentFile=LISTBOX_GetSel(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); store_dev=DROPDOWN_GetSel(hItem); TestFile.command = 0; hIteminfo = WM_GetDialogItem(pMsg->hWin, ID_TEXT_1); TEXT_SetText(hIteminfo, (char *)"读取测试文件!"); WM_ShowWindow(hIteminfo); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_LOCKINFO); WM_HideWindow(hItem); GUI_Exec(); WT_TestItem_Init((char *)TestFolder.FilesName[TestFolder.number_CurrentFile]); if(TestFile.file_status == 1)//文件读取OK { Msg.MsgId = MY_MESSAGE_BUTTONOK; WM_SendMessage(pMsg->hWinSrc,&Msg); GUI_EndDialog(pMsg->hWin,0); } else { TEXT_SetText(hIteminfo, (char *)"读取测试文件错误!"); WM_ShowWindow(hIteminfo); } // hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CANCEL); // if(WM_HasFocus(hItem))//取消 // { // TestFolder.number_CurrentFile=0; // TestFile.command = 0; // WT_TestItem_Init(TestFolder.FilesName[0]); // Msg.MsgId = MY_MESSAGE_BUTTONCANCEL; // WM_SendMessage(pMsg->hWinSrc,&Msg); // GUI_EndDialog(pMsg->hWin,0); // } //GUI_EndDialog(pMsg->hWin,0); //Number_Windos = 0; break; case MY_MESSAGE_LOCK: hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_1); WM_HideWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_LOCKINFO); TEXT_SetText(hItem, "系统被锁定,请解锁!"); WM_ShowWindow(hItem); GUI_Exec(); break; case MY_MESSAGE_UNLOCK: hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_LOCKINFO); WM_HideWindow(hItem); break; case WM_PAINT://绘制标题栏 GUI_SetColor(GUI_DARKBLUE); GUI_FillRect(0,0,480,22); GUI_SetColor(GUI_DARKGRAY); GUI_SetPenSize(8); GUI_DrawRect(0,0,478,220); // GUI_DrawRoundedFrame(0, 0, 480, 222, 0, 4); break; default: WM_DefaultProc(pMsg); break; } }
/******************************************************************************* * Function Name : main. * Description : Main routine. * Input : None. * Output : None. * Return : None. *******************************************************************************/ int main(void) { /* ================================================================ */ /* Board Initializations and Configurations except OLED */ /* (clocks, I/Os, on-chip peripherals, on-board ICs) */ /* ================================================================ */ LBF_Board_Init(); Red_Led_ON(); /* ================================================================ */ /* Optional initialization of Middleware libraries : */ /* USBD drivers, FatFS File System, STemWin GUI */ /* ================================================================ */ // UNCOMMENT IF YOU WELL BE USING ...: /* ... La BlueFrog as USB Mass Storage (Full Speed) */ /* (based on ST-provided stack part of STM32 Cube offering */ // Delay_ms(1000); // LBF_LaunchUSB_MassStorage(); /* ... the FAT File System (FatFS) */ /* (based on ChanN's FatFS included in STM32 Cube offering) */ // LBF_FatFS_Init(); /* ... the STemWin Graphical Library */ /* (based on Segger's emWin included in STM32 Cube offering)*/ LBF_emWin_Init(); Red_Led_OFF(); /* ================================================================ */ /* Application Code Below */ /* ================================================================ */ /* == User Declarations ========================================== */ uint16_t fconfig[11]; // configuration file to control some OLED parameters GUI_MEMDEV_Handle hMemDevice; //handle to a memory device /* == Body ========================================== */ fconfig[0]=0xFFFF; // to use default settings LBF_OLED_Init(fconfig); //sets up OLED register and powers on OLED VDDH(13V) OLED_Fill(0, 0, 160, 128, CYAN); Red_Led_ON(); /*** Start Demo *******************************************************/ /* Different options posible */ /* Use Display Cache or Use Memory Device or use Banded Memory Device */ /* With 32K SRAM only the latter allows to cover full screen */ // ============================================================= // == Using the dislay cache ================================== // Usage of display cache can be enabled through parameters of function // GUIDRV_FlexColor_SetFunc() called in LCDConf_FlexColor_LBF.c // found in library LBF_STemWin // !!! ISSUE !!! // XSIZE_PHYS x YSIZE_PHYS (defined in above files) need to be set to 160x128 // to hold full display. However at 16bpp that represents about 40BK // but available SRAM is only 32KB... // Work-Around: define a smaller display cache (XSIZE_PHYS, YSIZE_PHYS) // -- but will not allow to address full screen // Not much interest vs use of "Memory Device", below, anyway /* GUI_SetFont(&GUI_Font20_1); GUI_SetTextMode(GUI_TM_TRANS); // write with transparent background GUI_DispStringAt("Hello from La BlueFrog !", LCD_GetXSize()/8, LCD_GetYSize()/2); Green_Led_ON(); */ // ============================================================= // == Using a "Memory Device" (refer to emWin documentation) // Work with a centered 128x64 window // (cannot cover full screen for same memory limitation as above) #define X_FULL_SCREEN 160 #define Y_FULL_SCREEN 128 #define MD_X_LEFT (X_FULL_SCREEN -128)/2 #define MD_X_RIGHT 160-MD_X_LEFT #define MD_Y_TOP (Y_FULL_SCREEN -64)/2 #define MD_Y_BOT 128-MD_Y_TOP // Create Memory Device (top left & bottom right coordinates) on Layer 0: GUI_SelectLayer(0); hMemDevice = GUI_MEMDEV_Create(MD_X_LEFT, MD_Y_TOP, (MD_X_RIGHT-MD_X_LEFT+1), (MD_Y_BOT-MD_Y_TOP+1) ); // Caution: // Memory allocated by GUI_X_Config in GUIConf_LBF.c must be sufficient to fit MemDevice buffer // plus other needs of emWin // Else GUI_MEMDEV_Create will fail (returns 0) and operations will be done directly to screen // Activate it: GUI_MEMDEV_Select(hMemDevice); // Draw Stuff (refer to emWin documentation) GUI_DrawGradientRoundedH( MD_X_LEFT, MD_Y_TOP, MD_X_RIGHT, MD_Y_BOT, 10, // rounded corner radius 0xFF0000, 0xFFFF00); // red to yellow GUI_SetPenSize(6); GUI_DrawLine(MD_X_LEFT, MD_Y_TOP, MD_X_RIGHT, MD_Y_BOT); GUI_DrawLine(MD_X_LEFT, MD_Y_BOT, MD_X_RIGHT, MD_Y_TOP); GUI_SetFont(&GUI_Font13_1); GUI_SetColor(GUI_BLACK); GUI_SetTextMode(GUI_TM_TRANS); // write with transparent background GUI_DispStringAt("Hello !\n", MD_X_LEFT+10, MD_Y_TOP+10 ); // Copy to display GUI_MEMDEV_CopyToLCD(hMemDevice); // Free memory GUI_MEMDEV_Delete(hMemDevice); // ============================================================= // == Using a "Banded Memory Device" (refer to emWin documentation) // == (Banding, aka tiling, allows to cover full screen by processing // == a number of bands successively) //TODO // use function: GUI_MEMDEV_Draw (GUI_RECT * pRect, GUI_CALLBACK_VOID_P * pfDraw, // void* pData, int NumLines, int Flags); while(1); }
/********************************************************************* * * _cbDialog */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; WM_MESSAGE Msg; WM_HWIN hIteminfo; int i; int sel; uint8_t items; FRESULT res; // FILINFO fno; //DIR dir; // USER START (Optionally insert additional variables) // USER END hItem = pMsg->hWin; WINDOW_SetBkColor(hItem, GUI_LIGHTGRAY); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); //WM_SetFocus(hItem); switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0); TEXT_SetFont(hItem,&GUI_FontHZ_Song_12); TEXT_SetText(hItem, "自学习文件选择"); hIteminfo = WM_GetDialogItem(pMsg->hWin, ID_TEXT_1); TEXT_SetFont(hIteminfo,&GUI_FontHZ_Song_12); TEXT_SetTextColor(hIteminfo,GUI_RED); TEXT_SetText(hIteminfo, (char *)"打开文件……"); WM_HideWindow(hIteminfo); // // Initialization of 'Dropdown' // hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); DROPDOWN_SetFont(hItem,&GUI_FontHZ_Song_12); DROPDOWN_AddString(hItem, "U盘"); DROPDOWN_AddString(hItem, "SD卡"); if(k_StorageGetStatus(MSD_DISK_UNIT) != 0) DROPDOWN_SetSel(hItem,1); else DROPDOWN_SetSel(hItem,0); // // Initialization of 'Treeview' // store_dev=DROPDOWN_GetSel(hItem); WT_TestFolder_Init(); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); for(i=0;i<TestFolder.number_TotalFile;i++) { LISTBOX_AddString(hItem, (char *)TestFolder.FilesName[i]); } LISTBOX_SetFont(hItem,GUI_FONT_20_1); LISTBOX_SetSel(hItem,TestFolder.number_CurrentFile); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_OK); BUTTON_SetFont(hItem,&GUI_FontHZ_Song_12); BUTTON_SetSkinClassic(hItem); BUTTON_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER); BUTTON_SetBkColor(hItem,BUTTON_CI_UNPRESSED, GUI_GREEN); BUTTON_SetFocussable(hItem,0);//不接收焦点 hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CANCEL); BUTTON_SetFont(hItem,&GUI_FontHZ_Song_12); BUTTON_SetSkinClassic(hItem); BUTTON_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER); BUTTON_SetBkColor(hItem,BUTTON_CI_UNPRESSED, GUI_RED); BUTTON_SetFocussable(hItem,0);//不接收焦点 // USER START (Optionally insert additional code for further widget initialization) // USER END break; case MY_MESSAGE_CLICK: GUI_SendKeyMsg(GUI_KEY_TAB, 1);//改变输入焦点 break; case MY_MESSAGE_DOWN: hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); if(WM_HasFocus(hItem)) { LISTBOX_IncSel(hItem); } hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); if(WM_HasFocus(hItem)) { sel=DROPDOWN_GetSel(hItem); if(sel<1) { DROPDOWN_IncSel(hItem); } else //sel>=1 { DROPDOWN_SetSel(hItem,0); } store_dev=DROPDOWN_GetSel(hItem); WT_TestFolder_Init(); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); items = LISTBOX_GetNumItems(hItem); for(i=0;i<items;i++) { LISTBOX_DeleteItem(hItem,0); } for(i=0;i<TestFolder.number_TotalFile;i++) { LISTBOX_AddString(hItem, (char *)TestFolder.FilesName[i]); } } break; case MY_MESSAGE_UP: hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); if(WM_HasFocus(hItem)) { LISTBOX_DecSel(hItem); } hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); if(WM_HasFocus(hItem)) { sel=DROPDOWN_GetSel(hItem); if(sel>0) { DROPDOWN_DecSel(hItem); } else //sel>=1 { DROPDOWN_SetSel(hItem,1); } store_dev=DROPDOWN_GetSel(hItem); WT_TestFolder_Init(); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); items = LISTBOX_GetNumItems(hItem); for(i=0;i<items;i++) { LISTBOX_DeleteItem(hItem,0); } for(i=0;i<TestFolder.number_TotalFile;i++) { LISTBOX_AddString(hItem, (char *)TestFolder.FilesName[i]); } } break; case MY_MESSAGE_CANCEL://取消 GUI_EndDialog(pMsg->hWin,0); break; case MY_MESSAGE_OK: hIteminfo = WM_GetDialogItem(pMsg->hWin, ID_TEXT_1); TEXT_SetText(hIteminfo, (char *)"打开文件中……"); WM_ShowWindow(hIteminfo); GUI_Exec(); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); TestFolder.number_CurrentFile=LISTBOX_GetSel(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); store_dev=DROPDOWN_GetSel(hItem); WT_TestItem_Init((char *)TestFolder.FilesName[TestFolder.number_CurrentFile]); //WT_TestFile_Write2Flash((char *)TestFolder.FilesName[TestFolder.number_CurrentFile]);//将文件内容复制到Flash //WT_TestFiles_Write2card((char *)TestFolder.FilesName[TestFolder.number_CurrentFile]);//将文件内容复制到SD card if(TestFile.file_status == 1)//文件读取OK { Msg.MsgId = MY_MESSAGE_BUTTONOK; WM_SendMessage(pMsg->hWinSrc,&Msg); GUI_EndDialog(pMsg->hWin,0); } else { TEXT_SetText(hIteminfo, (char *)"读取文件错误!"); WM_ShowWindow(hIteminfo); } Msg.MsgId = MY_MESSAGE_BUTTONOK; WM_SendMessage(pMsg->hWinSrc,&Msg); GUI_EndDialog(pMsg->hWin,0); break; case MY_MESSAGE_BUTTONDELETE: hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); store_dev=DROPDOWN_GetSel(hItem); if(store_dev==0) //usb strcpy(filename,path_testfile); //f_opendir(&dir, path_testfile); if(store_dev==1) //sd strcpy(filename,path_testfile_sd); //f_opendir(&dir, path_testfile_sd); //res = f_opendir(&dir, "1:/LZY_WireTester/Test Files"); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); strcat(filename,"/"); sel = LISTBOX_GetSel(hItem); if(sel < 0) break; strcat(filename,(char *)TestFolder.FilesName[LISTBOX_GetSel(hItem)]); res=f_unlink((const TCHAR*)filename); if(res == FR_OK) { hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); store_dev=DROPDOWN_GetSel(hItem); WT_TestFolder_Init(); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); items = LISTBOX_GetNumItems(hItem); for(i=0;i<items;i++) { LISTBOX_DeleteItem(hItem,0); } for(i=0;i<TestFolder.number_TotalFile;i++) { LISTBOX_AddString(hItem, (char *)TestFolder.FilesName[i]); } WM_SetFocus(hItem); if(sel > 0) LISTBOX_SetSel(hItem,sel - 1); else LISTBOX_SetSel(hItem,0); } break; case WM_PAINT://绘制标题栏 GUI_SetColor(GUI_DARKBLUE); GUI_FillRect(0,0,380,22); GUI_SetColor(GUI_DARKGRAY); GUI_SetPenSize(8); GUI_DrawRect(0,0,378,220); break; default: WM_DefaultProc(pMsg); break; } }
/********************************************************************* * * _cbDialog */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int cursorpos=0; int index=0; uint8_t res=0; uint8_t sel=0; char str[60]; uint8_t filename[110]; uint8_t NumChars=0; hItem = pMsg->hWin; WINDOW_SetBkColor(hItem, GUI_LIGHTGRAY); switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0); TEXT_SetFont(hItem,&GUI_FontHZ_Song_16); TEXT_SetTextAlign(hItem, TEXT_CF_HCENTER | TEXT_CF_VCENTER); TEXT_SetText(hItem, (char *)"保存自学习文件"); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_1); TEXT_SetFont(hItem,&GUI_FontHZ_Song_16); TEXT_SetText(hItem, (char *)"文件名称:"); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_2); TEXT_SetFont(hItem,&GUI_FontHZ_Song_16); TEXT_SetText(hItem, (char *)"文件类型:WTR"); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_3); TEXT_SetFont(hItem,&GUI_FontHZ_Song_16); TEXT_SetText(hItem, (char *)"保存路径:"); hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); DROPDOWN_SetFont(hItem,&GUI_FontHZ_Song_16); DROPDOWN_AddString(hItem, (char *)"U盘"); DROPDOWN_AddString(hItem, (char *)"SD卡"); if(k_StorageGetStatus(MSD_DISK_UNIT) != 0) DROPDOWN_SetSel(hItem,1); else DROPDOWN_SetSel(hItem,0); hItemwarn = WM_GetDialogItem(pMsg->hWin, ID_TEXT_WARNING); TEXT_SetFont(hItemwarn,&GUI_FontHZ_Song_12); TEXT_SetTextColor(hItemwarn,GUI_RED); TEXT_SetText(hItemwarn, (char *)"警告:文件名不能为空!"); WM_HideWindow(hItemwarn); hIteminfo = WM_GetDialogItem(pMsg->hWin, ID_TEXT_INFO); TEXT_SetFont(hIteminfo,&GUI_FontHZ_Song_12); TEXT_SetTextColor(hIteminfo,GUI_RED); TEXT_SetText(hIteminfo, (char *)"文件保存成功!"); WM_HideWindow(hIteminfo); hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_TILEPATH); //EDIT_SetDecMode(hItem, 24, 1,256, 0, 0); EDIT_SetFont(hItem,GUI_FONT_32_1); EDIT_SetMaxLen(hItem, 50); EDIT_EnableBlink(hItem, 600, 1); EDIT_SetInsertMode(hItem,1); //strcpy ((char*)str,(char *)path_studyfile); //strcat ((char*)str,"/"); //strcat ((char*)str,"A.wtr"); EDIT_SetText(hItem,"A"); cursorindex=EDIT_GetCursorCharPos(hItem); WM_SetFocus(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_OK); BUTTON_SetFont(hItem,&GUI_FontHZ_Song_12); BUTTON_SetSkinClassic(hItem); BUTTON_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER); BUTTON_SetBkColor(hItem,BUTTON_CI_UNPRESSED, GUI_GREEN); BUTTON_SetFocussable(hItem,0);//不接收焦点 hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CANCEL); BUTTON_SetFont(hItem,&GUI_FontHZ_Song_12); BUTTON_SetSkinClassic(hItem); BUTTON_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER); BUTTON_SetBkColor(hItem,BUTTON_CI_UNPRESSED, GUI_RED); BUTTON_SetFocussable(hItem,0);//不接收焦点 break; // USER START (Optionally insert additional message handling) // USER END case WM_KEY: //GUI_SendKeyMsg(GUI_KEY_TAB, 1);//改变输入焦点 break; case MY_MESSAGE_CLICK: GUI_SendKeyMsg(GUI_KEY_TAB, 1);//改变输入焦点 break; case MY_MESSAGE_OK: hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_TILEPATH); if(EDIT_GetNumChars(hItem)==0) { hItemwarn = WM_GetDialogItem(pMsg->hWin, ID_TEXT_WARNING); WM_ShowWindow(hItemwarn); break; } else { hItemwarn = WM_GetDialogItem(pMsg->hWin, ID_TEXT_WARNING); WM_HideWindow(hItemwarn); } hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); store_dev=DROPDOWN_GetSel(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_TILEPATH); EDIT_GetText(hItem, str, 51); if(store_dev == 0)//usb { if(sizeof(path_studyfile) < 50) strcpy ((char*)filename,(char *)path_studyfile); else strcpy ((char*)filename,(char *)path_Default); } if(store_dev == 1)//sd { if(sizeof(path_studyfile) < 50) strcpy ((char*)filename,(char *)path_studyfile_sd); else strcpy ((char*)filename,(char *)path_Default_sd); } strcat ((char*)filename,"/"); strcat ((char*)filename,str); strcat ((char*)filename,".wtr"); hIteminfo = WM_GetDialogItem(pMsg->hWin, ID_TEXT_INFO); TEXT_SetText(hIteminfo, "正在保存自学习文件!"); WM_ShowWindow(hIteminfo); GUI_Exec(); res=WT_StudyFiles_Write(filename);//0-ok, 1-hardware error, 2-file operate error, if(res==0) { hIteminfo = WM_GetDialogItem(pMsg->hWin, ID_TEXT_INFO); TEXT_SetText(hIteminfo, (char *)"文件保存成功!"); WM_ShowWindow(hIteminfo); } else { hIteminfo = WM_GetDialogItem(pMsg->hWin, ID_TEXT_INFO); TEXT_SetText(hIteminfo, "警告:保存失败,未检测到存储设备!"); WM_ShowWindow(hIteminfo); break; } GUI_EndDialog(pMsg->hWin,0); break; case MY_MESSAGE_DOWN://向右移动光标 hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); if(WM_HasFocus(hItem))//选择存储路径 { sel=DROPDOWN_GetSel(hItem); if(sel<1) { DROPDOWN_IncSel(hItem); } else //sel>=2 { DROPDOWN_SetSel(hItem,0); } } hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_TILEPATH); cursorpos=EDIT_GetCursorCharPos(hItem); NumChars = EDIT_GetNumChars(hItem); if(cursorpos <= (NumChars-1) ) { EDIT_SetCursorAtChar(hItem,cursorpos+1); EDIT_SetSel(hItem,cursorpos+1,cursorpos+1); cursorindex=EDIT_GetCursorCharPos(hItem); } //KeyLed_State.wheel=0; break; case MY_MESSAGE_UP://向左移动光标 hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_TILEPATH); cursorpos=EDIT_GetCursorCharPos(hItem); EDIT_SetCursorAtChar(hItem,cursorpos-1); EDIT_SetSel(hItem,cursorpos-1,cursorpos-1); cursorindex=EDIT_GetCursorCharPos(hItem); break; case MY_MESSAGE_WHEEL://处理滚轮事件 hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_TILEPATH); EDIT_SetCursorAtChar(hItem,cursorindex); index=KeyLed_State.wheel; if(KeyLed_State.wheel>=65 && KeyLed_State.wheel <130) index=KeyLed_State.wheel-65; if(KeyLed_State.wheel>=130 && KeyLed_State.wheel <195) index=KeyLed_State.wheel-130; if(KeyLed_State.wheel>=195) index=64; if(KeyLed_State.wheel<0 && KeyLed_State.wheel >= -65) index=KeyLed_State.wheel+65; if(KeyLed_State.wheel<-65 && KeyLed_State.wheel >= -130) index=KeyLed_State.wheel+130; if(KeyLed_State.wheel<-130) index=0; if(cursorindex==EDIT_GetCursorCharPos(hItem)) { EDIT_AddKey(hItem,GUI_KEY_DELETE); EDIT_AddKey(hItem,input_char[index]); cursorpos=EDIT_GetCursorCharPos(hItem); EDIT_SetSel(hItem,cursorpos-1,cursorpos-1); } break; case MY_MESSAGE_BUTTONDELETE://删除字符 hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_TILEPATH); if(WM_HasFocus(hItem)) { EDIT_AddKey(hItem,GUI_KEY_BACKSPACE); cursorindex=EDIT_GetCursorCharPos(hItem); } break; case WM_PAINT://绘制标题栏 GUI_SetColor(GUI_DARKBLUE); GUI_FillRect(0,0,480,22); GUI_SetColor(GUI_DARKGRAY); GUI_SetPenSize(6); GUI_DrawRect(0,0,480-2,222-2); break; default: WM_DefaultProc(pMsg); break; } }
void _cbWindowSetting(WM_MESSAGE* pMsg) { WM_HWIN hWin = pMsg->hWin; WM_HWIN _edit0; WM_HWIN _edit1; int edit_id = 256; int VALUE; int i = 0; switch (pMsg->MsgId) { case WM_CREATE: WIDGET_SetDefaultEffect (&WIDGET_Effect_None); EDIT_SetDefaultTextAlign(GUI_TA_HCENTER | GUI_TA_VCENTER); EDIT_SetDefaultFont(&GUI_Font28); EDIT_CreateEx(200,60,62,30,hWin,WM_CF_SHOW,0,GUI_ID_EDIT0,1);//夜间模式 EDIT_CreateEx(150,110,62,30,hWin,WM_CF_SHOW,0,GUI_ID_EDIT1,1);//音量 EDIT_CreateEx(150,160,62,30,hWin,WM_CF_SHOW,0,GUI_ID_EDIT2,1);//亮度 EDIT_CreateEx(150,210,62,30,hWin,WM_CF_SHOW,0,GUI_ID_EDIT3,2);//时区 EDIT_CreateEx(240,260,62,30,hWin,WM_CF_SHOW,0,GUI_ID_EDIT4,1);//报警音1 EDIT_CreateEx(170,310,62,30,hWin,WM_CF_SHOW,0,GUI_ID_EDIT5,1);//按键音1 EDIT_CreateEx(200,360,62,30,hWin,WM_CF_SHOW,0,GUI_ID_EDIT6,1);//单位显示 EDIT_CreateEx(200,410,62,30,hWin,WM_CF_SHOW,0,GUI_ID_EDIT7,1);//船形显示 for (i = 0; i < 8; i++) { _edit0 = WM_GetDialogItem(hWin, GUI_ID_EDIT0 + i); EDIT_SetText(_edit0,"0"); EDIT_SetpfAddKeyEx (_edit0,_cbEditAddKey); EDIT_SetBkColor(_edit0,1,GUI_LIGHTBLUE); EDIT_SetBkColor(_edit0,0,GUI_WHITE); } break; case WM_PAINT: GUI_SetBkColor (GUI_LIGHTBLUE); GUI_Clear(); for (i = 0; i < 8; i++) { _edit0 = WM_GetDialogItem(hWin, GUI_ID_EDIT0 + i); EDIT_SetTextColor(_edit0,0,GUI_BLACK); } EDIT_SetTextColor (WM_GetDialogItem(hWin, edit_id),0,GUI_WHITE); GUI_SetTextMode(GUI_TEXTMODE_TRANS); GUI_SetColor (GUI_BLACK); GUI_SetFont (&GUI_Font28); GUI_DispStringAt ("系统设置",230,10); GUI_DispStringAt ("01:夜间模式:",5,60); GUI_DispStringAt ("02:音量:",5,110); GUI_DispStringAt ("03:亮度:",5,160); GUI_DispStringAt ("04:时区:",5,210); GUI_DispStringAt ("05:报警音选择:",5,260); GUI_DispStringAt ("06:按键音:",5,310); GUI_DispStringAt ("07:单位设置:",5,360); GUI_DispStringAt ("08:船位显示:",5,410); GUI_DispStringAt ("09:船迹存储时间:",330,60); GUI_DispStringAt ("10:软件更新:",330,110); GUI_DispStringAt ("11:系统版本:",330,160); GUI_SetColor (GUI_WHITE); GUI_SetPenSize(2); GUI_DrawLine(1,50,1,470); GUI_DrawLine(1,50,673,50); GUI_DrawLine(673,50,673,470); GUI_DrawLine(1,470,673,470); break; case WM_KEY: switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) { case GUI_KEY_TAB: //判断当前焦点所在的位置,将焦点移至下一个窗口 downlistfocus++; if (downlistfocus == 369) downlistfocus = 384; if (downlistfocus == 388) downlistfocus = 256; if (downlistfocus == 257) downlistfocus = 368; //设置焦点 WM_SetFocus(WM_GetDialogItem (hWin, downlistfocus)); break; case GUI_KEY_BACKTAB: //判断当前焦点所在的位置,将焦点移至上一个窗口 downlistfocus--; if (downlistfocus == 383) downlistfocus = 368; if (downlistfocus == 367) downlistfocus = 256; if (downlistfocus == 255) downlistfocus = 387; //设置焦点 WM_SetFocus (WM_GetDialogItem(hWin, downlistfocus)); break; case GUI_KEY_RIGHT: break; case GUI_KEY_F1: break; case GUI_KEY_F2: break; case GUI_KEY_SPACE: printf ("ddsf"); break; case GUI_KEY_ENTER: break; case GUI_KEY_UP: break; case GUI_KEY_DOWN: WM_SetFocusOnNextChild(hWin); //edit_id ++; break; case GUI_KEY_LEFT: menufocus -= 5; focuschange = 0; WM_SetFocus(WM_GetDialogItem (hDlg_Menu, menufocus)); WM_Paint(hDlg_Menu); break; case GUI_KEY_MENU: WM_BringToTop (hDlg_FishMap); WM_SetFocus (hDlg_FishMap); menufocus = 368; break; } break; default: WM_DefaultProc(pMsg); } }