Void read_data(UArg a0, UArg a1)
{
p = memchr(Data1+out,'@',2);
if(p){
p1 = memchr(Data1+out,'#',40);
if(p1){
p2 = (char *)p1-(char *)p-1;
memset(bufs1,NULL,sizeof(bufs1));
memmove(bufs1,Data1+1+out,p2);
memset(Data1+out,NULL,p2+2);
out = out+p2+2;
}else{
//@之后找不到#
}
}else{
out = 0;
}
if(((pianyi + pBuflen >= out)&&(pianyi< out))||((curent_bufs_len > (max-pianyi)) && (curent_bufs_len >out) ) ) //缓冲区已满
{
pBuf2 = "环形缓冲区已满,请暂停发送";
send(s, pBuf2, 30, 0 );
//hold = -1;
}
// 回传接受到的数据
if(send(s, bufs1,p2 , 0 ) < 0)
{
return;
}
//send(s, bufs1, p2, 0 );
//Task_sleep(100); // 100表示系统时钟计数
}
实际上就是一个判断开头为@结尾为#的,就把中间的截取出来作为一个buf1 send回来。
Void read_data(UArg a0, UArg a1)
{
p = memchr(Data1+out,'@',2);
if(p){
p1 = memchr(Data1+out,'#',40);
if(p1){
p2 = (char *)p1-(char *)p-1;
memset(bufs1,NULL,sizeof(bufs1));
memmove(bufs1,Data1+1+out,p2);
memset(Data1+out,NULL,p2+2);
out = out+p2+2;
}else{
//@之后找不到#
}
}else{
out = 0;
}
if(((pianyi + pBuflen >= out)&&(pianyi< out))||((curent_bufs_len > (max-pianyi)) && (curent_bufs_len >out) ) ) //缓冲区已满
{
pBuf2 = "环形缓冲区已满,请暂停发送";
send(s, pBuf2, 30, 0 );
//hold = -1;
}
// 回传接受到的数据
if(send(s, bufs1,p2 , 0 ) < 0)
{
return;
}
//send(s, bufs1, p2, 0 );
//Task_sleep(100); // 100表示系统时钟计数
}
实际上就是一个判断开头为@结尾为#的,就把中间的截取出来作为一个buf1 send回来。
举报