中级会员
 
- 积分
- 263
- 金钱
- 263
- 注册时间
- 2019-4-28
- 在线时间
- 66 小时
|
1金钱
本帖最后由 0孙悟空0 于 2022-8-18 17:08 编辑
ucosii下创建消息队列长度为8。指8个消息。如下OS_EVENT *RcvNetMsg;OS_EVENT *SndNetMsg;
void *RcvNetMsgGrp[8];//net接收消息队列
void *SndNetMsgGrp[8];//net发送消息队列.
RcvNetMsg = OSQCreate(&RcvNetMsgGrp[0],8);
但是我发现发送的数据长度却能比8个字节多,为什么???像下面,OSQPost(RcvNetMsg,rcv_ptr);//发送消息,发送的数据量大于8字节
snd_ptr=OSQPend(SndNetMsg,10,&perr);//请求消息队列,没有消息则10ms后退出。snd_data_len有时会大于8
if(perr == OS_ERR_NONE)//有数据要发送
{
snd_data_len =(u16)(snd_ptr[0]<<8) + snd_ptr[1];
err = netconn_write(tcp_clientconn,&snd_ptr[2],snd_data_len,NETCONN_COPY); //发送数据
if(err != ERR_OK)
{
printf("tcp发送失败\r\n");
// delay_ms(1000);
// NVIC_SystemReset();
}
myfree(SRAMIN,snd_ptr);//释放空间
}
|
|