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

📄 widget_editvalues.c

📁 UCOS2+UCGUI移植到KEIL C51的源代码
💻 C
字号:
/*
*********************************************************************************************************
*                                                礐/GUI
*                        Universal graphic software for embedded applications
*
*                       (c) Copyright 2002, Micrium Inc., Weston, FL
*                       (c) Copyright 2000, SEGGER Microcontroller Systeme GmbH          
*
*              礐/GUI is protected by international copyright laws. Knowledge of the
*              source code may not be used to write a similar product. This file may
*              only be used in accordance with a license and should not be redistributed 
*              in any way. We appreciate your understanding and fairness.
*
* File        : WIDGET_EditValues.c
* Purpose     : 礐/GUI sample code demonstrating the use of edit functions
*********************************************************************************************************
*/


#include "gui.H"
#include "edit.h"
#include <string.h>

/*******************************************************************
*
*          Edit strings
*
********************************************************************
*/

static void EditStrings(void) {
  char TestString[25]; /* String to be changed */
  GUI_Clear();
  GUI_DispString("Edit strings\n");
  GUI_DispString("Press <ENTER> or <ESC> for exit\n");
  GUI_DispString("Press <UP> or <DOWN> to modify\n");
  GUI_DispString("Press <INSERT> to change mode\n");
  EDIT_SetDefaultFont(&GUI_Font13B_ASCII); /* Default font for EDIT-widget */
  /* Edit string left aligned */
  GUI_GotoXY(10, 60);
  strcpy(TestString, "left aligned...");
  EDIT_SetDefaultTextAlign(GUI_TA_LEFT | GUI_TA_VCENTER);
  GUI_EditString(TestString, sizeof(TestString) - 1, 140);
  GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
  GUI_DispString(TestString);
  /* Edit string right aligned */
  GUI_GotoXY(10, 80);
  strcpy(TestString, "right aligned...");
  EDIT_SetDefaultTextAlign(GUI_TA_RIGHT | GUI_TA_VCENTER);
  GUI_EditString(TestString, sizeof(TestString) - 1, 140);
  GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
  GUI_DispString(TestString);
  /* Edit string centered */
  GUI_GotoXY(10, 100);
  strcpy(TestString, "centered...");
  EDIT_SetDefaultTextAlign(GUI_TA_CENTER | GUI_TA_VCENTER);
  GUI_EditString(TestString, sizeof(TestString) - 1, 140);
  GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
  GUI_DispString(TestString);
  GUI_WaitKey();
}

/*******************************************************************
*
*          Edit floatingpoint values
*
********************************************************************
*/

static void EditFloatingpointValues(void) {
  float Ret;
  float Value =  3456.7654f; /* Value to be edited */
  float Min   = -2000.1111f;  /* Minimum */
  float Max   =  8888.7777f;  /* Maximum */
  int Len   = 10;         /* Number of digits including sign and decimal point */
  int Shift = 4;          /* Position of decimal point */
  GUI_Clear();
  GUI_DispString("Edit floatingpoint values\n");
  GUI_DispString("Press <ENTER> or <ESC> for exit\n");
  GUI_DispString("Press <UP> or <DOWN> to modify\n");
  GUI_DispString("\nMinium:  ");
  GUI_DispFloat(Min, Len);
  GUI_DispString("\nMaximum: ");
  GUI_DispFloat(Max, Len);
  GUI_DispNextLine();
  EDIT_SetDefaultFont(&GUI_Font13B_ASCII); /* Default font for EDIT-widget */
  EDIT_SetDefaultTextAlign(GUI_TA_RIGHT | GUI_TA_VCENTER);
  /* Edit floatingpoint value in signed mode */
  GUI_GotoXY(10, 60);
  Ret = GUI_EditFloat(Value, Min, Max, Len, 100, Shift, GUI_EDIT_SIGNED); /* Display signs in every case */
  GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
  GUI_DispFloat(Ret, Len);
  /* Edit floatingpoint value in normal mode */
  GUI_GotoXY(10, 100);
  Ret = GUI_EditFloat(Value, Min, Max, Len, 100, Shift, GUI_EDIT_NORMAL);
  GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
  GUI_DispFloat(Ret, Len);
  GUI_WaitKey();
}

/*******************************************************************
*
*          Edit decimal values
*
********************************************************************
*/

