初级会员
- 积分
- 116
- 金钱
- 116
- 注册时间
- 2019-4-23
- 在线时间
- 37 小时
|
本人小渣渣一枚,这两天才刚开始学习emwin,遇到点小问题,分享一下希望对同样的初学者有些帮助。
看了原子哥的视频教程,在F407探索者上移植了emwin最新的5.44版。发现了一个问题,竖屏时正常,当切换到横屏时发现触摸的x、y轴并没也有切换过来,也就是x、y轴颠倒了,不知道原因。
困扰了一晚上,最后通过更改GUI_X_Touch_Analog.c里面后去触摸坐标的函数解决了,将X、Y轴的CMD_RDX调换,然后还需要将LCDConf_FlexColor_Template.c中关于触摸屏横屏的分辨率水平和竖直方向进行调换不然会出现触摸失准。
附上裸机移植的代码。
- else if(lcddev.id == 0X5310 || lcddev.id == 0X6804) //0X5510 0X6804为3.5寸 320x480
- {
- if(lcddev.dir == 0) //竖屏
- {
- GUI_TOUCH_Calibrate(GUI_COORD_X,0,320,3839,169);
- GUI_TOUCH_Calibrate(GUI_COORD_Y,0,480,3887,131);
- }else //横屏
- {
- GUI_TOUCH_SetOrientation(GUI_SWAP_XY|GUI_MIRROR_Y);
- GUI_TOUCH_Calibrate(GUI_COORD_X,0,480,3871,173);
- <div> GUI_TOUCH_Calibrate(GUI_COORD_Y,0,320,3895,128); </div><div>//此处原来为</div><div>//GUI_TOUCH_Calibrate(GUI_COORD_X,0,320,3871,173); </div><div> //GUI_TOUCH_Calibrate(GUI_COORD_Y,0,480,3895,128); </div> }
- }
复制代码- int GUI_TOUCH_X_MeasureX(void)
- {
- int32_t xvalue;
- if((lcddev.id == 0X5510) || (lcddev.id == 0X1963)) //电容屏的触摸值获取(使用NT5510和SSD1963芯片的4.3寸和7寸屏都是电容屏)
- {
- tp_dev.scan(0);
- xvalue=tp_dev.x[0];
- return xvalue;
- }else //电阻屏
- {
- return TP_Read_XOY(0X90); //CMD_RDX=0XD0
- }
- }
- int GUI_TOUCH_X_MeasureY(void)
- {
- int32_t yvalue;
- if((lcddev.id == 0X5510) || (lcddev.id == 0X1963))//电容屏的触摸值获取(使用NT5510和SSD1963芯片的4.3寸和7寸屏都是电容屏)
- {
- tp_dev.scan(0);
- yvalue = tp_dev.y[0];
- return yvalue;
- }else //电阻屏
- {
- return TP_Read_XOY(0XD0); //CMD_RDX=0X90
- }
- }
复制代码
|
|