CC2530 Note 1:( ProcessEvent, MSGpkt, MessageMSGCB)

本文介绍了CC2530在Zigbee应用中如何处理事件,包括System event和自定义Event。重点讲解了事件处理函数XXXApp_ProcessEvent,以及如何根据MSGpkt的类型调用不同的回调函数,如XXXApp_MessageMSGCB和XXXApp_SendTheMessage。同时,提到了设备状态改变、按键事件和自定义事件的处理。文章还提及了一些关键细节,如Coordinator的短地址和SimpleDescriptionFormat_t中的AppNumIn(Out)Clusters含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

搞了半天CC2530  GenericApp 的总结:


最概况的话是

事件(Events) 触发 用户函数XXXApp_ProcessEvent() 
判断event 类型
1. System event: 接收MSGpkt 

  判断 MSGpkt-> hdr.event: case : XXXApp_MessageMSGCB或者xxx_SendTheMessage() 

2. 自定义Event: 自定义函数func()

具体追溯:

1. 系统运行函数:

void osal_run_system( void )
{
  uint8 idx = 0;
  ....
  do {
    if (tasksEvents[idx])  // 检测触发事件
    {
      break;
    }
  } while (++idx < tasksCnt);         

  if (idx < tasksCnt)
  {
    uint16 events;
    halIntState_t intState;
    HAL_ENTER_CRITICAL_SECTION(intState);    //关闭中断
    events = tasksEvents[idx];
    tasksEvents[idx] = 0;  // Clear the Events for this task.
    HAL_EXIT_CRITICAL_SECTION(intState);

    activeTaskID = idx;
    events = (tasksArr[idx])( idx, events );    
 // 执行用户应用, 用户的idx在taskArry[ ]对应的是XXXApp_Process_Ev
### 回答1: qcoreapplication::processevent是Qt框架中的一个函数,用于处理事件。它是一个静态函数,可以在任何地方调用。它的作用是从事件队列中取出一个事件并进行处理。在Qt应用程序中,所有的事件都会被放入事件队列中,包括鼠标事件、键盘事件、定时器事件等等。当调用qcoreapplication::processevent函数时,它会从事件队列中取出一个事件并进行处理,如果事件处理完毕后还有其他事件,则继续处理,直到事件队列为空为止。 ### 回答2: qcoreapplication::processevent 是 Qt 框架中非常重要的一个函数,它被用于处理 Qt 应用程序中的事件。Qt 事件系统是 Qt 框架中非常重要的一部分,它允许应用程序与用户交互,以及与系统中其他对象进行通信。 当应用程序接收到一个事件时,它将通过 Qt 事件系统被传递到特定的对象中。这个对象可以是一个 Widget、一个 Layout、一个 QAction 等等。Qt 事件系统将事件发送到对应对象的事件处理函数中,这个事件处理函数通常会调用 qcoreapplication::processevent 函数来处理这个事件。 在调用 qcoreapplication::processevent 函数之前,Qt 框架会首先将事件从事件队列中取出来,并查找被这个事件影响到的对象。如果找到了这个对象,那么 Qt 框架将会调用它的事件处理函数来处理这个事件。处理事件的函数可以进行任何操作,比如更改对象的状态、向其他对象发送消息等等。一旦处理完这个事件,这个对象就会将事件返回给 Qt 事件系统。 当所有的事件都被处理完后,qcoreapplication::processevent 函数会退出并返回。这时,应用程序将进入 IDLE 状态,等待下一个事件的到来。 在使用 qcoreapplication::processevent 函数时,需要注意一些事项。首先,这个函数应该在应用程序的主线程中调用。其次,这个函数在处理事件时会阻塞当前线程,因此应该避免在 UI 线程中长时间的处理事件。最后,这个函数返回时会将事件队列中所有未处理的事件清空,因此在调用这个函数之前应该确保所有事件都已经被处理完。 总之,qcoreapplication::processevent 函数是 Qt 应用程序中重要的函数之一。在编写 Qt 应用程序时,需要对其深入理解,并进行合理的使用。 ### 回答3: qcoreapplication::processevent是Qt的核心类QCoreApplication中的一个方法,用于处理当前线程内的事件队列,并且在事件处理器中处理所有的已经到达的事件。我们可以将事件分为GUI事件和非GUI事件。 GUI事件主要与UI界面交互相关。例如,当用户单击鼠标或按下键盘时,GUI事件会被创建并添加到事件队列中。QCoreApplication::processEvents()方法循环处理事件队列中的GUI事件,确保UI界面及时得到更新,用户不能感受到UI界面被卡顿或响应不及时。 非GUI事件主要是与应用逻辑相关的事件。例如,网络接收到数据,定时器到期等。QCoreApplication::processEvents()方法也可以处理这些事件。对于非GUI事件,QCoreApplication提供了一个额外的参数,控制对事件处理器是否阻塞。 QCoreApplication::processEvents()方法可以在任何时候被调用,也可以在多个线程中被并发地调用。在调用QCoreApplication::processEvents()方法之前,必须确保事件队列中存在事件。如果事件队列为空,则QCoreApplication::processEvents()方法会立即返回。 在QT框架中,事件是QT提供的一种异步通信机制,用于线程之间的信息传递和控制。大多数情况下,QCoreApplication::processEvents()方法不应该被滥用,以避免在GUI事件的处理过程中经常占用CPU资源,导致程序变慢或不稳定。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值