Chinaunix首页 | 论坛 | 博客
  • 博客访问: 175134
  • 博文数量: 48
  • 博客积分: 2085
  • 博客等级: 大尉
  • 技术积分: 420
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-20 15:22
文章分类

全部博文(48)

文章存档

2013年(1)

2012年(1)

2011年(1)

2010年(16)

2009年(29)

分类:

2009-10-20 15:51:52

在使用UCOS的邮箱时,遇到一些问题,现将一些小总结写下,希望对大家有所帮助。

     邮箱使用总结

1.数据的存放。

邮箱一般用来传递数据,不管何种类型都可以传递。在传递时,先把数据数据用void *进行类型变化,化为void *这种万用类型,而在接收邮箱的数据时,再还原成本身的数据类型。比如以下的两个例子:

一是传递指向一个数组的指针。发端采用如下方式:

OSMboxPost(ComSendMbox, (void *)ComBufRec);         

其中的ComBufRec就是数组名,也表示指向该数组的指针,将原来的字符型数组名(或指针)变成(void *)类型,而接收端,利用

send_ptr = (uint8 *)OSMboxPend(ComSendMbox, 0, &err);      

将(void *)类型还原为指针。

二是传递一个字符型变量。发端采用如下方式:

OSMboxPost(KeyMbox, (void *)key_value);              

其中的key_value就是字符型变量,将原来的字符型变量变成(void *)类型,而接收端,利用

key = (INT8U)OSMboxPend(KeyMbox, 0, &err);      

将(void *)类型还原为字符型变量。

2、关于在邮箱中不能存放传递0值的问题

在邮箱的传递中,如果把一个0值放入邮箱,经过void *类型变化后,变成了void *0,而判断邮箱中是否有数据正是通过判断邮箱中指向Message的指针是否为0来判断,这样虽然放入了一个0变量,但邮箱中却无法判断这个0值,认为邮箱中还是空。

阅读(1834) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~