关于UCOS下邮箱使用的两个经验

 

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


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值