完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
看了原子哥的F4开发板的 “实验58 UCOSII实验3-消息队列、信号量集和软件定时器” 例程里面有求消息队列的大小 (OS_Q*)(q_msg->OSEventPtr))->OSQEntries但有时候我们
想知道收到的某条消息的具体长度,该怎么做?比如,我事先准备了10条消息队列内存,每条消息队列最大给分配的长度为100个字节,每次 实际发送的长度为0~100,那么接收端怎么得到每次实际发送数据的长度? 求助版主@zuozhongkai |
|
相关推荐
4个回答
|
|
|
我记得貌似函数返回值还是函数参数什么的就是消息长度,我电脑挂了,插不了资料了。你看一下接受数据的API函数
|
|
|
|
|
|
接收函数是这样的
void *OSQPend (OS_EVENT *pevent, INT16U timeout, INT8U *err); 它返回接收消息的地址,但没有所接收消息的长度,现在需要用接收消息的长度,不知道该怎么做? 如果实在不行,我想的是,自己封装一个协议,比如, 帧头 ,数据长度, 数据,帧尾 0xA5, 0x12,0x34, xxxxxx, 0x5A 让发送方把消息长度包含在消息里,接收方解析时,自己去计算长度,不过稍显得麻烦, 不知道有没有哪里本身就带有消息的长度的? |
|
|
|
|
|
你应该看一下UCOSIII,叫II而言,III 强大了一大截,我刚才实验了一下,
key=OSQPend((OS_Q* )&KEY_Msg, (OS_TICK )0, (OS_OPT )OS_OPT_PEND_BLOCKING, (OS_MSG_SIZE* )&size, (CPU_TS* )0, (OS_ERR* )&err); 这个函数中的size就是消息的字节数,很好用;嗯 |
|
|
|
|
|
谢谢你,我该了解UCOSIII了
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1022 浏览 1 评论
1852 浏览 0 评论
1833 浏览 1 评论
3258 浏览 5 评论
3585 浏览 9 评论
1025浏览 1评论
1852浏览 1评论
如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况?
1362浏览 1评论
1855浏览 0评论
1180浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 11:01 , Processed in 1.477535 second(s), Total 81, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1870