首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

osal_msg_send( registeredKeysTaskID, msgPtr, 3 );

osal_msg_send( registeredKeysTaskID, msgPtr, 3 );

在OnBoard.c中
void SendKeys( byte keys )
{
byte *msgPtr;
byte *pBuf;

// Send the address to the task
if ( osal_msg_allocate( &msgPtr, 3 ) == ZSUCCESS )
{
pBuf = msgPtr;
*pBuf++ = KEY_CHANGE; // Command ID
*pBuf++ = DetermineKeyShift();
*pBuf = keys;

osal_msg_send( registeredKeysTaskID, msgPtr, 3 );
}
}

我对osal_msg_send( registeredKeysTaskID, msgPtr, 3 );不是很清楚,斑竹能详细介绍一下它的功能?以及在上面程序中调用它之后程序下一步怎么跑?
registeredKeysTaskID似乎表明registeredKeys有TaskID,它是一个任务吗?
就是产生一个事件给应用层,这里是产生一个按键事件
斑竹可以把顶楼3个问题分别回答吗?谢谢!!
如果你对基本的系统调度事件管理的话,看不到源文件也可以看出它的作用的
osal_msg_send就是产生一个事件
至于这个之后程序怎么跑,程序就是按正常的程序返回就可以了,重新进入事件管理状态,有了事件就进行相应的操作

TaskID就是任务的名字,当然是已经存在的才可能为这个任务产生相应的事件
返回列表