首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > VxWorks >

vxworks中的事件驱动该如何理解

2013-01-05 
vxworks中的事件驱动该怎么理解?我理解的事件驱动,比如:建立了两个任务A,B,A中接收串口数据并解析,B执行某

vxworks中的事件驱动该怎么理解?
我理解的事件驱动,比如:建立了两个任务A,B,A中接收串口数据并解析,B执行某个算法;平时B挂起,当A中解析到特定命令时立刻执行B。
那么这样的立刻执行B需要怎么实现呢?
[解决办法]
在Vxworks中,没有事件驱动这个概念!
任务进行的同步用:信号量、消息!

示例如下:
SEM_ID semSync;
semSync = semBCreate(SEM_Q_PRIORITY, SEM_EMPTY);
 
taskA(void)
 {
     while(1)
    {
       //读取串口数据,并解析
       if(如果解析到命令,释放该信号量)
       semGive(semSync);      //信号量释放,有效
      }
 }

 taskB(void)
 {
    while(1)
    {
       semTake(semSync, WAIT_FOREVER);   //在这里一直等待信号量,如果信号量有效,则执行下面的程序
         //对串口数据进行处理,保存.....
        
     }
}

用消息队列也可以!但是二进制信号量最快!

热点排行