当前位置: 首页> 游戏> 游戏 > 免费seo软件_东莞建工集团_今天高清视频免费播放_深圳外包seo

免费seo软件_东莞建工集团_今天高清视频免费播放_深圳外包seo

时间:2025/7/9 2:54:26来源:https://blog.csdn.net/qq_17470165/article/details/144773094 浏览次数:0次
免费seo软件_东莞建工集团_今天高清视频免费播放_深圳外包seo

概述

红外遥控的发射电路是采用红外发光二极管来发出经过调制的红外光波;红外接收电路由红外接收二极管、三极管或硅光电池组成,它们将红外发射器发射的红外光转换为相应的电信号,再送后置放大器。

在这里插入图片描述

鉴于家用电器的品种多样化和用户的使用特点,生产厂家对进行了严格的规范编码,这些编码各不相同,从而形成不同的编码方式,统一称为红外遥控器编码传输协议。到目前为止,红外遥控协议已多达十种, 如: RC5、 SIRCS、 Sy、 RECS80、Denon、NEC、Motorola、Japanese、SAMSWNG 和 Daewoo 等。我国家用电器的红外遥控器的生产厂家,其编码方式多数是按上述的各种协议进行编码的,而用得较多的有 NEC 协议。目前 RK 平台也只支持 NEC 编码的红外协议。


RK 平台上红外实现原理简介

PWM 有三种工作模式, reference mode, one-shot modecontinuous mode. 红外遥控器就采用 reference mode,这种模式下 PWM 可以捕获输入高低电平的宽度,并产生中断,CPU接收到中断后去相应的寄存器读取。

按下遥控的时候,红外接收头会产生一系列的高低电平,PWM 就会产生相应的中断,CPU 读取相应的寄存器就知道这些高低电平的时间,根据协议就可以解码出红外的用户码和键值码出来。


RK3568遥控器添加方法

本文是在正点原子RK3568开发板上适配新的遥控器,适配步骤如下:

1、确定编译的配置

查看编译脚本中所用的配置,用于确认所用的设备树 rk3568-atk-evb1-ddr4-v10.dtsi

home/ho/rk3568_android_sdk/kernel-4.19/make.sh

在这里插入图片描述


2、确认新遥控器的USERCODE和码值

打开键值打印开关,按遥控器的按键,记录下对应的键值例如按下ResetPrtScr,有如下打印。
在这里插入图片描述

该遥控器的 usercode 是 0xbf4,Reset键值就是 0xbb 、PrtScr键值是0xa9。如此反复,直到打印完遥控器上的所有键值。


3、在设备树中添加配置

步骤1通过编译脚本确认当前使用设备树,在设备树中添加遥控器键码值。

/home/ho/rk3568_android_sdk/kernel-4.19/arch/arm64/boot/dts/rockchip/rk3568-atk-evb1-ddr4-v10.dtsi

