不多说废话了,直接上代码
[mw_shl_code=c,true]
u8 tcp_send(void)
{
u8 err;
u8 *msg = OSQPend(q_msg,0,&err);
if (msg!=NULL){
u32 len = strlen((char *) msg);
printf("%d
",len);
err = netconn_write(tcp_clientconn, msg, len, NETCONN_COPY);
if(err != ERR_OK){
myfree(SRAMIN,msg);
printf("发送失败
");
return 0;
}
} else {
printf("%s
","等待数据");
}
myfree(SRAMIN,msg);
return 1;
}
[/mw_shl_code]
其中len的获取在1毫秒的发送状况下无法准确的获取长度,并且在出现该情况以后单条发送依然存在该问题,
下面是我发送的数据(每行数据以0D 0A结尾)
通信数据
得出来的len都是30,即全是第一组数据的长度
若我使用自己编写的以0D为结尾获取长度的函数,则能够准确获取其长度如下:
[mw_shl_code=c,true]
u8 getSize(u8 *msg){
u8 len=0;
while (*msg++!='
') len++;
return len;
}
[/mw_shl_code]
希望有高手可以给我解答下,这到底是什么原因造成的
嗯,strlen这个函数没有问题之前是脑子晕圈了才会认为是这里的问题;
<br>
u8 getSize(u8 *msg){
u8 len=0;
while (*msg++!=' ') len++;
return len;
}
这个函数就是仿照着写的
一周热门 更多>