李贝 发表于 2022-11-23 10:30:07

RTX邮箱,void** message如何传递已经定义好的数组数据?

原函数如下:
OS_RESULT os_mbx_wait (
    OS_IDmailbox,      /* The mailbox to get message from 邮箱得到消息*/
    void** message,      /* Location to store the message pointer放置消息指针区 */
    U16    0xFFF );    /* Wait time for message to become available 消息可得等待时间*/
如果我已经有定义好的数组参数需要传递:
发送任务端:
uint16_t ucMsg;
os_mbx_send(&mail_Prval, ucMsg,0xFFFF);
接收任务端如果已经有定义好的数组
uint16_trxMsg;
os_mbx_wait(&mail_Prval, ****,0);
****应该如何填写?

2nd 发表于 2022-11-23 13:47:20

本帖最后由 2nd 于 2022-11-23 13:51 编辑

看API名称,你用的RTX4?手册中的示例,讲的还算明白:

#include <RTL.h>

os_mbx_declare (mailbox1, 20);
OS_TID tsk1, tsk2;

__task void task1 (void);
__task void task2 (void);

__task void task1 (void) {
void *msg;
   ..
tsk2 = os_tsk_create (task2, 0);
os_mbx_init (&mailbox1, sizeof(mailbox1));
msg = alloc();
/* set message content here*/
os_mbx_send (&mailbox1, msg, 0xFFFF);
   ..
}

__task void task2 (void) {
void *msg;
   ..
os_mbx_wait (mailbox1, &msg, 0xffff);
/* process message content here */
free (msg);
   ..
}

李贝 发表于 2022-11-23 14:01:44

2nd 发表于 2022-11-23 13:47
看API名称,你用的RTX4?手册中的示例,讲的还算明白:
(引用自2楼)

是的,手册用的是 void *msg; 而我希望是直接定义的数组。目前我是用(*p)接收然后再将数据复制到定义的数组中去,我是想将中间转接的(*p)去掉
页: [1]
查看完整版本: RTX邮箱,void** message如何传递已经定义好的数组数据?