linux下的定时器的使用

#ifdef LINUX_EVN
//socket
#include <sys/socket.h>
#include <linux/netlink.h>
#include <sys/un.h> 
#include <string.h> 
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <time.h>
#include <sys/time.h>
#endif

/发送back硬按键定时器的标志位

static int flag_back_timer=1; 


void set_back_send_timer(int tv_sec,int tv_usec);


/* 
* 开始链接BACK发送的处理函数
*/
void back_send_timer_func(int sig)      /* 定时事件代码 */
{
// 定时器溢出,如果此时用户点击车机BACK硬按键,则会发送WM_PLINK_HARDKEY_BACK_DOWN
flag_back_timer=1;
}


/* 
* 设置定时器时间,设置完后定时器会在指定时间触发back_send_timer_func 函数 
*/
void set_back_send_timer(int tv_sec,int tv_usec)
{
INFO("set_back_send_timer \n");
struct itimerval back_send_timer_value;
back_send_timer_value.it_value.tv_usec = tv_usec;
back_send_timer_value.it_value.tv_sec = tv_sec;
signal(SIGALRM, back_send_timer_func);     /* 捕获定时信号 */
setitimer(ITIMER_REAL, &back_send_timer_value, NULL); /* 定时开始 */

}


使用如下:

if( park_status==PARK_OFF
|| (park_status==PARK_ON && android_choose==ANDROID_UNAGREEN)
|| (park_status==PARK_ON && android_choose==ANDROID_AGREEN&&DaLink_MainMenu_Status==DALINK_MAIN_MENU__BACKGROUND)
|| (park_status==PARK_ON && android_choose==ANDROID_NULL&&DaLink_MainMenu_Status==DALINK_MAIN_MENU__BACKGROUND))
{
//为避免用户频繁的点击车机的BACK按键,利用定时器过滤BACK硬按键消息
if(flag_back_timer==1)
{
msg.MsgType = WM_PLINK_HARDKEY_BACK_DOWN;
sendMsgToPhonelink(&msg);
INFO(" SendMsgToPhonelink WM_PLINK_HARDKEY_BACK_DOWN \n");
flag_back_timer=0;
set_back_send_timer(0,500000);
INFO("set_back_send_timer(1,0)\n");
}
else 
{
INFO("Abandon WM_PLINK_HARDKEY_BACK_DOWN\n");
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值