Chinaunix首页 | 论坛 | 博客
  • 博客访问: 584992
  • 博文数量: 119
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1583
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-15 09:18
文章分类

全部博文(119)

文章存档

2011年(3)

2010年(21)

2009年(44)

2008年(51)

我的朋友

分类:

2009-06-17 22:33:12

在使用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值,认为邮箱中还是空。

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