在一个项目中用到了7寸屏,需要竖屏显示,但是采购的是横屏,实际使用时需要改为竖屏。由于使用qt5.12开发界面,不像qt4那样修改一个配置项,液晶和触屏都旋转了。qt5通过打补丁旋转了LCD显示后,还需要使用tslib进行触屏校准,由于qt5中加入tslib比较麻烦,所以直接修改触屏的配置或驱动更方便。

触屏屏参数:7寸屏,分辨率1026*600,驱动IC:GT911。

系统:linux

有两种方式可以实现,第一种方式是向触屏厂家要一个旋转之后的配置文件,另一个方式是修改触屏的驱动。

一、向厂家要个旋转之后的配置文件

1.厂家会给一个xxx.cfg文件,再使用汇顶的烧录工具烧录即可。

2.dts配置文件中也要按照竖屏配置分辨率。

touchscreen-size-x = <1024>;
touchscreen-size-y = <600>;
改为
touchscreen-size-x = <600>;
touchscreen-size-y = <1024>;

二、修改驱动

1.在dts文件中配置x、y坐标进行交换。

goodix,swap-x2y = <1>;

2.一般x、y坐标交换之后还需要x或y轴坐标进行翻转。

在gt9xx.h文件中增加两个宏定义:

#define REVERT_X_FLAG        0
#define REVERT_Y_FLAG       1

修改gt9xx.c文件,gtp_get_points()函数中增加x、y坐标翻转的代码:

static u8 gtp_get_points(struct goodix_ts_data *ts,struct goodix_point_t *points,u8 *key_value)
{int ret;int i;u8 *coor_data = NULL;u8 finger_state = 0;u8 touch_num = 0;u8 end_cmd[3] = { GTP_READ_COOR_ADDR >> 8,GTP_READ_COOR_ADDR & 0xFF, 0 };u8 point_data[2 + 1 + 8 * GTP_MAX_TOUCH_ID + 1] = {GTP_READ_COOR_ADDR >> 8, GTP_READ_COOR_ADDR & 0xFF };ret = gtp_i2c_read(ts->client, point_data, 12);if (ret < 0) {dev_err(&ts->client->dev,"I2C transfer error. errno:%d\n ", ret);return 0;}finger_state = point_data[GTP_ADDR_LENGTH];if (finger_state == 0x00)return 0;touch_num = finger_state & 0x0f;if ((finger_state & MASK_BIT_8) == 0 ||touch_num > ts->pdata->max_touch_id) {dev_err(&ts->client->dev,"Invalid touch state: 0x%x", finger_state);finger_state = 0;goto exit_get_point;}if (touch_num > 1) {u8 buf[8 * GTP_MAX_TOUCH_ID] = {(GTP_READ_COOR_ADDR + 10) >> 8,(GTP_READ_COOR_ADDR + 10) & 0xff };ret = gtp_i2c_read(ts->client, buf, 2 + 8 * (touch_num - 1));if (ret < 0) {dev_err(&ts->client->dev, "I2C error. %d\n", ret);finger_state = 0;goto exit_get_point;}memcpy(&point_data[12], &buf[2], 8 * (touch_num - 1));}/* panel have touch key *//* 0x20_UPKEY 0X10_DOWNKEY 0X40_ALLKEYDOWN */*key_value = point_data[3 + 8 * touch_num];memset(points, 0, sizeof(*points) * GTP_MAX_TOUCH_ID);for (i = 0; i < touch_num; i++) {coor_data = &point_data[i * 8 + 3];points[i].id = coor_data[0];points[i].x = coor_data[1] | (coor_data[2] << 8);points[i].y = coor_data[3] | (coor_data[4] << 8);points[i].w = coor_data[5] | (coor_data[6] << 8);/* if pen hover points[].p must set to zero */points[i].p = coor_data[5] | (coor_data[6] << 8);if (ts->pdata->swap_x2y)GTP_SWAP(points[i].x, points[i].y);++#if REVERT_X_FLAG
++        points[i].x = ts->pdata->abs_size_x - points[i].x;
++#endif++#if REVERT_Y_FLAG
++        points[i].y = ts->pdata->abs_size_y - points[i].y;
++#endifdev_dbg(&ts->client->dev, "[%d][%d %d %d]\n",points[i].id, points[i].x, points[i].y, points[i].p);/* pen device coordinate */if (points[i].id & 0x80) {points[i].tool_type = GTP_TOOL_PEN;points[i].id = 10;if (ts->pdata->pen_suppress_finger) {points[0] = points[i];memset(++points, 0, sizeof(*points) * (GTP_MAX_TOUCH_ID - 1));finger_state &= 0xf0;finger_state |= 0x01;break;}} else {points[i].tool_type = GTP_TOOL_FINGER;}}exit_get_point:if (!test_bit(RAW_DATA_MODE, &ts->flags)) {ret = gtp_i2c_write(ts->client, end_cmd, 3);if (ret < 0)dev_info(&ts->client->dev, "I2C write end_cmd error!");}return finger_state;
}

3.举例说明

默认:

更改为:

配置项如下:

DTS文件:

goodix,swap-x2y = <1>;

gt9xx.h文件:

#define REVERT_X_FLAG        0
#define REVERT_Y_FLAG       1

RK3566触屏旋转方向相关推荐

  1. 360°平滑游戏摇杆(触屏方向导航)

    Android游戏开发二十四]360°平滑游戏摇杆(触屏方向导航) 本站文章均为 李华明Himi 原创,转载务必在明显处注明:(作者新浪微博: @李华明Himi ) 转载自[黑米GameDev街区]原 ...

  2. Unity 触屏手势控制Camera平移旋转缩放

    Unity 触屏手势控制Camera平移旋转缩放 实现思路 单点触屏,位移增量控制相机平移: 两点触屏,两点位移控制相机前后移动(缩放):两点中一点不位移控制相机绕点旋转: 实现需要的API Touc ...

  3. Unity 在zSpace上使用鼠标控制相机旋转和鼠标指引式放大缩小,在触屏上手势位置为中心放大缩小

    在zSpace上使用鼠标控制相机旋转和鼠标指引式放大缩小,在触屏上手势位置为中心放大缩小 鼠标和触屏的操作 下面展示一些 内联代码片. using System; using System.Colle ...

  4. linux内核怎么修改屏幕旋转方向_树莓派4—屏幕旋转

    配置:树莓派4+raspberry pi系统,HDMI显示,非触屏. 问题:想将屏幕旋转90°,按网上说的, 方法一:在config.txt文件中添加display_rotate=1,或者添加disp ...

  5. 基于ijkplayer的视频播放器,仿Bilibili客户端,集成沉浸式全屏、弹幕、触屏控制、视频源切换等功能

    该视频播放器基于Bilibili的开源项目ijkplayer做的,是在github上的demo基础上搭建了个播放界面,如果你之前有研究过这个demo代码,那你看这个库就非常简单了.至于还不知道ijkp ...

  6. 【基于物联网的智能草莓种植系统的设计与实现系列教程】7-树莓派触3.5寸控屏连接翻转与触屏校准 (课程设计、毕设项目、树莓派、yolov5)

    [基于物联网的智能草莓种植系统]项目3.5寸触控屏连接验证与相关问题解决 项目各章节跳转 树莓派环境说明 显示屏硬件连接 驱动获取与传输 驱动安装与调试 猜你需要 项目各章节跳转 可点击跳转到对应章节 ...

  7. WPF Multi-Touch 开发:高级触屏操作(Manipulation)

    在上一篇中我们对基础触控操作有了初步了解,本篇将继续介绍触碰控制的高级操作(Manipulation),在高级操作中包含了一些特殊的触屏手势:平移.缩放.旋转,当然在WPF 中无需自行开发这些手势,只 ...

  8. RK3288 双屏异显,两屏默认方向不一致

    CPU:RK3288 系统:Android 5.1 RK3288 支持双屏异显,一般都会同方向显示,如果遇到两个 lcd 的默认方向不一致,只需修改下面参数即可. 例如:主屏为mipi接口,分辨率为 ...

  9. 【Android RTMP】NV21 图像旋转处理 ( 问题描述 | 图像顺时针旋转 90 度方案 | YUV 图像旋转细节 | 手机屏幕旋转方向 )

    文章目录 安卓直播推流专栏博客总结 一. NV21 图像格式与 Camera图像传感器方向问题 二. NV21 图像格式视频旋转 1. 图像旋转问题及解决方案 ( 顺时针旋转 90 度 ) 2. NV ...

