OpenEdv-开源电子网

标题: 关于STM32F107 Lwip 发送接收问题! [打印本页]

作者: weibingji    时间: 2014-7-4 18:05
标题: 关于STM32F107 Lwip 发送接收问题!
别的不说先上实验现象:
现象一:间隔一下有一个错误
01 03 00 00 00 01 84 0A //对
01 00 30 00 00 00 00 00 //错误
01 03 00 00 00 01 84 0A
01 00 30 00 00 00 00 00
01 03 00 00 00 01 84 0A
01 00 30 00 00 00 00 00
01 03 00 00 00 01 84 0A
01 00 30 00 00 00 00 00
不管是服务器还是客户端,在我用上位机连续给其发送数据时接收到的数据如上现象一对一错,但是我单次发送的时候又全部是对的。我分析差不多两天了,求大神们给个指点!
想实现功能测试:接收PC机发送数据处理后再传回上位机(PC机)

接收函数代码如下:
static err_t tcp_server_recv(void *arg, struct tcp_pcb *pcb,struct pbuf *p,err_t err)
{
unsigned char *data;
unsigned int i,j;
err=ERR_OK;
if(p != NULL)
{
//if(!RecvMark)return;
tcp_recved(pcb, p->tot_len);//获取数据长度 tot_len:tcp数据块的长度
data    = p->payload;       //取数据首地址
RecvLen = p->tot_len;       //取数据长度
//if(RecvLen<10){return err;}
if(RecvLen>1024){pbuf_free(p);return err;}
else
{
j=0;
for(i=0;i<RecvLen;i=i+2)
{
RxHexBuf[j++]=ASCII2Byte(&data);//将数据转换成16进制
}
RecvLenH=RecvLen>>1; 
RecvMark=1;
pbuf_free(p);                    /* 释放该TCP段 */
}
}
else
{
tcp_close(pcb); /* 作为TCP服务器不应主动关闭这个连接? */
}
err = ERR_OK;
return err;
}
//发送函数如下:
void TCP_Server_SendData(unsigned char *DataBuffer,unsigned int DataLen)
{
struct tcp_pcb *cpcb;
for(cpcb = tcp_active_pcbs;cpcb != NULL; cpcb = cpcb->next) 
{
tcp_write(newpcb,DataBuffer,DataLen,TCP_WRITE_FLAG_COPY); // payload为TCP数据块的起始位置 
tcp_output(cpcb);
}
}
////发送数据操作
TCP_Server_SendData(RxHexBuf,RecvLenH);



作者: weibingji    时间: 2014-7-4 18:05
终于找出原因了,蛋疼的上位软件在发送数据时多发了两个回车符0D0A0D0A!!!!!
作者: 正点原子    时间: 2014-7-4 23:15
帮顶....
作者: weibingji    时间: 2014-7-8 10:22
调试了几天具体问题没有找出来,但是我将工程中的所模块程序功能全部屏蔽掉的时候它就不会出现这种有规律的错,但依然时不时会出现接收数据错误。求解?还有我看了很多大伙的例程,怎么都是一个样的接收数据就直接返回!
作者: 西门吹雪    时间: 2014-7-8 17:03
帮顶。。。。。。。。。。
作者: 想十字路口    时间: 2014-11-17 22:22
回复【2楼】正点原子:
---------------------------------
原子哥,你有没有调试过开发板ping 电脑服务器吗?能不能给点指导,用lwip的
作者: 正点原子    时间: 2014-11-19 00:39
回复【6楼】想十字路口:
---------------------------------
开发板ping电脑服务器?
开发板没有ping这个功能哦。。。
作者: 浩浩平白    时间: 2015-6-4 10:58
回复【5楼】weibingji:
-----------------------------
请问大哥!若PC机作服务器,板子作客户端,用板子对PC机发几个字节,用HTTP协议,能实现吗?
作者: Laughing11    时间: 2018-9-20 13:59
好东西




欢迎光临 OpenEdv-开源电子网 (http://47.111.11.73/) Powered by Discuz! X3.4