RK3568笔记十五:触摸屏测试

若该文为原创文章,转载请注明原文出处。

使用正点原子的ATK-RK3568板子,一直在测试屏幕和视频,突然想到触摸屏测试,一直没有用过,原子给的demo跑的是QT系统,触摸功能是正常的,测试一下,并记录。

一 、环境

1、平台:rk3568

2、开发板: ATK-RK3568正点原子板子

3、环境:buildroot

二、关闭QT系统

打开板子终端,输入ps -x

打到QT的那个PID

这里不能直接使用kill,需要使用bin下的kill,既  在次查看ps,会发现已经被结束了。

三、触摸测试

检查event编号

hexdump /dev/input/event2

经测试我的屏幕是event2,自行测试

按触摸屏会输出信息的就是触摸屏对应文件

0000000 3cb7 5984 0000 0000 f07b 0001 0000 0000
0000010 0003 0039 0000 0000 3cb7 5984 0000 0000
0000020 f07b 0001 0000 0000 0003 0035 01a0 0000
0000030 3cb7 5984 0000 0000 f07b 0001 0000 0000
0000040 0003 0036 0209 0000 3cb7 5984 0000 0000
0000050 f07b 0001 0000 0000 0003 0030 0019 0000
0000060 3cb7 5984 0000 0000 f07b 0001 0000 0000
0000070 0003 0032 0019 0000 3cb7 5984 0000 0000
0000080 f07b 0001 0000 0000 0000 0000 0000 0000
0000090 3cb7 5984 0000 0000 aa61 0003 0000 0000
00000a0 0003 0035 019e 0000 3cb7 5984 0000 0000

四、触摸屏获取坐标

1、触摸屏代码的思路    
    第一步:打开触摸屏的驱动("/dev/input/event2")
    第二步:读取触摸屏的坐标
    第三步:关闭触摸屏
    
2、输入子系统模型

    概念:linux把所有输入类型设备(键盘,鼠标,触摸屏)的驱动统一成了一个模型-->输入子系统模型
    linux为了统一,就搞出了输入子系统模型这个概念,所有的人开发linux上键盘,鼠标,触摸屏的驱动都必须按照输入子系统模型规定好的参数,变量去写代码
    linux提供的跟输入子系统模型有关的头文件
    /usr/include/linux/input.h
    输入子系统模型中的重要结构体   

struct input_event
{
    type; //表示事件类型  EV_KEY 键盘的驱动   EV_ABS 触摸屏的驱动
    code; //表示按键的键值,x,y坐标  ABS_X    ABS_Y
    value; //表示坐标值
}

3、测试源码

/*************************************************
*头文件
*************************************************/
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <fcntl.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <linux/input.h>

#define TS_PATH "/dev/input/event2"

int get_input_evnet(void)
{
	//1.打开触摸屏文件
    int fd = open(TS_PATH, O_RDWR);
    if (fd == -1)
    {
        perror("open failed!");
        return -1;
    }
    //2.读取触摸屏文件数据
    struct input_event xy;
	int x, y;	   //存放点击屏幕的横纵坐标
	int flag = 0;  //记录当前获取坐标的信息
    while (1)
    {
        read(fd, &xy, sizeof(xy));
		printf("type:0x%2x\tcode:0x%2x\tvalue:%d\n",xy.type,xy.code,xy.value);
		
		// EV_ABS 0x03 绝对坐标,如触摸屏上报的坐标
		// type:0x 3       code:0x39       value:0
        // type:0x 3       code:0x35       value:669
        // type:0x 3       code:0x36       value:1224
		
        if(xy.type == EV_ABS && xy.code == 0x35)
        {
            x = xy.value;    //获取点击的时候X轴坐标的值 (0~1024)--> (0~800)
			flag = 1;
			printf("flag = 1\n");
        }
		if(xy.type == EV_ABS && xy.code == 0x36)
        {
            y = xy.value;	 //获取点击的时候Y轴坐标的值 (0~600)-->(0~480)
			flag = 2;
			printf("flag = 2\n");
        }
        //设置条件:每读取一次完整的坐标,就打印一次坐标
		if(flag == 2)
		{
			printf("(%d,%d)\n", x, y);
			flag = 0;
			//break;//获取一次坐标就跳出循环
        }
    }
    //3.关闭触摸屏文件
	close(fd);
    return 0;
}


int main(void)
{

	get_input_evnet();
	
	return 0;
}


编译

/opt/atk-dlrk356x-toolchain/usr/bin/aarch64-buildroot-linux-gnu-g++ touch_test.cpp -o touch_test

把编译后的可执行文件上传到开发板上运行,输出的坐标基本可以对应得上。

如有侵权,或需要完整代码,请及时联系博主。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/390107.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解密ERP业务架构:打造高效运营与持续增长的关键

在当今竞争激烈的商业环境中&#xff0c;企业需要有效管理和整合各个部门的业务流程和信息&#xff0c;以实现高效运营和持续增长。而ERP&#xff08;企业资源规划&#xff09;系统作为一种集成的业务管理平台&#xff0c;扮演着至关重要的角色。本文将探讨ERP业务架构的重要性…

【革新你的社交形象】用AI创意头像应用,让你的头像独一无二!

在这个数字化时代&#xff0c;社交媒体已经成为我们生活中不可或缺的一部分。你是否曾经为了找到一个既能表达自己个性&#xff0c;又足够吸引眼球的头像而苦恼&#xff1f;现在&#xff0c;有了我们全新推出的AI创意头像应用&#xff0c;你的这一困扰将成为过去&#xff01; …

VBA技术资料MF119:数据验证的添加与删除

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

线程池(图解,本质,模拟实现代码)