&pwm7 {ir_key1 {/* Ho 适配新遥控器 */		rockchip,usercode = <0xbf4>;rockchip,key_table =<0xff KEY_POWER>,     	//电源<0xfe KEY_MUTE>,      	//静音<0xfd KEY_1>,		  	//1	<0xfc KEY_2>,		  	//2<0xfb KEY_3>,		  	//3<0xfa KEY_4>,		  	//4<0xf9 KEY_5>,		  	//5<0xf8 KEY_6>,		 	//6<0xf7 KEY_7>,		  	//7<0xf6 KEY_8>,		  	//8<0xf5 KEY_9>,		 	//9<0xf3 KEY_0>,		  	//10<0xbe KEY_PAGEUP>,   	//下翻页<0xbd KEY_PAGEDOWN>, 	//下翻页<0xec KEY_UP>,       	//上<0xeb KEY_DOWN>,     	//下<0xee KEY_LEFT>,     	//左<0xed KEY_RIGHT>,    	//右<0xea KEY_BACK>,     	//返回<0xb7 KEY_VOLUMEUP>, 	//音量+<0xb6 KEY_VOLUMEDOWN>,  //音量-<0xbc KEY_MENU>,		//菜单<0xe3 KEY_SLEEP>,		//休眠<0xb5 KEY_CHANNELUP>,	//频道+<0xb4 KEY_CHANNELDOWN>, //频道-<0xb3 KEY_HOME>,		//主页<0xae KEY_SCREENLOCK>,  //锁屏<0xe0 KEY_RESTART>,     //重启<0xa9 KEY_PRTSCR>,	    //截图 linux没有标准键定义 <0xbb KEY_RESET>,       //重置 linux没有标准键定义<0xe9 KEY_PEN>,         //画笔 linux没有标准键定义<0xef KEY_REPLY>;     	//确认};
};

ir_key1 是代码第一个,这个名字没有要求,新加一个就序号加 1,第二个的话一般就命名成ir_key2,以此类推。

handle_cpu_id 项代表 ir 中断在哪一个 cpu 上处理,如果是 4 核系统可以是 0-3,如果是双系统只能是 0-1,为了遥控中断更好的响应建议错开 cpu0 去处理。


4、内核头文件中增加按键定义

/home/ho/rk3568_android_sdk/kernel-4.19/include/dt-bindings/input/linux-event-codes.h

在这里插入图片描述

/home/ho/rk3568_android_sdk/kernel-4.19/include/dt-bindings/input/rk-input.h

在这里插入图片描述


5、键值映射文件Generic.kl增加与上层对应关系

使用指令dumpsys input找到对应的kl文件

在这里插入图片描述

/home/ho/rk3568_android_sdk/frameworks/base/data/keyboards/Generic.kl

在这里插入图片描述


6、KeyEvent.java定义上层键值

注意下面提示哪里有需要更新的地方


public static final int KEYCODE_PRTSCR = 289;  //截图public static final int KEYCODE_RESET = 290;  //重置public static final int KEYCODE_PEN = 291;  //画笔/*** Integer value of the last KEYCODE. Increases as new keycodes are added to KeyEvent.* @hide*/
@TestApi
public static final int LAST_KEYCODE = KEYCODE_PEN;// NOTE: If you add a new keycode here you must also add it to:
//  isSystem()
//  isWakeKey()
//  frameworks/native/include/android/keycodes.h
//  frameworks/native/include/input/InputEventLabels.h
//  frameworks/base/core/res/res/values/attrs.xml
//  emulator?
//  LAST_KEYCODE

7、keycodes.h定义上层键值

/home/ho/rk3568_android_sdk/frameworks/native/include/android/keycodes.h

在这里插入图片描述


8、添加按键标签定义

/home/ho/rk3568_android_sdk/frameworks/native/libs/input/InputEventLabels.cpp

在这里插入图片描述


9、attrs.xml中增加按键

/home/ho/rk3568_android_sdk/frameworks/base/core/res/res/values/attrs.xml
<!-- Ho添加 新增自定义按键 -->
<enum name="KEYCODE_PTRSCR" value="289" />
<enum name="KEYCODE_RESET" value="290" />
<enum name="KEYCODE_PEN" value="291" />

10、按键已经添加完毕,但是编译会报错如下,需要更新 api 文件,先执行指令 make update-api,再编译

You have tried to change the API from what has been previously approved.To make these errors go away, you have two choices:1) You can add "@hide" javadoc comments to the methods, etc. listed in theerrors above.2) You can update current.txt by executing the following command:make update-apiTo submit the revised current.txt to the main Android repository,you will need approval.

11、在 getevent.h中添加此按键标签

/home/ho/rk3568_android_sdk/out/soong/.intermediates/system/core/toolbox/toolbox_input_labels/gen/input.h-labels.h

在这里插入图片描述


12、上一步添加标签后编译会报错,提示找不到 KEY_PRTSCR等,则需要在头文件中定义

/home/ho/rk3568_android_sdk/bionic/libc/kernel/uapi/linux/input-event-codes.h

在这里插入图片描述


13、上层接收到按键值

按照上述方式添加完成遥控器按键的映射和定义后,上层即可接收到遥控器按下抬起的动作。
在这里插入图片描述

PhoneWindowManager中通过interceptKeyBeforeQueueing方法拦截特殊按键事件。

12-26 04:25:53.343   463   567 I WindowManager: interceptKeyBeforeQueueing: keyCode = 290 ,down = true
12-26 04:25:53.344   463   567 I WindowManager: interceptKeyBeforeQueueing:遥控器重置 !
12-26 04:25:53.346   463   566 D WindowManager: interceptKeyTi keyCode=290 down=true repeatCount=0 keyguardOn=false canceled=false
12-26 04:25:53.528   463   567 I WindowManager: interceptKeyBeforeQueueing: keyCode = 290 ,down = false
12-26 04:25:53.528   463   567 I WindowManager: interceptKeyBeforeQueueing:遥控器重置 !
12-26 04:25:53.529   463   566 D WindowManager: interceptKeyTi keyCode=290 down=false repeatCount=0 keyguardOn=false canceled=false12-26 04:29:21.235   463   567 I WindowManager: interceptKeyBeforeQueueing: keyCode = 291 ,down = true
12-26 04:29:21.236   463   567 I WindowManager: interceptKeyBeforeQueueing:遥控器画笔 !
12-26 04:29:21.237   463   566 D WindowManager: interceptKeyTi keyCode=291 down=true repeatCount=0 keyguardOn=false canceled=false
12-26 04:29:21.417   463   567 I WindowManager: interceptKeyBeforeQueueing: keyCode = 291 ,down = false
12-26 04:29:21.418   463   567 I WindowManager: interceptKeyBeforeQueueing:遥控器画笔 !
12-26 04:29:21.419   463   566 D WindowManager: interceptKeyTi keyCode=291 down=false repeatCount=0 keyguardOn=false canceled=false

结尾

参考文章

Rockchip_Developer_Guide_PWM_IR_CN.pdf

RK3288 红外遥控器增加自定义按键

关键字:免费seo软件_东莞建工集团_今天高清视频免费播放_深圳外包seo

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: