OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10476|回复: 8

关于STM32F107 Lwip 发送接收问题!

[复制链接]

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2013-3-18
在线时间
5 小时
发表于 2014-7-4 18:05:49 | 显示全部楼层 |阅读模式
5金钱
别的不说先上实验现象:
现象一:间隔一下有一个错误
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);


最佳答案

查看完整内容[请看2#楼]

终于找出原因了,蛋疼的上位软件在发送数据时多发了两个回车符0D0A0D0A!!!!!
执着!技术,时刻准备着!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2013-3-18
在线时间
5 小时
 楼主| 发表于 2014-7-4 18:05:50 | 显示全部楼层
终于找出原因了,蛋疼的上位软件在发送数据时多发了两个回车符0D0A0D0A!!!!!
执着!技术,时刻准备着!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-7-4 23:15:18 | 显示全部楼层
帮顶....
回复

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2013-3-18
在线时间
5 小时
 楼主| 发表于 2014-7-8 10:22:53 | 显示全部楼层
调试了几天具体问题没有找出来,但是我将工程中的所模块程序功能全部屏蔽掉的时候它就不会出现这种有规律的错,但依然时不时会出现接收数据错误。求解?还有我看了很多大伙的例程,怎么都是一个样的接收数据就直接返回!
执着!技术,时刻准备着!
回复

使用道具 举报

8

主题

222

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2013-11-21
在线时间
0 小时
发表于 2014-7-8 17:03:50 | 显示全部楼层
帮顶。。。。。。。。。。
回复

使用道具 举报

11

主题

50

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2013-9-29
在线时间
1 小时
发表于 2014-11-17 22:22:34 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,你有没有调试过开发板ping 电脑服务器吗?能不能给点指导,用lwip的
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-11-19 00:39:31 | 显示全部楼层
回复【6楼】想十字路口:
---------------------------------
开发板ping电脑服务器?
开发板没有ping这个功能哦。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2015-5-22
在线时间
7 小时
发表于 2015-6-4 10:58:50 | 显示全部楼层
回复【5楼】weibingji:
-----------------------------
请问大哥!若PC机作服务器,板子作客户端,用板子对PC机发几个字节,用HTTP协议,能实现吗?
回复

使用道具 举报

5

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2018-5-16
在线时间
11 小时
发表于 2018-9-20 13:59:56 | 显示全部楼层
好东西
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 19:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表