Board logo

标题: osal_msg_send( registeredKeysTaskID, msgPtr, 3 ); [打印本页]

作者: 微毫度十分个扩大飞机公婆    时间: 2007-1-26 15:55     标题: 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,它是一个任务吗?
作者: seuafu2005    时间: 2007-1-29 10:27

就是产生一个事件给应用层,这里是产生一个按键事件

作者: 微毫度十分个扩大飞机公婆    时间: 2007-1-29 16:04

斑竹可以把顶楼3个问题分别回答吗?谢谢!!
作者: seuafu2005    时间: 2007-1-29 17:17

如果你对基本的系统调度事件管理的话,看不到源文件也可以看出它的作用的
osal_msg_send就是产生一个事件
至于这个之后程序怎么跑,程序就是按正常的程序返回就可以了,重新进入事件管理状态,有了事件就进行相应的操作

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




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0