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

📄 taxcommon.c

📁 本程序在S3C44B0 uClinux的嵌入式GUI
💻 C
📖 第 1 页 / 共 2 页
字号:
      if(*Ch == NumArr[i]) break;  if(i < 10) *Ch = 0x30+i; else *Ch == 0xff;  */  if( Ch >= 0x30 && Ch <= 0x39 ) NumFlag = 1;  else NumFlag = 0;  return NumFlag; } /*// extern void LCD_DisplayOneLine(int Row,int Col,BYTE str[],char SorD,char WorB,int ClrFlag,int VoiceAct); //输入 数字串,返回 8_BCD //return 0x1b->0表示取消输入,<CR>表示结束输入/<F8>表示继续输入->strlen(Str)int  GetMoneyStr(BYTE Str[],int row,WORD *InKey){ int DispCol = 0;  BYTE BCDstr[20];  BYTE MoneyStr[18]={"           0.00"};  int DotFlag=0,DotCnt=0,IntCnt=0; //进入小数点处理=1,小数点后位数,整数位数  int Key=0,cc;//,LastKey=0;  //int err = 0;  memset(BCDstr,0,20); memset(BCDstr,'0',16);  LCD_DisplayOneLine(row,DispCol,MoneyStr,'D','W',1,0);  while( !(Key == 0x1b || Key == 0x0d) )  {   WatchdogReset(); //Resets the watchdog timer periodically to prevent timeout.      Key = (BYTE)(getch());      if(Key==0) { Key = (BYTE)(getch());		   //LastKey = 0xff;		   Key = 0x4200; }      //printf("\n%x",Key);      switch(Key)      { case'0':case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9':	 if(DotFlag==0) //未进入小数处理	 { if(IntCnt==12) ;	   else	   if(IntCnt==0 && Key=='0') ;	   else	   { if(IntCnt==0) MoneyStr[11]=0x20;	     for(cc=0;cc<11;cc++) MoneyStr[cc]=MoneyStr[cc+1]; //整数数字前移	     MoneyStr[11]=(BYTE)Key;	     IntCnt++;	   }	 }else	 { //已进入小数处理	   if(DotCnt==2) ;	   else	   {if(DotCnt<2)	      DotCnt++;	    if(DotCnt<=2)	      MoneyStr[12+DotCnt]=(BYTE)Key;	   }	 }	 break;	case '.':	 DotFlag=1; break;	case 0x08:	 if(DotFlag==1)	 { MoneyStr[12+DotCnt]=0x30; DotCnt--;	   if(DotCnt==0) DotFlag=0; //取消小数状态	 }	 else	 { for(cc=11;cc>0;cc--) MoneyStr[cc]=MoneyStr[cc-1]; //整数数字回退	   MoneyStr[0]=0x20; IntCnt--;	   if(IntCnt==0) MoneyStr[11]='0';	 }	 break;	case 0x1b:		IntCnt = 0; DotCnt = 0; *InKey = 0x1b;		break;	case 0x4200: //[F8]	case 0x0d:   //<CR>	 ByteMove((char*)&BCDstr[14-IntCnt],(char*)&MoneyStr[15-IntCnt-2-1],IntCnt);	 ByteMove((char*)&BCDstr[14],(char*)&MoneyStr[13],2);	 DotCnt = 0; memset(Str,0,9);	 for(cc=0;cc<8;cc++)	 {   Str[cc] = IntToBCD((WORD)(10*(BCDstr[DotCnt]-0x30)+(BCDstr[DotCnt+1]-0x30)));	     DotCnt+=2;	 }	 if(Key==0x4200) { *InKey = 0x4200; Key = 0x0d; }	 else *InKey = 0x0d;	 break;      } //end switch      //显示      LCD_DisplayOneLine(row,DispCol,MoneyStr,'D','W',1,0);  }  if((IntCnt + DotCnt)==0) //0x1b     IntCnt = 0;  else  {  IntCnt += 2;  }  return  IntCnt;}*/ //从x1,y1,到y2范围,输入数字字符串StrNum[] //数字串长度为Len //PW_Flag==1->按密码串显示,==0->按ASC数字显示 //返回: -1->用户按下ESC,==Len输入数字串长度int KB_NumStrInput(int x1,int y1,int y2,char SorD,int Len,int PW_Flag,BYTE StrNum[],int CR_need) { int StrLen,CursorCnt=0;   int CursorMode,ExitFlag;   WORD KBch;   BYTE Hch,Lch;   Lch = 0; StrLen = 0; CursorMode = 0x01; ExitFlag = 0;   //清屏幕,从X1,Y1--X1,Y2   //显示光标(x1,y1,CursorMode); CursorMode = !CursorMode;   LCD_CursorDiplay(x1,y1,CursorMode,SorD); //CursorMode = !CursorMode;   do   {  //读键入 KBch = ;      if(KB_GetStatus())  //得到键盘状态,无键入时函数返回0x0011      { //有键入	KBch = KB_GetValue();   //得到键盘输入码	if(IsNumeric( KBch ) && StrLen < Len)	{ Hch = (BYTE)(KBch & 0xff);	  if(PW_Flag==1)	   //显示 X,x1,y1+StrLen,SorD	    //显示一字  (x,y,Hch,Lch) x (0-7), y(0-127)	    LCD_DisplayOneChr(x1,(y1+StrLen)*6,'X',Lch,SorD,'W');	  else	   //显示 数字,x1,y1+StrLen,SorD	   LCD_DisplayOneChr(x1,(y1+StrLen)*6,Hch,Lch,SorD,'W');	  StrNum[StrLen] = Hch;	  StrLen ++;	  if(CR_need==0 && StrLen==Len)	     ExitFlag = 1;	}else	{ switch(KBch)	  { case K_CR1: case K_CR2:		  if(CR_need!=0 && StrLen==Len)		     ExitFlag = 1;		  break;	    case K_ESC: //处理清除键		  StrLen = -1; StrNum[0] = 0;		  break;	    case K_BS:  //处理退格键		  if(StrLen > 0)		  {  //清本位置上的光标		     //显示 空格,x1,y1+StrLen,SorD		     Hch = 0x20; Lch=0;		     //LCD_DisplayOneLine( x1,(y1+StrLen-1)*6 ," ",'D',0,0 );		     LCD_DisplayOneChr(x1,(y1+StrLen-1)*6,Hch,Lch,SorD,0);		     //清 输入缓冲区		     StrNum[StrLen]=0; StrLen --;		     //显示 左边光标		     LCD_CursorDiplay(x1,y1+StrLen,CursorMode,SorD);                      CursorMode = (CursorMode==0x01)? 0x02:0x01;		  }		  break;	  }	}      }else  //无键入	     usleep(800000);  //delay(500);      if(StrLen==-1) break;      //显示光标(x1,y1+StrLen,CursorMode); CursorMode = !CursorMode;      LCD_CursorDiplay(x1,y1+StrLen,CursorMode,SorD);       CursorCnt ++;      if( CursorCnt==10 ) { CursorCnt=0; CursorMode = ( CursorMode==0x01)? 0x02:0x01; }   }while(ExitFlag==0);   //}while(StrLen!=Len); // || (emuKB_ch!=K_CR1 || emuKB_ch!=K_CR2));   if(StrLen!=-1) StrNum[StrLen]=0;   //返回数字串长度   LCD_DisplayOneChr(x1,(y1+StrLen)*6,0x20,0,SorD,0); //清除 光标   return StrLen; }/*int KB_NumStrInput2(int x1,int y1,int y2,char SorD,int Len,int PW_Flag,BYTE StrNum[],int CR_need) { int StrLen;   int CursorMode,ExitFlag;   WORD KBch;   BYTE Hch,Lch;   Lch = 0; StrLen = 0; CursorMode = 0x01; ExitFlag = 0;   //清屏幕,从X1,Y1--X1,Y2   //显示光标(x1,y1,CursorMode);   LCD_CursorDiplay(x1,y1,CursorMode,SorD); //CursorMode = 0x01;   do   {  //读键入 KBch = ;      //if( KB_GetStatus() !=0x11)  //得到键盘状态,无键入时函数返回0x0011      if( KB_GetStatus() )  //得到键盘状态,无键入时函数返回0x0011      { //有键入	KBch = KB_GetValue();   //得到键盘输入码        printf("KB ch 1 %x \n",KBch);	if(IsNumeric(KBch) && StrLen < Len)	{ Hch = (BYTE)(KBch & 0xff);	  if(PW_Flag==1)   //显示 X,x1,y1+StrLen,SorD    //显示一字  (x,y,Hch,Lch) x (0-7), y(0-127)	    LCD_DisplayOneChr(x1,(y1+StrLen)*6,'X',Lch,SorD,'W');	  else	   //显示 数字,x1,y1+StrLen,SorD	   LCD_DisplayOneChr(x1,(y1+StrLen)*6,Hch,Lch,SorD,'W');	  StrNum[StrLen] = Hch;	  StrLen ++;	  if(CR_need==0 && StrLen<=Len&&StrLen>0) ExitFlag = 1;	}else{           printf("KB ch 2 %x \n",KBch);          switch(KBch)	  { case K_CR1: case K_CR2:		  if(CR_need!=0 && StrLen<=Len&&StrLen>0)		     ExitFlag = 1;		  break;	    case K_ESC: //处理清除键		  StrLen = -1; StrNum[0] = 0;		  break;	    case K_BS:  //处理退格键		  if(StrLen > 0)		  {  //清本位置上的光标		     //显示 空格,x1,y1+StrLen,SorD		     Hch = 0x20;		     LCD_DisplayOneChr(x1,(y1+StrLen)*6,Hch,Lch,SorD,'W');		     //清 输入缓冲区		     StrNum[StrLen]=0; StrLen --;		     //显示 左边光标		     LCD_CursorDiplay(x1,y1+StrLen,CursorMode,SorD); CursorMode = !CursorMode;		  }		  break;	  }	}      }else{  //无键入	     usleep(250000); //delay(500);             printf("sm debug here!!\n");      }      if(StrLen==-1) break;      //显示光标(x1,y1+StrLen,CursorMode); CursorMode = !CursorMode;      LCD_CursorDiplay(x1,y1+StrLen,CursorMode,SorD);       CursorMode = ( CursorMode==0x01 )? 0x02:0x01;   }while(ExitFlag==0);   //}while(StrLen!=Len); // || (emuKB_ch!=K_CR1 || emuKB_ch!=K_CR2));   if(StrLen!=-1) StrNum[StrLen]=0;   //返回数字串长度   return StrLen; } */     /*   //测试 时钟   //char *wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat" };   struct tm *p;     time_t timep;      time(&timep);   //取得当前时间和日期   p = gmtime(&timep);   printf("\n%4d-%2d-%2d\n",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);   printf("%s;%d;%d;%d\n",wday[p->tm_wday], p->tm_hour, p->tm_min, p->tm_sec); */ //日期时间函数//得到系统日期字符串 YYYY-MM-DDvoid  TC_GetSysDateStr( char DateStr[] ){  struct tm *p;     time_t timep;      time( &timep );   //取得当前时间和日期   p = gmtime(&timep);   printf("\n%4d-%2d-%2d\n",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);   //memset( DateStr,'-',10 ); //填'-'   WordToAsc( (BYTE *)DateStr ,(WORD)(1900+p->tm_year) , 4 ); //YYYY   WordToAsc( (BYTE *)&DateStr[5] ,(WORD)(1+p->tm_mon) , 2 ); //-MM   WordToAsc( (BYTE *)&DateStr[8] ,(WORD)(p->tm_mday) , 2 ); //-DD   DateStr[4]='-'; DateStr[7]='-';   /*   memmove( DateStr ,"2004" , 4 );   memmove( &DateStr[5] ,"03" , 2 );   memmove( &DateStr[8] ,"08" , 2 );   */   DateStr[10] = 0;   	}

⌨️ 快捷键说明

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