目录 线程池 介绍 图解 过程 本质 模拟实现 思路 注意点 解决方法 代码 pthread_pool.hpp task.hpp main.cpp 示例 线程池 介绍 线程池是一种并发编程的设计模式&#xff0c;用于管理和重复使用线程&#xff0c;以提高多线程应用程序的性能和效率 线程池主要用于…

C++ “雪花算法“原理

C雪花算法并不是传统的数据结构与算法而是一种崭新的分布式算法 属于深层次C 本篇文章就来描述一下雪花算法 什么是雪花算法: 雪花算法&#xff08;Snowflake&#xff09;是Twitter开源的一种分布式唯一ID生成算法。它可以在不依赖于数据库等其他存储设施的情况下&#xff0c…

指针的经典笔试题

经典的指针试题&#xff0c;让你彻底理解指针 前言 之前对于指针做了一个详解&#xff0c;现在来看一些关于指针的经典面试题。 再次说一下数组名 数组名通常表示的都是首元素的地址&#xff0c;但是有两个意外&#xff0c;1.sizeof&#xff08;数组名&#xff09;这里数组名…

ES入门知识点总结

目录 倒排索引 倒排索引 Elasticsearch的倒排索引是一种数据结构&#xff0c;用于加快基于文本的搜索操作。它的主要优势在于能够快速找到包含特定单词的文档。 倒排索引的构建过程如下&#xff1a; 文档分词&#xff1a;将文档内容分割成单独的词&#xff08;或者更小的词元…

Java的异常体系

一、体系简介 java中的Exception类的子类不仅仅只是像上图所示只包含IOException和RuntimeException这两大类&#xff0c;事实上Exception的子类很多很多&#xff0c;主要可概括为&#xff1a;运行时异常与非运行时异常。 在上述体系中&#xff0c;Error表示严重的系统错误&am…

【前端高频面试题--Vue路由篇】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;前端高频面试题 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac;前端高频面试题--Vue路由篇 对Vue-Router的理解Vue路由懒加载的实现路由的hash和history模式如何获…

车载诊断协议DoIP系列 —— 车辆以太网节点需求汇总

车载诊断协议DoIP系列 —— 车辆以太网节点需求汇总 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,…

【剪辑必备】今天我教你如何手动去下载苹果官网4K预告片 完全免费

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享博主 &#x1f40b; 希望大家多多支持一下, 我们一起学习和进步&#xff01;&#x1f604; &#x1f3c5; 如果文章对你有帮助的话&#xff0c;欢迎评论 &#x1f4ac;点赞&a…

【开源】新生报到网站 JAVA+Vue.js+SpringBoot+MySQL

本文项目编号&#xff1a; T 002 。 \color{red}{本文项目编号&#xff1a;T002。} 本文项目编号&#xff1a;T002。 目录 1 功能模块1.1 在线交流模块1.2宿舍分配模块1.3 校园概况模块1.4 专业管理模块 2 系统展示3 核心代码3.1 图表展示3.2 查询评论3.3 新增报道 4 免责声明 …

儿时游戏“红色警戒”之“AI警戒”

一、红色警戒里“警戒”命令背后的算法原理是什么 在《红色警戒》系列即时战略游戏中&#xff0c;“警戒”命令背后的算法原理相对简单但又实用&#xff0c;其核心目标是让单位能够自动检测并反击一定范围内的敌方单位。虽然具体的实现细节未公开&#xff0c;但可以推测其基本…

【C++】类和对象(五)友元、内部类、匿名对象

前言&#xff1a;前面我们说到类和对象是一个十分漫长的荆棘地&#xff0c;今天我们将走到终点&#xff0c;也就是说我们对于&#xff23;算是正式的入门了。 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏分类:高质量&#xff23;学习 &…

C#根据权重抽取随机数

&#xff08;游戏中一个很常见的简单功能&#xff0c;比如抽卡抽奖抽道具&#xff0c;或者一个怪物有多种攻击动作&#xff0c;按不同的权重随机出个攻击动作等等……&#xff09; 假如有三种物品 A、B、C&#xff0c;对应的权重分别是A&#xff08;50&#xff09;&#xff0c…

寒假项目-酒店综合管理系统

目前所学的东西依然很有限&#xff0c;难以完成项目&#xff0c;目前只编写了部分代码加以参考。 test.c #ifndef __TEST_H__ #define SER_PORT 8888 //服务器端口号 #define SER_IP "192.168.&#xff1f;.&#xff1f;" //服务器IP地址 #…

C#上位机与三菱PLC的通信03--MC协议之A-1E报文解析

1、MC协议帧 MC协议可以在串口通信&#xff0c;也可以在以太网通信&#xff0c;有A-1E和Qna-3E两种模式&#xff0c;这两种都是三菱PLC通信协议中比较常用的两种&#xff0c;一般我们使用比较多的是以太网通信&#xff0c;对于FX5U系列/Q系列/Qna系列/L系列的PLC&#xff0c;…

糟糕,接口被刷了,怎么办?

前言 在面试时&#xff0c;经常会被问一个问题&#xff1a;如何防止别人恶意刷接口&#xff1f; 这是一个非常有意思的问题&#xff0c;防范措施挺多的。今天这篇文章专门跟大家一起聊聊&#xff0c;希望对你会有所帮助。 1 防火墙 防火墙是网络安全中最基本的安全设备之一&…

Python eval函数

在Python编程中&#xff0c;eval()函数是一个强大且灵活的内置函数&#xff0c;用于动态执行字符串表达式或代码。尽管eval()函数具有强大的功能&#xff0c;但它也带来了一些潜在的安全风险&#xff0c;因此在使用时需要谨慎。本文将深入探讨eval()函数的用法、语法、示例代码…

AI:129-基于深度学习的极端天气事件预警

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…