初级会员
- 积分
- 193
- 金钱
- 193
- 注册时间
- 2019-1-18
- 在线时间
- 67 小时
|
楼主 |
发表于 2019-5-12 14:21:12
|
显示全部楼层
这个是例程的原版代码,我这里这样写的话通过网络助手和开发办通讯结果也和你一样,但是因为我项目上是一帧数据8000字节,而以太网一个数据包最大1460字节,所以每一包过来了之后按照例程里首先有一个缓冲区清零操作,这样的话我如果后面要处理数据就得把tcp_server_recbuf里的数据拷贝到另一个缓存数组里再做操作,我按照这个逻辑写的代码,跟客户端下位机进行通讯结果只能接收并处理1-3帧的数据。现在我能想到的问题是:1,可能数据拷贝到缓存数组进行处理的过程太慢导致接收出现问题。2,发送方和开发板连接后发送几帧后不发数据了。
对于第一点处理速度问题,我进行了一个简单的排查,按照你给的图里的代码,再定义一个长度变量temp_len,在开中断之后我将data_len累加到temp_len,并打印temp_len,当其超过随便一个数(比如40000)的时候将其清零。再之后将data_len清零。但是发现还是只能运行几次。
对于第二点我也简单试验了一下,就按照图里给的代码逻辑也就是:先进循环清缓存,接收一个数据包完后开中断,打印数据,这个逻辑的话,下位机客户端发送的数据可以接收。所以是说如果只是接收打印数据是没问题的。
打得字有点多,希望可以帮我看看问题可能出在哪里,十分感谢
|
|