硬汉嵌入式论坛

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

[以太网] 新版RL-TCPnet V7.X断开网线几十分钟,再次插上无法识别问题解决办法

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107122
QQ
发表于 2019-10-22 08:56:08 | 显示全部楼层 |阅读模式
问题说明:
这个问题在实际项目中很常见,往往我们测试阶段仅仅断开一小会或者几分钟就重新插上,发现也没有什么问题。

但是长时间断开,再插上就不行了,表现出来的现象就是无法ping通过,但是插拔还是有消息通知。

解决思路:
此时解决办法也简单粗暴,新版TCPnet提供了一个初始化函数和一个复位函数。

这个复位函数非常给力,会删除创建的所有用户资源,内核任务和以太网接口任务。

解决办法:
应用程序的解决办法就是检测到断开消息后
此时依次调用下面两个函数即可:
netUninitialize();
netInitialize();



回复

使用道具 举报

3

主题

30

回帖

39

积分

新手上路

积分
39
发表于 2019-10-22 09:07:37 | 显示全部楼层
网络这东西,我也是检测到断开就复位,很好用
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107122
QQ
 楼主| 发表于 2019-10-22 11:30:20 | 显示全部楼层
独立一个检测任务来处理:

  1. /*
  2. *********************************************************************************************************
  3. *        函 数 名: AppTaskEthCheck
  4. *        功能说明: 检查网线插拔状态。
  5. *        形    参: 无
  6. *        返 回 值: 无
  7. *   优 先 级: osPriorityHigh3  
  8. *********************************************************************************************************
  9. */
  10. void AppTaskEthCheck(void *argument)
  11. {
  12.         /* 初始化网络 */
  13.         netInitialize();
  14.        
  15.         /* 初始化完毕后再创建应用任务 */
  16.         ThreadIdTaskMsgPro = osThreadNew(AppTaskMsgPro, NULL, &ThreadMsgPro_Attr);
  17.         while(1)
  18.         {
  19.                 /* 这里是查询的网线插拔标志,方便移植,大家也可以根据需要发送任务事件标志做处理 */
  20.                 if(g_ucEthLinkStatus == 3)
  21.                 {
  22.                         g_ucEthLinkStatus = 0;
  23.                        
  24.                     /* 释放所有网络资源,含TCPnet内核任务和ETH接口任务 */       
  25.                         netUninitialize();
  26.                        
  27.                         /* 删除TCPnet应用任务 */
  28.                         osThreadTerminate(ThreadIdTaskMsgPro);
  29.                        
  30.                         /* 重新初始化 */
  31.                         netInitialize();
  32.                        
  33.                         /* 重新创建应用任务 */
  34.                         ThreadIdTaskMsgPro = osThreadNew(AppTaskMsgPro, NULL, &ThreadMsgPro_Attr);
  35.                 }
  36.                
  37.                 osDelay(10);
  38.         }       
  39. }
复制代码


回复

使用道具 举报

610

主题

3063

回帖

4913

积分

至尊会员

积分
4913
发表于 2019-10-22 16:19:10 | 显示全部楼层
eric2013 发表于 2019-10-22 11:30
独立一个检测任务来处理:

  目前暂时 tcpnet 还没有时间折腾啊,
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 16:37 , Processed in 0.160378 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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