最新文章

  1. 启动过滤器异常 java.lang.AbstractMethodError: ‘void javax.servlet.Filter.init(javax.servlet.FilterConfig)‘
  2. Spring Cloud Stream整合RabbitMQ
  3. Excel 2016新增函数之TEXTJOIN
  4. 128位计算机 ps2,64位就最强?为啥没有128位电脑?
  5. 苹果CMS10|粉色视频站模版|YMYS007|魅力社
  6. html文档中strokestyle,HTML5画布的StrokeStyle?(html5 canvas strokeStyle?)
  7. 在 iOS 客户端上通过 bitcode 为第三方库修复 bug
  8. 2021-08-05查询排序分页语句
  9. 基于XMLHttpRequest封装Ajax请求
  10. 专业Excel组件Spire.XLS 教程:在Excel中合并单元格
  11. Matlab魔方矩阵的创建及逻辑矩阵的用法
  12. TeamViewer远程控制软件,让你享受远程办公的便利
  13. CSS——网易云音乐之登录页面的实现
  14. 织梦cms里面文章里面的HTML,dede源码在其它页面调用单页文章内容并过滤HTML代码的方法...
  15. EMC设计经典15问
  16. 「小猪佩奇」:成功儿童IP背后的商业逻辑和方法论
  17. fiddler抓包 破解微信投票
  18. 小绮的踩坑日记|小土堆pytorch视频——tensorboard
  19. L1-3 打折 (5 分)——2018
  20. poi生成word文档后打开读取失败

热门文章

  1. osgEarth编译——以VS2012为例
  2. 谷歌浏览器如何查看及设置网页编码格式(亲测可用)
  3. 2021江苏省南通市高考成绩查询时间,2021南通市安全教育平台登录入口网址【最新】...
  4. 数据库三级填空题(应用题)常考总结
  5. SQLite使用模糊查询
  6. Windows10与Kali Linux之间通过XFTP来共享文件
  7. 大数据项目之电商数仓(业务数据仓库)
  8. Google 镜像站IP地址
  9. 读论文(4)——FPN
  10. 如何让 PPT 中的表格更美观?