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: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);
..
} 2nd 发表于 2022-11-23 13:47
看API名称,你用的RTX4?手册中的示例,讲的还算明白:
(引用自2楼)
是的,手册用的是 void *msg; 而我希望是直接定义的数组。目前我是用(*p)接收然后再将数据复制到定义的数组中去,我是想将中间转接的(*p)去掉
页:
[1]