当前位置: 首页 > news >正文

RK3588 android12 适配 ilitek i2c接口TP

一,Ilitek 触摸屏简介

Ilitek 提供多种型号的触控屏控制器,如 ILI6480、ILI9341 等,采用 I2C 接口。
这些控制器能够支持多点触控,并具有优秀的灵敏度和响应速度。

Ilitek 的触摸屏控制器监测屏幕上的触摸事件。
当触摸发生时,控制器将触摸坐标(通常是 x 和 y 坐标)通过 I2C 总线发送给主机。


二,驱动移植

1. 设备树配置

查看原理图TP是挂在i2c5节点下:

&i2c5 {ilitek: ilitek@41 {compatible = "tchip,ilitek";reg = <0x41>;          //I2C设备地址pinctrl-names = "default";pinctrl-0 = <&ilitek_touch_gpio>;ilitek,irq-gpio = <&gpio3 RK_PC0 IRQ_TYPE_LEVEL_LOW>;   //使能引脚ilitek,reset-gpio = <&gpio3 RK_PC1 GPIO_ACTIVE_HIGH>;   //中断引脚status = "okay";};
};&pinctrl {ilitek-touch {ilitek_touch_gpio: ilitek-touch-gpio {rockchip,pins =<3 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>,<3 RK_PC0 RK_FUNC_GPIO &pcfg_pull_up>;};};
};

注:一定要对应的I2C bus节点(硬件原理图上会有标注)。

2. 驱动文件配置

a. 拷贝驱动文件


各个文件说明如下:

ilitek_ts.h:驱动头文件,包含驱动中要用到的一些头文件以及宏和函数的声明等。
ilitek_platform_init.c:平台加载初始化需要的文件。
ilitek_main.c:驱动主文件,完成probe的具体实现,GPIO注册、读取TP信息、注册输入设备信息,报点,休眠唤醒处理等。
ilitek_update.c:驱动升级IC固件功能的具体实现。
ilitek_tool.c:用于支持TouchUtility apk 以及创建用命令升级固件、sensor test、查看固件版本的设备节点,以及一些调试命令的使用等等。
ilitek_protocol.c:共用的函数与ilitek protocol等。
ilitek_mp.c:用于sensor test功能。

驱动下载链接:https://download.csdn.net/download/weixin_45639314/90592022

将以上驱动文件( ilitek)拷贝到如下目录:

kernel-5.10/drivers/input/touchscreen/
b. 修改Makefile以及Kconfig
kernel-5.10/drivers/input/touchscreen/Makefile中添加:
obj-$(CONFIG_TOUCHSCREEN_ILITEK)     += ilitek/-------------------------------------------------------
kernel-5.10/drivers/input/touchscreen/Kconfig中添加:
config TOUCHSCREEN_ILITEKtristate "ILITEK touchscreens matched with screen support for rockchip platform"depends on I2C && ARCH_ROCKCHIPhelpSay Y here if you have a touchscreen interface using the ILITEKtouchscreen chip on Rockchip platform, and your board-specificinitialization code includes that in its table of IIC devices.If unsure, say N.
c. 内核中加载驱动
kernel-5.10/arch/arm64/configs/rockchip_defconfig中添加:
CONFIG_TOUCHSCREEN_ILITEK=y

添加结束后单编内核即可。


三,部分驱动代码解析

int ilitek_power_on(bool status)
当定义了 ILITEK_ENABLE_REGULATOR_POWER_ON 宏时才有具体实现,对应的 ilitek_data->vdd ilitek_data->vdd_i2c 需在平台初始化代码中实现。若采用其他供电方式,需根据具体方式修改。

int ilitek_get_gpio_num(void)
用于获取 reset 和 irq GPIO 编号。若无需动态获取,需直接定义ILITEK_RESET_GPIOILITEK_IRQ_GPIO 为固定值。

int ilitek_request_gpio(void)
申请 GPIO 资源。若申请失败,会先释放再重试一次。成功后会将 reset 设置为输出高电平,irq 设置为输入模式。GPIO 操作需以具体平台接口为准。

复位函数(reset)
参数 delay 表示从拉低到拉高后的延时时间,需大于 IC 的初始化时间。

void ilitek_reset(int delay) {tp_log_info("delay = %d\n", delay);if (ilitek_data->reset_gpio > 0) {#if ILITEK_PLAT != ILITEK_PLAT_MTKgpio_direction_output(ilitek_data->reset_gpio, 1);mdelay(10);gpio_direction_output(ilitek_data->reset_gpio, 0);mdelay(10);gpio_direction_output(ilitek_data->reset_gpio, 1);mdelay(delay);#elsetpd_gpio_output(ilitek_data->reset_gpio, 1);mdelay(10);tpd_gpio_output(ilitek_data->reset_gpio, 0);mdelay(10);tpd_gpio_output(ilitek_data->reset_gpio, 1);mdelay(delay);#endif} else {tp_log_err("reset pin is invalid\n");}return;
}

int ilitek_read_tp_info(void)

  1. 检测到 IC 型号为 ILI2511 时,会将 ilitek_repeat_start 置为 false。

  2. 对于大尺寸 IC,若通过 0xC0 命令读到数据 0x55(即 Bootloader 模式),会强制设置升级标志 ilitek_data->force_update

  3. 按键信息数组 keyinfo 默认大小为 10,若按键数超过 10,需在struct ilitek_ts_data中修改 keyinfo 的容量。

static int ilitek_request_irq(void)

#if ILITEK_PLAT != ILITEK_PLAT_MTKilitek_data->client->irq = gpio_to_irq(ilitek_data->irq_gpio);
#elsenode = of_find_matching_node(NULL, touch_of_match);if (node) {ilitek_data->client->irq = irq_of_parse_and_map(node, 0);}
#endif

注意:中断号(IRQ)的获取方式需适配平台。若平台对 IRQ 有特殊配置,需修改此处以确保获取正确的中断号。


四,调试

a. 驱动无法进入 probe 函数

  1. 使用 board file 方式注册

检查 ILITEK_TS_NAME 与注册的 I2C 设备名称是否完全一致,必须匹配才能正确加载驱动。

  1. 使用 DTS(Device Tree)方式注册

检查 .of_match_table = ilitek_touch_match_table 中的 compatible 字符串是否与 DTS 中定义的 compatible 完全匹配,否则驱动无法正确绑定设备。

b. 通信不通

  1. 软件问题

确保 I2C 总线号和设备地址配置正确,这两项直接影响通信。
本文使用到的I2C总线号(I2C5)和设备地址(0x41),具体以实际硬件为主。

  1. 硬件问题

检查 IC **供电(VDD/VDD_I2C)**是否正常,确保电源稳定。
抓取 I2C 波形,确认是否符合通信协议(如 START/STOP 信号、ACK/NACK 响应)。
尝试移除同一 I2C 总线上的其他设备,排除总线冲突。

c. 报点问题

  1. 有触摸效果,但坐标映射错误

X、Y 轴需要交换
修改 ILITEK_ROTATE_FLAG 的值(0 ↔ 1)。

X/Y 轴需要镜像翻转(最大值变最小值)
调整 ILITEK_REVERT_X 或 ILITEK_REVERT_Y 的值(0 ↔ 1)。

使用显示屏分辨率
启用宏 #define ILITEK_USE_LCM_RESOLUTION,并正确设置 TOUCH_SCREEN_X_MAX 和 TOUCH_SCREEN_Y_MAX。

  1. 触摸无反应

中断问题

确认中断是否注册成功,检查 中断号 是否正确。

数据解析问题

通过日志确认触摸时是否有中断触发:
若有中断但无坐标,检查 ilitek_read_data_and_report_2120 或 ilitek_read_data_and_report_3XX 函数,打印原始数据确认是否有效。

硬件信号问题

抓取 INT 引脚波形,确认触摸时是否有正常的拉高/拉低动作。

相关文章:

RK3588 android12 适配 ilitek i2c接口TP

一&#xff0c;Ilitek 触摸屏简介 Ilitek 提供多种型号的触控屏控制器&#xff0c;如 ILI6480、ILI9341 等&#xff0c;采用 I2C 接口。 这些控制器能够支持多点触控&#xff0c;并具有优秀的灵敏度和响应速度。 Ilitek 的触摸屏控制器监测屏幕上的触摸事件。 当触摸发生时&a…...

pgsql:关联查询union(并集)、except(差集)、intersect(交集)

pgsql:关联查询union(并集)、except(差集)、intersect(交集)_pgsql except-CSDN博客...

模型材质共享导致的问题

问题&#xff1a;当我选中其中某个网格模型并设置color的时候&#xff0c;相同种类的颜色都被改变&#xff0c;但是打印我选中的网格模型数据其实只有一个。 导致问题的原因&#xff1a; 加载Blender模型修改材质颜色 Blender创建一个模型对象&#xff0c;设置颜色&#xff0…...

ThinkpPHP生成二维码

导入依赖 composer require endroid/qr-code 封装成函数&#xff0c;传入二维码包含的值&#xff0c;存储路径&#xff0c;二维码大小&#xff0c;二维码边距 private function getCode($content, $directory, $size 300, $margin 10){// 创建二维码对象// $content: 二…...

FLINK框架:流式处理框架Flink简介

在大数据时代&#xff0c;数据的价值不言而喻&#xff0c;谁能利用好数据&#xff0c;谁就掌握了整个行业的先机。面对海量的数据&#xff0c;如何处理数据成为了一个难题。除了海量数据外&#xff0c;实时性也是一个重要的课题&#xff0c;所以流式数据处理便登上了技术舞台&a…...

使用Python从零开始构建生成型TransformerLM并训练

在人工智能的浩瀚宇宙中&#xff0c;有一种神奇的生物&#xff0c;它拥有着强大的语言魔法&#xff0c;能够生成各种各样的文本&#xff0c;仿佛拥有无尽的创造力。它就是——Transformer 模型&#xff01;Transformer 模型的出现&#xff0c;为人工智能领域带来了一场“语言魔…...

xtrabackup备份

安装&#xff1a; https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-30/binary/tarball/percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17.tar.gz?_gl1*1ud2oby*_gcl_au*MTMyODM4NTk1NS4xNzM3MjUwNjQ2https://downloads.perc…...

2.3 Spark运行架构与流程

Spark运行架构与流程包括几个核心概念&#xff1a;Driver负责提交应用并初始化作业&#xff0c;Executor在工作节点上执行任务&#xff0c;作业是一系列计算任务&#xff0c;任务是作业的基本执行单元&#xff0c;阶段是一组并行任务。Spark支持多种运行模式&#xff0c;包括单…...

【Pandas】pandas DataFrame head

Pandas2.2 DataFrame Indexing, iteration 方法描述DataFrame.head([n])用于返回 DataFrame 的前几行 pandas.DataFrame.head pandas.DataFrame.head 是一个方法&#xff0c;用于返回 DataFrame 的前几行。这个方法非常有用&#xff0c;特别是在需要快速查看 DataFrame 的前…...

从递归入手一维动态规划

从递归入手一维动态规划 1. 509. 斐波那契数 1.1 思路 递归 F(i) F(i-1) F(i-2) 每个点都往下展开两个分支&#xff0c;时间复杂度为 O(2n) 。 在上图中我们可以看到 F(6) F(5) F(4)。 计算 F(6) 的时候已经展开计算过 F(5)了。而在计算 F(7)的时候&#xff0c;还需要…...

鸿蒙HarmonyOS埋点SDK,ClkLog适配鸿蒙埋点分析

ClkLog埋点分析系统&#xff0c;是一种全新的、开源的洞察方案&#xff0c;它能够帮助您捕捉每一个关键数据点&#xff0c;确保您的决策基于最准确的用户行为分析。技术人员可快速搭建私有的分析系统。 ClkLog鸿蒙埋点SDK通过手动埋点的方式实现HarmonyOS 原生应用的前端数据采…...

HarmonyOS:HMPermission权限请求框架

前段时间利用空余时间写了一个权限请求库&#xff1a;HMPermission。 一&#xff0c;简介 HMPermission 是鸿蒙系统上的一款权限请求框架&#xff0c;封装了权限请求逻辑&#xff0c;采用链式调用的方式请求权限&#xff0c;简化了权限请求的代码。 二&#xff0c;使用方法 …...

【书籍】DeepSeek谈《持续交付2.0》

目录 一、深入理解1. 核心理念升级&#xff1a;从"自动化"到"双环模型"2. 数字化转型的五大核心能力3. 关键实践与案例4. 组织与文化变革5. 与其它框架的关系6. 实际应用建议 二、对于开发实习生的帮助1. 立刻提升你的代码交付质量&#xff08;技术验证环实…...

Spring AOP 扫盲

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...

银河麒麟v10(arm架构)部署Embedding模型bge-m3【简单版本】

硬件 服务器配置&#xff1a;鲲鹏2 * 920&#xff08;32c&#xff09; 4 * Atlas300I duo卡 参考文章 https://www.hiascend.com/developer/ascendhub/detail/07a016975cc341f3a5ae131f2b52399d 鲲鹏昇腾Atlas300Iduo部署Embedding模型和Rerank模型并连接Dify&#xff08;自…...

如何通过流程管理优化企业运营?

流程管理的本质是“用确定性的规则应对不确定性的业务”。 那么&#xff0c;具体该如何通过流程管理来优化企业的运作呢&#xff1f;以下是一些关键步骤和思路&#xff0c;或许能给到一些启发。 1. 从流程梳理开始&#xff1a;摸清现状&#xff0c;找准问题 想要管理好企业的…...

ZYNQ笔记(四):AXI GPIO

版本&#xff1a;Vivado2020.2&#xff08;Vitis&#xff09; 任务&#xff1a;使用 AXI GPIO IP 核实现按键 KEY 控制 LED 亮灭&#xff08;两个都在PL端&#xff09; 一、介绍 AXI GPIO (Advanced eXtensible Interface General Purpose Input/Output) 是 Xilinx 提供的一个可…...

Java学习手册:JVM、JRE和JDK的关系

在Java生态系统中&#xff0c;JVM&#xff08;Java虚拟机&#xff09;、JRE&#xff08;Java运行时环境&#xff09;和JDK&#xff08;Java开发工具包&#xff09;是三个核心概念。它们共同构成了Java语言运行和开发的基础。理解它们之间的关系对于Java开发者来说至关重要。本文…...

Java 并发-newFixedThreadPool

前言 为什么选择使用多线程&#xff1f;一种场景是在数据和业务处理能力出现瓶颈时&#xff0c;而服务器性能又有空闲&#xff0c;通常是cpu空闲&#xff0c;这时使用多线程就能很好的解决问题&#xff0c;而又无需加硬件&#xff0c;实际使用中&#xff0c;线程池又是最为常用…...

C# task任务异步编程提高UI的响应性

方式1&#xff1a;async/await模式 private async void button1_Click(object sender, EventArgs e){try{var result await Task.Run(() > CalculateResult());label1.Text result.ToString();}catch (Exception ex){label1.Text $"Error: {ex.Message}";}}pri…...

Spring Bean生命周期执行流程详解

文章目录 一、什么是Spring Bean生命周期&#xff1f;工作流程图&#xff1a;二、Bean生命周期执行流程验证1.编写测试代码验证结果2.源码追溯Bean初始化回调过程 一、什么是Spring Bean生命周期&#xff1f; Spring Bean生命周期是指从Bean的创建到销毁的整个过程&#xff0c…...

windows 安装 pygame( pycharm)

一、安装流程 1.查看python版本 2.检查是否安装pip 3.下载pygame安装文件 下载地址&#xff1a;https://pypi.org/project/pygame/#files 选择合适的版本&#xff08;我选择的是 python3.7 windows 64bit&#xff09;&#xff1a; 4.使用pip安装pygame 将下载好的whl文件移动到…...

Envoy网关实例异常重启排查总结

一、事件背景 于10月24日凌晨业务租户有业务应用发版上线&#xff0c;中午收到pod连续5分钟重启严重告警&#xff0c;登录管理节点查看异常重启的应用网关pod日志&#xff0c;存在内核段错误报错信息导致进程终止并触发监控检查异常并重启; 该报错主要是访问的内存超出了系统…...

WinForm真入门(13)——ListBox控件详解

WinForm ListBox 详解与案例 一、核心概念 ‌ListBox‌ 是 Windows 窗体中用于展示可滚动列表项的控件&#xff0c;支持单选或多选操作&#xff0c;适用于需要用户从固定数据集中选择一项或多项的场景‌。 二、核心属性 属性说明‌Items‌管理列表项的集合&#xff0c;支持动…...

【Linux网络编程】UDP Echo Server的实现

本文专栏&#xff1a;Linux网络编程 目录 一&#xff0c;Socket编程基础 1&#xff0c;IP地址和端口号 端口号划分范围 理解端口号和进程ID 源端口号和目的端口号 理解Socket 2&#xff0c;传输层的典型代表 3&#xff0c;网络字节序 4&#xff0c;Socket编程接口 s…...

8.3.5 ToolStripContainer(工具栏容器)控件

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的 ToolStripContainer控件是一个容器&#xff0c;可以包含菜单和工具条、状态栏。 在设计窗体中放入一个ToolStripContainer&#xff1…...

代码随想录-06-二叉树-05.05 N叉树的层序遍历

N叉树的层序遍历 #模板题 题目描述 给定一个 N 叉树&#xff0c;返回其节点值的_层序遍历_。&#xff08;即从左到右&#xff0c;逐层遍历&#xff09;。 树的序列化输入是用层序遍历&#xff0c;每组子节点都由 null 值分隔&#xff08;参见示例&#xff09;。 具体思路 …...

【NEPVR】《A Lightweight Palm Vein Recognition Algorithm NEPVR》

[1]马莉,刘子良,谭振林,等.一种轻量级掌静脉识别算法NEPVR[J].计算机技术与发展,2024,34(12):213-220.DOI:10.20165/j.cnki.ISSN1673-629X.2024.0248. 文章目录 1、背景2、相关工作3、创新点4、NEPVR 手掌静脉识别算法5、实验结果及分析6、总结 / 未来工作 1、背景 手掌静脉独…...

牟乃夏《ArcGIS Engine地理信息系统开发教程》学习笔记1

&#xff08;适合GIS开发入门者&#xff0c;通俗解析核心知识点&#xff09; 目录 一、ArcGIS Engine是什么&#xff1f; 二、ArcGIS Engine能做什么&#xff1f; 三、ArcGIS Engine与ArcObjects的区别 四、开发资源与学习路径 五、对象模型图&#xff08;OMD&#xff09;…...

架构师论文《论模型驱动软件开发方法在智能制造转型实践中的应用》

摘要&#xff1a; 本人现任某大型装备制造企业智能制造研究院首席架构师&#xff0c;主导集团级数字化工厂平台建设。面对多品种小批量生产模式下普遍存在的交付周期超预期&#xff08;平均延期21天&#xff09;、设备综合效率OEE不足65%的痛点&#xff0c;我司于2021年启动基…...

探索MCP.so:AI生态的创新枢纽

今天在研究MCP时发现了一个还不错的网站,分享给大家。后续会基于这些mcp servers做一些有趣的应用。 在人工智能飞速发展的当下,AI与各类工具、数据源的协同合作变得愈发关键。MCP.so这个平台,正悄然成为AI领域的重要枢纽,为众多开发者和AI爱好者打开了新的大门。 MCP,即…...

JVM底层详解

JVM底层详解 目录 JVM概述JVM内存模型垃圾回收机制类加载过程JIT编译JVM调优JVM监控与故障排查JVM与多线程JVM与性能优化JVM发展历程与未来JVM实战案例分析JVM高级特性JVM安全机制JVM与容器化 一、JVM概述 1.1 什么是JVM Java虚拟机&#xff08;Java Virtual Machine&…...

多点:分布式升级助力新零售转型,成本节省超80% | OceanBase 案例

本文作者&#xff1a;多点数据库DBA团队 编者按&#xff1a;多点是零售行业数字&#xff08;智&#xff09;化的先行者&#xff0c;为全球企业提供创新的数字化解决方案。然而&#xff0c;在数字化转型的过程中&#xff0c;多点原有的数据库架构逐渐暴露出架构复杂、成本上升等…...

Java权限修饰符深度解析

Java权限修饰符深度解析与最佳实践 一、权限修饰符总览 Java提供四种访问控制修饰符&#xff0c;按访问范围从宽到窄排序如下&#xff1a; 修饰符类内部同包类不同包子类全局范围public✔️✔️✔️✔️protected✔️✔️✔️❌默认&#xff08;无&#xff09;✔️✔️❌❌pr…...

RocketMQ和kafka 的区别

一、数据可靠性与容错机制 数据可靠性 RocketMQ支持同步刷盘和同步复制&#xff0c;确保消息写入磁盘后才返回确认&#xff0c;单机可靠性高达10个9&#xff0c;即使操作系统崩溃也不会丢失数据159。而Kafka默认采用异步刷盘和异步复制&#xff0c;虽然吞吐量高&#xff0c;但极…...

分布式限流器框架 eval-rate-limiter

分布式限流器框架 eval-rate-limiter 文章目录 分布式限流器框架 eval-rate-limiter前言设计流程图 核心方法tryAcquire 获取通信证增加访问次数 incrementRequestCount生成分布式 key generateRateLimiterKey 测试测试代码结果Redis 客户端 前言 基于 redis 实现的分布式限流…...

使用Docker部署Java项目的完整指南

前言 Docker是一个轻量级的容器化平台&#xff0c;可将应用及其依赖打包成标准化单元&#xff0c;实现快速部署和环境隔离。本文以Spring Boot项目为例&#xff0c;演示如何通过Dockerfile部署Java应用。 准备工作 本地环境 安装Docker Desktop&#xff08;官网下载&#xff0…...

机器学习数据需求与应用分析

监督学习、无监督学习和强化学习作为机器学习的核心范式&#xff0c;对数据条件的需求存在显著差异。以下是具体分析&#xff1a; 一、监督学习的数据条件 数据要求 监督学习需要带标签&#xff08;labeled&#xff09;的数据集&#xff0c;即每个输入样本都有对应的目标输出&a…...

【机器学习算法】基于python商品销量数据分析大屏可视化预测系统(完整系统源码+数据库+开发笔记+详细启动教程)✅

目录 一、项目背景 二、技术思路 三、算法介绍 四、项目创新点 五、开发技术介绍 六、项目展示 一、项目背景 本项目基于Python技术栈构建了"商品销量数据分析与预测系统"&#xff0c;通过自动化爬取淘宝商品多维数据&#xff08;价格、销量、评价、品类等&a…...

springboot集成springcloud vault读值示例

接上三篇 Vault---机密信息管理工具安装及常用示例 Vault机密管理工具集群配置示例 vault签发根证书、中间证书、ca证书流程记录 项目里打算把所有密码都放到vault里管理&#xff0c;vault提供了springcloud vault用来在springboot里连接vault&#xff0c;启动加载vault里的值放…...

BERT 模型是什么

BERT 模型是什么&#xff1f; BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是一种基于Transformer架构的深度学习模型&#xff0c;由Google于2018年提出。它在自然语言处理领域取得了显著成就&#xff0c;成为众多NLP任务的基础。 …...

三元电池正极材料除杂工艺介绍

三元电池正极材料的除杂工艺对于提高电池性能、安全性和稳定性至关重要。以下是对三元电池正极材料除杂工艺的详细介绍&#xff1a; 物理除杂工艺 磁选 原理&#xff1a;利用磁场对磁性杂质的吸引作用实现分离。在三元电池正极材料生产中&#xff0c;常混入铁、钴、镍等磁性金…...

wx212基于ssm+vue+uniapp的科创微应用平台小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…...

Multi Agents Collaboration OS:数据与知识协同构建数据工作流自动化

1-背景 传统数据系统与业务数字化的开发与维护面临诸多挑战&#xff1a;行业知识获取壁垒高、需求变化快导致开发周期长、系统复杂度高以及人力与资源投入成本巨大。同时&#xff0c;用户在使用过程中也常遇到痛点&#xff1a;手动录入数据繁琐低效、数据分散于各模块难以整合…...

elemenPlus中,如何去掉el-input中 文本域 textarea自带的边框和角标

1、去掉角标 :deep(.el-textarea__inner) {resize: none !important; // 去除右下角图标 }2、去除边框&#xff0c;并自定义背景色 <el-inputref"textareaRef"v-model"tempContent":style"{--el-border-color: rgba(255,255,255,0.0),--el-input-…...

Excel 动态比较两列数据:实现灵活的数据验证

目录 动态比较两列数据的需求动态公式的实现使用INDIRECT和ROW函数公式解释应用 动态公式的优点 快速添加一列公式的技巧使用快捷键Ctrl D使用VBA宏自动化使用“表格”功能自动填充 实际应用场景数据验证动态报告数据清洗 注意事项总结 在数据处理和分析中&#xff0c;Excel 是…...

谷歌推出可免费使用的Firebase Studio:Gemini全栈AI开发利器

谷歌刚刚发布了Firebase Studio,这是其打造的一款沉浸式代码开发平台,旨在与Cursor、Lovable、Bolt和V0等工具竞争。如果你是一名网页开发者,可能只知道Firebase是谷歌的数据库工具。 但现在,它已远不止于此。 Firebase已发展成一个完整的生态系统,如今能帮助你从头到尾…...

spark(二)

本节课接上节课继续对于RDD进行学习&#xff0c;首先是对于创建RDD的不同方式&#xff0c;接着学习了RDD的三种转换算子&#xff1a;Value类型、双Value类型、Key-Value类型&#xff0c;以及各个转换算子的不同使用方式。 学习到如下的区别&#xff1a; map 与 mapPartitions…...

Fay 数字人部署环境需求

D:\ai\Fay>python main.py pygame 2.6.1 (SDL 2.28.4, Python 3.11.9) Hello from the pygame community. https://www.pygame.org/contribute.html [2025-04-11 00:10:16.7][系统] 注册命令... [2025-04-11 00:10:16.8][系统] restart 重启服务 [2025-04-11 00:10:16.8][…...

【Harmony】端云一体化(云函数)

一、云函数的概述 1、什么是云函数 官方解释 云函数是一项Serverless计算服务&#xff0c;提供FaaS&#xff08;Function as a Service&#xff09;能力&#xff0c;一方面云函数将开发测试的对象聚焦到函数级别&#xff0c;可以帮助您大幅简化应用开发与运维相关的事务&…...