OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...
查看: 399|回复: 6

求助enwim软键盘问题,系统不是hardfault就是被复位

[复制链接]

  离线 

43

主题

404

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1089
金钱
1089
注册时间
2017-8-7
在线时间
152 小时
发表于 2018-5-17 16:56:53 | 显示全部楼层 |阅读模式
10金钱
最近因为需要,移植了原子的历程,emwin扩展历程40软键盘实验,前后调试了好几天,实在是想不出问题原因了发帖求助大神
说下问题:我是用button按钮控制调出一个framewin窗口,然后窗口里有multiedit多文本控件,调这个窗口同时软键盘也被调用出来,当我什么也不变,关闭键盘和界面后再打开就没问题,因为默认是英文输入法,当我换成符号输入或者数字输入或者中文输入时,不打字在退出界面和关闭键盘,再打开就会出现卡死,系统进入hardfault
很奇怪

我认为问题应该出现在键盘这里,不调用键盘怎么整都没事,调用键盘,键盘的按钮一个也不按,退出再进来就没问题,一旦切换输入模式,退出再进来就完蛋,不知各位坛友有没有遇到过这种问题,也求助论坛大佬给个指点建议,我可以多多尝试,感谢感谢。

最佳答案

查看完整内容[请看2#楼]

最后问题还是自己解决了,因为实在是找不到为何切换输入法就死机或者复位的原因,这个我说一下不是抱怨历程代码,只是说一下实际测试,我实际测试实验40软键盘实验,在里面加了控制键盘的开关之后,程序同样会死机,所以说应该是原子团队在制作实验DEMO的时候仅是实现了实验效果,毕竟是免费提供的历程,已经非常感激非常仁义尽致了,况且每个人都有每个人的用法,有的人用键盘也就是一直开着的不去关闭它,有的就需要关闭,这个先 ...
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

  离线 

43

主题

404

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1089
金钱
1089
注册时间
2017-8-7
在线时间
152 小时
 楼主| 发表于 2018-5-17 16:56:54 | 显示全部楼层
最后问题还是自己解决了,因为实在是找不到为何切换输入法就死机或者复位的原因,这个我说一下不是抱怨历程代码,只是说一下实际测试,我实际测试实验40软键盘实验,在里面加了控制键盘的开关之后,程序同样会死机,所以说应该是原子团队在制作实验DEMO的时候仅是实现了实验效果,毕竟是免费提供的历程,已经非常感激非常仁义尽致了,况且每个人都有每个人的用法,有的人用键盘也就是一直开着的不去关闭它,有的就需要关闭,这个先不说了,说我最后解决的方式是修改了一下键盘的方式,由原来的切换页面,改成了不切换页面,我只需要汉字和数字,不要字母和符号,所以我就把字符符号都去掉了,把9宫格汉字键盘和数字整合到一起一个页面,这样就避免了切换页面带来的异常,最后还有一个问题说一下,因为发现9宫格也是用数字2到9来辨别字母的,和数字重复,这里我用一个巧妙方式避开了这个问题,1到9用a到i来表示,在调用的时候减去0x30,查询ASCII码表会知道原因,就是数字1到9啦,其实这个问题并没有实际的解决,还是因为我对ucos系统不是很了解,大神就会完美的解决切换键盘的问题,我只能暂用技巧避开了一下
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

  离线 

43

主题

404

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1089
金钱
1089
注册时间
2017-8-7
在线时间
152 小时
 楼主| 发表于 2018-5-17 17:42:13 | 显示全部楼层
自顶   
回复

使用道具 举报

  离线 

43

主题

404

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1089
金钱
1089
注册时间
2017-8-7
在线时间
152 小时
 楼主| 发表于 2018-5-17 19:08:21 | 显示全部楼层
试了隐藏键盘,同样也是不好使啊,放上代码,求助
[C] 纯文本查看 复制代码
static void _cb7Dialog(WM_MESSAGE * pMsg) 
{   
	  WM_HWIN hFrame;
    WM_HWIN hItem;
	  WM_MESSAGE Msg;
		WM_HWIN hWin = pMsg->hWin;
	  u8 dbuf[50];
	  int datalen=0;
	  int     NCode;
    int     Id;
    switch (pMsg->MsgId) 
		{
				case WM_PAINT:                       

				break;
        case WM_INIT_DIALOG:
            hItem = pMsg->hWin;
						FRAMEWIN_SetFont(hItem, &GUI_FontHZ24);
            FRAMEWIN_SetTextColor(hItem,0x0000FFFF);
            FRAMEWIN_SetTextAlign(hItem,GUI_TA_HCENTER |GUI_TA_VCENTER);
            FRAMEWIN_SetText(hItem,"¼èë3éÔ±DÅÏ¢");
				
			
						GUI_SetTextMode(GUI_TM_TRANS);
						TEXT_SetTextColor(WM_GetDialogItem(hWin,ID_TEXT_14), GUI_RED);
						TEXT_SetFont(WM_GetDialogItem(hWin,ID_TEXT_14), &GUI_FontHZ24);
	
				
						hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_14);
						BUTTON_SetFont(hItem, &GUI_FontHZ32);
						BUTTON_SetText(hItem, "íË3ö");
				
						hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_15);
						BUTTON_SetFont(hItem, &GUI_FontHZ32);
						BUTTON_SetText(hItem, "è·èÏ");
				
//						keypad_dev.xpos=0;
//						keypad_dev.ypos=160;
//						keypad_dev.width=480;
//						keypad_dev.height=320;
				  if(aa==0)
					 {
								keypad_dev.padtype=ENGLISH_KEYPAD;				//ĬèÏÎaó¢ÎļüÅì
								keypad_dev.signpad_flag=0;	
								keypad_dev.signpad_num=2;
								keypad_dev.inputlen=0;
								keypad_dev.pynowpage=0;
								keypad_dev.cur_index=0;
								keypad_dev.sta=0;
		//						
								//éèÖÃkeypadËùê1óÃμÄ°′Å¥μÄƤ·ô
								BUTTON_SetDefaultSkin(_DrawSkinFlex_BUTTON); 	//éèÖÃBUTTONμÄƤ·ô
								//′′½¨keypad
								keypad_dev.hKeypad = WM_CreateWindowAsChild(0,160,480,320, WM_HBKWIN, WM_CF_SHOW | WM_CF_STAYONTOP, _cbKeyPad, 0);
								
								//éèÖÃnotepadêôDÔ
								BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);
								FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);
								FRAMEWIN_SetDefaultTextAlign(GUI_TA_HCENTER);
						 aa=1;
					 }
					 if(aa==1)
						 WM_ShowWindow(keypad_dev.hKeypad);

						//3õê¼»ˉEDIT
						hMulti = WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0);
						MULTIEDIT_EnableBlink(hMulti,500,1);			//¿aÆô1a±ê,ÖüÆú500ms
					//	MULTIEDIT_SetInsertMode(hMulti,1);  //¿aÆô2åèëÄ£ê½
					//	MULTIEDIT_SetMaxNumChars(hMulti,20);
						MULTIEDIT_SetFont(hMulti, &GUI_FontHZ24);
					//	MULTIEDIT_SetFocussable(hMulti,1);
				  // 	MULTIEDIT_SetText(hMulti, "ÄãoÃÄã»1\r\nÄãoÃÄãoÃ");
            break;
        case WM_NOTIFY_PARENT:
						 Id = WM_GetId(pMsg->hWinSrc);
						 NCode = pMsg->Data.v;
						 switch(Id)
						 {			 
								case ID_BUTTON_14: 
										//hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_14);
										switch(NCode) 
										{					
											case WM_NOTIFICATION_CLICKED:
												break;
											case WM_NOTIFICATION_RELEASED: //°′Å¥±»°′ÏÂ2¢êí·Å		
											    	hMulti = WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0);
												    MULTIEDIT_SetText(hMulti,NULL);
														WM_DeleteWindow(hMulti);
											    	WM_HideWindow(keypad_dev.hKeypad);									
														Msg.MsgId=WM_DELETEWIN;
														Msg.hWinSrc=pMsg->hWin;											  
														WM_SendMessage(WM_HBKWIN,&Msg);																	
											 break;	
										}
										break;
								case ID_MULTIEDIT_0:	//EDIT¿Ø¼tí¨ÖaÏûÏ¢
										switch(NCode) 
										{
											case WM_NOTIFICATION_CLICKED:
												break;
											case WM_NOTIFICATION_RELEASED:
									//	keypad_dev.hKeypad = WM_CreateWindowAsChild(keypad_dev.xpos,keypad_dev.ypos,keypad_dev.width,keypad_dev.height, WM_HBKWIN, WM_CF_SHOW | WM_CF_STAYONTOP, _cbKeyPad, 0);

												break;
											case WM_NOTIFICATION_VALUE_CHANGED:
												break;
										}
										break;
								case ID_BUTTON_15:
										switch(NCode)
										{
											case WM_NOTIFICATION_CLICKED:
												break;
											
											case WM_NOTIFICATION_RELEASED:
												   hItem=WM_GetDialogItem(pMsg->hWin,ID_MULTIEDIT_0);
											     datalen=MULTIEDIT_GetTextSize(hItem)+1;
												   MULTIEDIT_GetText(hItem,(char*)dbuf,datalen); 
													 TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_14), (const char *)dbuf);
				
												break;
										}	
										break;
								
						}
				break;
        default:
            WM_DefaultProc(pMsg);
            break;
    }
}
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

  离线 

512

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
133766
金钱
133766
注册时间
2010-12-1
在线时间
1284 小时
发表于 2018-5-18 01:20:13 | 显示全部楼层
帮顶
回复

使用道具 举报

  离线 

43

主题

404

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1089
金钱
1089
注册时间
2017-8-7
在线时间
152 小时
 楼主| 发表于 2018-5-18 12:48:45 | 显示全部楼层
自顶,键盘只要切换数字符号或者汉字,在返回英文,关闭键盘在打开键盘就会复位,切换后不返回英文模式,关闭键盘再打开就会进入hardfault
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

  离线 

43

主题

404

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1089
金钱
1089
注册时间
2017-8-7
在线时间
152 小时
 楼主| 发表于 2018-6-22 18:37:58 | 显示全部楼层
贴个图,后来需要英文,又改了个英文+数字的键盘,比中文+数字的好弄多了
IMG_20180622_183604.jpg
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

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

本版积分规则




关闭

报名原子哥新品发布会&粉丝见面会上一条 /1 下一条

正点原子公众号

QQ|联系我们|手机版|官方淘宝店|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-10-22 01:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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