static void EditDecimalValues(void) {
  I32 Ret;
  I32 Value = -1234; /* Value to be edited */
  I32 Min   = -2000; /* Minimum */
  I32 Max   =  5000; /* Maximum */
  int Len   = 6;     /* Number of digits including sign and decimal point */
  int Shift = 2;     /* Position of decimal point */
  GUI_Clear();
  GUI_DispString("Edit decimal values\n");
  GUI_DispString("Press <ENTER> or <ESC> for exit\n");
  GUI_DispString("Press <UP> or <DOWN> to modify\n");
  GUI_DispString("\nMinium:  ");
  GUI_DispDecShift(Min, Len, Shift);
  GUI_DispString("\nMaximum: ");
  GUI_DispDecShift(Max, Len, Shift);
  GUI_DispNextLine();
  EDIT_SetDefaultFont(&GUI_Font13HB_ASCII); /* Default font for EDIT-widget */
  EDIT_SetDefaultTextAlign(GUI_TA_RIGHT | GUI_TA_VCENTER);
  /* Edit decimal value in signed mode */
  GUI_GotoXY(10, 60);
  Ret = GUI_EditDec(Value, Min, Max, Len, 100, Shift, GUI_EDIT_SIGNED); /* Display signs in every case */
  GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
  GUI_DispSDecShift(Ret, Len, Shift);
  /* Edit decimal value in normal mode */
  GUI_GotoXY(10, 80);
  Ret = GUI_EditDec(Value, Min, Max, Len, 100, Shift, GUI_EDIT_NORMAL); /* Display only negative sign */
  GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
  GUI_DispDecShift(Ret, Len, Shift);
  GUI_WaitKey();
}

/*******************************************************************
*
*          Edit binary values using different fonts
*
********************************************************************
*/

static void EditBinValues(void) {
  U32 Ret;
  U32 Value = 0x1234; /* Value to be edited */
  U32 Min   = 0x1000; /* Minimum */
  U32 Max   = 0x4fff; /* Maximum */
  int Len   = 16;     /* Number of digits */
  GUI_Clear();
  GUI_DispString("Edit binary values with different alignements\n");
  GUI_DispString("Press <ENTER> or <ESC> for exit\n");
  GUI_DispString("Press <UP> or <DOWN> to modify\n");
  GUI_DispString("\nMinium:  ");
  GUI_DispBin(Min, Len);
  GUI_DispString("\nMaximum: ");
  GUI_DispBin(Max, Len);
  GUI_DispNextLine();
  EDIT_SetDefaultTextAlign(GUI_TA_RIGHT | GUI_TA_VCENTER);
  /* GUI_Font8x16 */
  GUI_GotoXY(10, 60);
  EDIT_SetDefaultFont(&GUI_Font8x16);
  Ret = GUI_EditBin(Value, Min, Max, Len, 0);
  GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
  GUI_DispBin(Ret, Len);
  /* GUI_Font6x8 */
  GUI_GotoXY(10, 80);
  EDIT_SetDefaultFont(&GUI_Font6x8);
  Ret = GUI_EditBin(Value, Min, Max, Len, 0);
  GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
  GUI_DispBin(Ret, Len);
  /* GUI_Font10S_ASCII */
  GUI_GotoXY(10, 100);
  EDIT_SetDefaultFont(&GUI_Font10S_ASCII);
  Ret = GUI_EditBin(Value, Min, Max, Len, 140);
  GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
  GUI_DispBin(Ret, Len);
  GUI_WaitKey();
}

/*******************************************************************
*
*          Edit hexadecimal values with different alignements
*
********************************************************************
*/

static void EditHexValues(void) {
  U32 Ret;
  U32 Value = 0x12345; /* Value to be edited */
  U32 Min   = 0x10000; /* Minimum */
  U32 Max   = 0x3ffff; /* Maximum */
  int Len   = 5;       /* Number of digits */
  int XSize = 140;     /* XSize of EDIT-widget */
  GUI_Clear();
  GUI_DispString("Edit hexadecimal values with different alignements\n");
  EDIT_SetDefaultFont(&GUI_Font16B_ASCII); /* Default font for EDIT-widget */
  GUI_DispString("Press <ENTER> or <ESC> for exit\n");
  GUI_DispString("Press <UP> or <DOWN> to modify\n");
  GUI_DispString("\nMinium:  ");
  GUI_DispHex(Min, Len);
  GUI_DispString("\nMaximum: ");
  GUI_DispHex(Max, Len);
  GUI_DispNextLine();
  /* Center */
  GUI_GotoXY(10, 60);
  EDIT_SetDefaultTextAlign(GUI_TA_CENTER | GUI_TA_VCENTER);
  Ret = GUI_EditHex(Value, Min, Max, Len, XSize);
  GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
  GUI_DispHex(Ret, Len);
  /* Left */
  GUI_GotoXY(10, 80);
  EDIT_SetDefaultTextAlign(GUI_TA_LEFT | GUI_TA_VCENTER);
  Ret = GUI_EditHex(Value, Min, Max, Len, XSize);
  GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
  GUI_DispHex(Ret, Len);
  /* Right */
  GUI_GotoXY(10, 100);
  EDIT_SetDefaultTextAlign(GUI_TA_RIGHT | GUI_TA_VCENTER);
  Ret = GUI_EditHex(Value, Min, Max, Len, XSize);
  GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
  GUI_DispHex(Ret, Len);
  GUI_WaitKey();
}

/*******************************************************************
*
*                 main
*
********************************************************************
*/

void main(void) {
  GUI_Init();
  while(1) {
    EditHexValues();
    EditBinValues();
    EditDecimalValues();
    EditFloatingpointValues();
    EditStrings();
  }
}

⌨️ 快捷键说明

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