📄 getinputnum.c
字号:
#include "lcd.h"
#include "func.h"
#include "interface.h"
#include "key.h"
typedef unsigned int uint;
typedef unsigned char uchar;
typedef unsigned long ulong;
/////////////////////////////////////////////////////////
uchar GetInputString(uchar x,uchar y,uchar len,char *temp)
{
uchar ilen=1,i=0,key;
bit sign=0;
SetPos(x,y);
for(i=0;i<len;i++)
{
LcdPrint(" ",1);
}
if(len%2==1){LcdPrint(" ",1);}
ShowCursor();
SetPos(x,y);
LcdPrint(" ",1);
temp[0]=' ';
while(1)
{
key=WaitKey();
if(key<=9 && ilen<len)
{
key+=0x30;
temp[ilen]=key;
ilen++;
}
else
{
switch(key)
{
case 0x0a:temp[ilen]='.';
ilen++;
break;
case 0x0b:sign=!sign;
if(sign)
{temp[0]='-';}
else
{temp[0]=' ';}
break;
case 0x0e:SetPos(x,y);
for(i=0;i<=len;i++)
{
LcdPrint(" ",1);
}
sign=0;
temp[0]=' ';
SetPos(x,y);
ilen=1;
break;
case 0x0f:HideCursor();
return ilen;
break;
default:break;
}
}
SetPos(x,y);
LcdPrint(temp,ilen);
}
}
ulong GetInputNum(uchar x,uchar y,uchar len)
{
ulong input=0;
uchar ilen=0,i;
SetPos(x,y);
for(i=0;i<len;i++)
{
LcdPrint(" ",1);
}
if(len%2==1)
{
LcdPrint(" ",1);
}
ShowCursor();
SetPos(x,y);
while(1)
{
g_KeyDown=0;
while(!g_KeyDown){};
if(g_KeyValue<=9 && ilen<len)
{
input*=10;
input+=g_KeyValue;
g_KeyValue+=0x30;
LcdPrint(&g_KeyValue,1);
ilen++;
g_KeyDown=0;
}
else
{
switch(g_KeyValue)
{
case 0x0f:g_KeyDown=0;
HideCursor();
return input;
break;
case 0x0e:SetPos(x,y);
for(i=0;i<len;i++)
{
LcdPrint(" ",1);
}
SetPos(x,y);
input=0;
ilen=0;
g_KeyDown=0;
break;
default:break;
}
}
}
return input;
}
float GetInputFloatNum(uchar x,uchar y,uchar len)
{
float integ=0,fra=0;
uchar i;
char temp[20];
len=GetInputString(x,y,len,temp);
i=1;
while(i<len && temp[i]!='.')
{
integ*=10;
integ+=temp[i]-0x30;
i++;
}
i++;
while(i<len)
{
fra+=temp[i]-0x30;
fra/=10;
i++;
}
if(temp[0]=='-')
{
return -1*(integ+fra);
}
else
{
return integ+fra;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -