硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2218|回复: 8
收起左侧

[RL-TCPnet] tcp_check_send返回失败是什么原因?

[复制链接]

98

主题

340

回帖

634

积分

金牌会员

积分
634
发表于 2018-8-14 22:35:12 | 显示全部楼层 |阅读模式
主函数循环执行以下函数,每0.5秒发送1K字节,发现有时候发着发着就再也不发了,而且串口没有打印任何错误调试信息,打断点发现tcp_check_send函数返回一直为0了,请问这个什么原因造成的呢?如何解决?

while(1)
{
main_TcpNet();
OSTimeDly(5, OS_OPT_TIME_DLY, &err);                                                       
if(++ctr == 100)
{
        main_TcpNet();
        TcpSocketMsgSent(CommSocket,sendbuf,1024);
        ctr = 0;
}

}



回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
 楼主| 发表于 2018-8-14 22:42:15 | 显示全部楼层
发送异常停止之后,网络调试助手断开连接,再次重新,就可以重新开始发送,再中断再重启TCP连接就行
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107262
QQ
发表于 2018-8-15 01:21:12 | 显示全部楼层
云琴箫龙 发表于 2018-8-14 22:42
发送异常停止之后,网络调试助手断开连接,再次重新,就可以重新开始发送,再中断再重启TCP连接就行

是我例程的应用部分代码操作你的板子,看看是否有问题。

把你自己实现的先注释掉。
回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
 楼主| 发表于 2018-8-15 09:22:40 | 显示全部楼层
eric2013 发表于 2018-8-15 01:21
是我例程的应用部分代码操作你的板子,看看是否有问题。

把你自己实现的先注释掉。

一开始就跑的例程,没问题,但例程中的每按键一次才发送一帧,频率太慢,所以想试一下连续发送的情况。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107262
QQ
发表于 2018-8-15 09:26:46 | 显示全部楼层
云琴箫龙 发表于 2018-8-15 09:22
一开始就跑的例程,没问题,但例程中的每按键一次才发送一帧,频率太慢,所以想试一下连续发送的情况。

换用我常用的那个电脑端网络助手软件,然后程序部分还用我的,仅仅把按键部分简单改为定时发送。

我这个是经过大量测试的,容易找到问题。
回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
 楼主| 发表于 2018-8-15 09:27:04 | 显示全部楼层
eric2013 发表于 2018-8-15 01:21
是我例程的应用部分代码操作你的板子,看看是否有问题。

把你自己实现的先注释掉。

造成tcp_check_send返回为0的原因可能是什么呢?应该不是没有发送完吧,既然发送前要调用tcp_check_send,那应该平时就会存在返回为0的情况吧,遇到这种情况改如何做呢?轮训等待?
回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
 楼主| 发表于 2018-8-15 09:28:01 | 显示全部楼层
eric2013 发表于 2018-8-15 01:21
是我例程的应用部分代码操作你的板子,看看是否有问题。

把你自己实现的先注释掉。

还有我发现在回调函数里面调用send总是失败的,这是什么原因呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107262
QQ
发表于 2018-8-15 09:31:08 | 显示全部楼层
云琴箫龙 发表于 2018-8-15 09:28
还有我发现在回调函数里面调用send总是失败的,这是什么原因呢?

不要在回调函数send。

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107262
QQ
发表于 2018-8-15 09:33:56 | 显示全部楼层
云琴箫龙 发表于 2018-8-15 09:27
造成tcp_check_send返回为0的原因可能是什么呢?应该不是没有发送完吧,既然发送前要调用tcp_check_send ...

强烈建议按照我这种方式发送
QQ截图20180815093329.png
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-23 13:07 , Processed in 0.190461 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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