主权项 |
一种基于红外遥控残码实现待机唤醒的方法,其特征在于,包括步骤:(1)将红外遥控接收器的OUT引脚即输出端引脚连接到处理器的IRIN引脚,用于将红外遥控接收器接收到的红外遥控脉冲序列通过IRIN引脚进入处理器;(2)收到待机键则进入待机;步骤(2)具体工作步骤如下:(21)将互斥信号量IRMUTEX初始化为0;(22)处理器进入待机;(3)收到红外信号则处理器被唤醒;(4)红外遥控解码程序解出残码;(5)利用残码中得到的部分特征码区分红外源发出的干扰信号以及非本机的各种遥控,如果非本机遥控所唤醒则再次进入待机;(6)如果由本机遥控所唤醒,则利用残码中得到的部分键码区分本机遥控不同的按键;A、对于部分键码能够区分出待机键的情况,待机流程如下:(1)如果收到待机键,则首先将互斥信号量IRMUTEX初始化为0,然后处理器进入待机;(2)当处理器被红外信号唤醒后,获取IRMUTEX并设置超时时间;(3)如果因为超时而退出“获取IRMUTEX”,则回到“将互斥信号量IRMUTEX初始化为0”步骤即步骤(21),并重新进入待机;(4)如果不超时则清除键队列,并进入程序主循环;解码流程如下:(1)如果IRIN中断到来,则清IRIN中断标志位;(2)解码;(3)如果是正常码,则意味着不是从待机被唤醒的情况,进一步判断是否错码,如果不是错码则将键码入队,并退出IRIN中断;如果是错码,则直接退出IRIN中断;(4)如果不是正常码,则判断是否是部分特征码,如果是部分特征码则进一步判断是否本机遥控部分特征码,如果是本机遥控部分特征码则将本机遥控标志置1,并退出IRIN中断;如果不是本机遥控部分特征码,则直接退出IRIN中断;(5)如果不是部分特征码,则判断是否是部分键码,如果不是部分键码则直接退出IRIN中断,如果是部分键码则进一步判断本机遥控标志是否为1,如果是,则首先将本机遥控标志清0,然后判断是否为待机键,如果是则释放IRMUTEX,然后退出IRIN中断;如果 不是待机键,则直接退出IRIN中断;如果本机遥控标志不为1,则直接退出IRIN中断;(6)退出IRIN中断;B、对于部分键码不能区分出待机键的情况,待机流程如下:(1)如果收到待机键,则首先将互斥信号量IRMUTEX初始化为0,然后处理器进入待机;(2)当处理器被红外信号唤醒后,获取IRMUTEX并设置超时时间;(3)如果因为超时而退出“获取IRMUTEX”,则回到“将互斥信号量IRMUTEX初始化为0”步骤即步骤(21),并重新进入待机;(4)如果不超时则清除键队列;(5)用户确认是否真的退出待机,如果真的退出,则进入程序主循环;否则回到“将互斥信号量IRMUTEX初始化为0”步骤即步骤(21),并重新进入待机;解码流程如下:(1)如果IRIN中断到来,则清IRIN中断标志位;(2)解码;(3)如果是正常码,则意味着不是从待机被唤醒的情况,进一步判断是否错码,如果不是错码则将键码入队,并退出IRIN中断;如果是错码,则直接退出IRIN中断;(4)如果不是正常码,则判断是否是部分特征码,如果不是部分特征码则直接退出IRIN中断;如果是部分特征码则进一步判断是否本机遥控部分特征码,如果是则释放IRMUTEX,并退出IRIN中断;如果不是本机遥控部分特征码,则直接退出IRIN中断;(5)退出IRIN中断。 |