OpenEdv-开源电子网

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

请教各位大神关于触摸屏按键输入的问题

[复制链接]

9

主题

62

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1606
金钱
1606
注册时间
2017-8-21
在线时间
172 小时
发表于 2017-11-11 14:00:08 | 显示全部楼层 |阅读模式
1金钱

F429,用的是4342RGB屏,想做一个触摸屏的按键输入界面,类似于一个设置选项,点击后出现一个虚拟按键,在按键上按对应的数字键后,将对应数字键显示的值设置进参数保存。

例如:
设置选项
1、经度:112.45N
点击经度,在1位置显示光标,依次键入112.45,要求112.45从触摸屏按键输入,输入后将112.45这个值写入存储器,下次开机后可直接显示。
问题1:按键界面应该怎么做出来?按键的功能如何实现?是否有类似的例程可能分享?
问题2:数据存储的过程中是否需要经过数据类型转换?
问题3:在看了例程之后,我发现LCD例程里面有LCD.C和LTDC.C这两个C文件好像差不多,然后我把里面所有的函数都写下来,功能基本一样,是否可以舍去其中一个?同样的问题在IIC实验中也有一个叫MYIIC.C和CTIIC.C这两个文件也差不多是一样的,能不能舍去一个?

最佳答案

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

从你提出的问题来看,原子哥说得对。。。你需要做的应该是先看明白触摸屏的使用方法,能够简单改动再说。 回答问题: 你所说的按键界面,应该是类似于屏幕键盘这样的界面吧。 这个是我之前做的课程设计,时间匆忙就做了2天,比较简陋。使用战舰,2.5寸电阻屏。 一、界面绘制很简单 对于这个来说,首先填充色彩,然后绘制分割线,最后在按键区域中间写文字即可。位置可能需要多次调节,才会有理想的效果。 二 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2017-11-11 14:00:09 | 显示全部楼层
从你提出的问题来看,原子哥说得对。。。你需要做的应该是先看明白触摸屏的使用方法,能够简单改动再说。

回答问题:
问题1:按键界面应该怎么做出来?按键的功能如何实现?是否有类似的例程可能分享?
你所说的按键界面,应该是类似于屏幕键盘这样的界面吧。

TIM图片20171030200005.jpg

这个是我之前做的课程设计,时间匆忙就做了2天,比较简陋。使用战舰,2.5寸电阻屏。

一、界面绘制很简单

对于这个来说,首先填充色彩,然后绘制分割线,最后在按键区域中间写文字即可。位置可能需要多次调节,才会有理想的效果。


二、

这里仅仅说一个触摸按键的实现思路,而不是使用其他诸如ewin这种方式。当然你若是会ewin,更加省时省力,效果还好。

1、首先绘制按键,记住按键区域,执行2
2、扫描触摸屏,如果有按键按下,执行3,否则执行2;
3、检测触摸区域是否在按键区域范围内,若是执行4,否则执行2;
4、绘制按键被按下后的效果,执行5
5、扫描触摸屏,查看触摸是否松开,若是执行6,否执行5
6、绘制按键松开是的状态,并查看触摸离开的点是否在按键区域内,是说明按键有效,执行7,否则说明按键无效,执行2
7、执行你要做的事情。

三、例程

这个程序是基于STM32F103的战舰的,和楼主使用的开发板和MCU都有很大出入,恐怕很难通用,代码也没有经过整理,故暂不分享。

问题2:数据存储的过程中是否需要经过数据类型转换?
回答:看你的数据类型。

以AT24C02为例,是按照字节的方式存储的,而调用的写函数也是以字节为单位写入的。因此,写入之前需要转化为若干个u8类型的数据。

当然,如果你的数据本来就是u8类型的,那就没有必要转换了,调用函数直接写进去就可以了。

如果不是,比如是s16型的数据dat(其实就是int),AT24C02写入函数原型是AT24C02_Write(u8 reg,u8 dat),那么需要这样操作:

[mw_shl_code=applescript,true]AT24C02_Write(0x00,s16&0xff);
AT24C02_Write(0x01,(s16>>8));
[/mw_shl_code]
这样就将dat拆分成两个字节,分别存储在AT24C02的0x00 0x01两个地址处。

读出的时候操作相反,首先读出两个字节然后拼起来,不再赘述。

问题3:在看了例程之后,我发现LCD例程里面有LCD.C和LTDC.C这两个C文件好像差不多,然后我把里面所有的函数都写下来,功能基本一样,是否可以舍去其中一个?同样的问题在IIC实验中也有一个叫MYIIC.C和CTIIC.C这两个文件也差不多是一样的,能不能舍去一个?
不太清楚CTIIC.C LTDC.C这两个文件是做什么的。猜测LTDC.C为某型号的液晶屏的驱动程序(因为正点原子开发板支持很多种型号的液晶),CTIIC.C可能为触摸芯片的IIC驱动。想知道是否一样,就得需要你仔细研读代码,明白具体功能了。当然,保险的做法是都别删。


十六进制带我飞。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2017-11-12 01:47:01 | 显示全部楼层
你这还是先慢慢积累吧,搞搞简单的先。 这个对你太复杂了。
回复

使用道具 举报

9

主题

62

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1606
金钱
1606
注册时间
2017-8-21
在线时间
172 小时
 楼主| 发表于 2017-11-13 09:30:13 | 显示全部楼层
本帖最后由 良性循环 于 2017-11-13 09:31 编辑

谢谢原子哥的指点,也谢谢二楼同志的界面,其实这和我要的键盘输入界面差不多了,但是我现在就卡在点击后屏幕没有反应,直接进了菜单,我把我做的界面给各位大神看下,看看是否有需要修改的地方,顺便指点下我,还需要学习哪些章节的知识,我好及时补充!
微信图片_20171113092548.jpg
微信图片_20171113092513.jpg
微信图片_20171113092523.jpg
回复

使用道具 举报

9

主题

62

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1606
金钱
1606
注册时间
2017-8-21
在线时间
172 小时
 楼主| 发表于 2017-11-13 09:41:31 | 显示全部楼层
我的描述可能不太准确,不是没有反应,而是按键按下后没有出现按下的效果,直接进入对应的菜单选项,事实上应该是按下后,在手指离开后再进入按键对应的菜单项。
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2019-12-9
在线时间
6 小时
发表于 2019-12-18 20:07:08 | 显示全部楼层
DreamWaterPro 发表于 2017-11-11 14:00
从你提出的问题来看,原子哥说得对。。。你需要做的应该是先看明白触摸屏的使用方法,能够简单改动再说。
...

请问可以分享下程序吗
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-21 12:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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