OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4198|回复: 1

手写程序问题请教

[复制链接]

49

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-3-27
在线时间
9 小时
发表于 2013-5-7 16:04:37 | 显示全部楼层 |阅读模式

int main(void)
{  
  u8 i=0;      
 u8 tcnt=0;   
 u8 res[10];
 u8 key;     
 u16 pcnt=0;
 u8 mode=4; //默认是混合模式         

   Stm32_Clock_Init(9);//系统时钟设置
 delay_init(72);  //延时初始化
 uart_init(72,9600); //串口1初始化    
 LCD_Init();   //初始化液晶
 LED_Init();         //LED初始化 
 KEY_Init();   //按键初始化                   
 TP_Init();       //触摸屏初始化
 usmart_dev.init(72);//usmart初始化 
  mem_init(SRAMIN); //初始化内部内存池 
 alientek_ncr_init();//初始化手写识别

 OINT_COLOR=RED;     
  while(font_init())     //检查字库
 {    
  LCD_ShowString(60,50,200,16,16,"Font Error!");
  delay_ms(200);     
  LCD_Fill(60,50,240,66,WHITE);//清除显示     
 }
RESTART:
  Show_Str(60,10,200,16,"战舰 STM32开发板",16,0);         
 Show_Str(60,30,200,16,"手写识别实验",16,0);         
 Show_Str(60,50,200,16,"正点原子@ALIENTEK",16,0);         
 Show_Str(60,70,200,16,"KEY0:MODE KEY2:Adjust",16,0);      
 Show_Str(60,90,200,16,"识别结果:",16,0);      
 LCD_DrawRectangle(19,114,220,315);
  OINT_COLOR=BLUE;     
 Show_Str(96,207,200,16,"手写区",16,0); 
 tcnt=100;
 while(1)
 {
  key=KEY_Scan(0);
  if(key==KEY_LEFT)
  {
   TP_Adjust();   //屏幕校准
   LCD_Clear(WHITE);
   goto RESTART; //重新加载界面
  }
  if(key==KEY_RIGHT) 
  {
   LCD_Fill(20,115,219,314,WHITE);//清除当前显示
   mode++;
   if(mode>4)mode=1;
   switch(mode)
   {
    case 1:
     Show_Str(80,207,200,16,"仅识别数字",16,0); 
     break;      
    case 2:
     Show_Str(64,207,200,16,"仅识别大写字母",16,0); 
     break;      
    case 3:
     Show_Str(64,207,200,16,"仅识别小写字母",16,0); 
     break;      
    case 4:
     Show_Str(88,207,200,16,"全部识别",16,0); 
     break; 
   }
   tcnt=100;
  }    
   tp_dev.scan(0);//扫描
   if(tp_dev.sta&TP_PRES_DOWN)//有按键被按下
  {     
   delay_ms(1);//必要的延时,否则老认为有按键按下.
    tcnt=0;//松开时的计数器清空        
   if((tp_dev.x<220&&tp_dev.x>=20)&&(tp_dev.y<315&&tp_dev.y>=115))
   {   
    TP_Draw_Big_Point(tp_dev.x,tp_dev.y,BLUE);//画图
    if(pcnt<200)//总点数少于200
    {
     if(pcnt)
     {
      if((READ_BUF[pcnt-1].y!=tp_dev.y)&&(READ_BUF[pcnt-1].x!=tp_dev.x))//x,y不相等
      {
       READ_BUF[pcnt].x=tp_dev.x;
       READ_BUF[pcnt].y=tp_dev.y;
       pcnt++;
      } 
     }else
     {
      READ_BUF[pcnt].x=tp_dev.x;
      READ_BUF[pcnt].y=tp_dev.y;
      pcnt++;
     }   
    }                
   } 
  }else //按键松开了
  {
   tcnt++;
   delay_ms(10);  
   //延时识别
   i++;      
   if(tcnt==40)
   {
    if(pcnt)//有有效的输入  
    {
     printf("总点数:%d\r\n",pcnt);
     alientek_ncr(READ_BUF,pcnt,6,mode,(char*)res);
     printf("识别结果:%s\r\n",res);
     pcnt=0;              
       OINT_COLOR=BLUE;//设置画笔蓝色
      LCD_ShowString(60+72,90,200,16,16,res);    
    }
    LCD_Fill(20,115,219,314,WHITE);
   }
  } 
  if(i==30)
  {
   i=0;
   LED0=!LED0;
  }    
 }                         
}


上面程序中为什么要放tcnt=100;语句

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-7 17:56:26 | 显示全部楼层
让在显示区域的提示字,显示的时间长一点。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-20 09:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表