OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...
查看: 1239|回复: 12

W5500心跳包怎么弄?

[复制链接]

  离线 

49

主题

98

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2014-9-7
在线时间
104 小时
发表于 2018-1-12 10:20:48 | 显示全部楼层 |阅读模式
IINCHIP_WRITE(Sn_KPALVTR(1),0X02);看资料说直接加这条语句就好了,可以我把网线拔了过一段时间没有断开。一直在连接状态。
回复

使用道具 举报

  离线 

49

主题

98

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2014-9-7
在线时间
104 小时
 楼主| 发表于 2018-1-12 10:32:54 | 显示全部楼层
IINCHIP_WRITE(Sn_KPALVTR(0),0X02);我改成这个竟然断了???????怎么回事
回复 支持 反对

使用道具 举报

  离线 

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1279
金钱
1279
注册时间
2014-12-20
在线时间
530 小时
发表于 2018-1-12 10:39:40 | 显示全部楼层

回帖奖励 +20

向服务器发数据,保持通讯就行。
回复 支持 反对

使用道具 举报

  离线 

49

主题

98

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2014-9-7
在线时间
104 小时
 楼主| 发表于 2018-1-12 10:52:08 | 显示全部楼层
BMN李 发表于 2018-1-12 10:39
向服务器发数据,保持通讯就行。

总会有意外情况出错了,就连不上了,就需要心跳包。
回复 支持 反对

使用道具 举报

  离线 

0

主题

4

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2017-7-25
在线时间
4 小时
发表于 2018-1-12 12:05:29 | 显示全部楼层

回帖奖励 +20

12778298 发表于 2018-1-12 10:32
IINCHIP_WRITE(Sn_KPALVTR(0),0X02);我改成这个竟然断了???????怎么回事

应该是看你设置了哪个socket的心跳,有0~7
Sn_KPALVTR(0)是socket 0
回复 支持 反对

使用道具 举报

  离线 

49

主题

98

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2014-9-7
在线时间
104 小时
 楼主| 发表于 2018-1-12 13:29:55 | 显示全部楼层
Ezel 发表于 2018-1-12 12:05
应该是看你设置了哪个socket的心跳,有0~7
Sn_KPALVTR(0)是socket 0

哦,应该是的
回复 支持 反对

使用道具 举报

  离线 

11

主题

216

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1028
金钱
1028
注册时间
2015-2-27
在线时间
458 小时
发表于 2018-1-12 13:42:23 | 显示全部楼层
完全看不懂你再说什么,但我想我的回答你应该看得懂
IINCHIP_WRITE(Sn_KPALVTR(1),0X02);  这个只是监测心跳包,如果W5500给目标发心跳包,目标没有回复心跳包,W5500会将socket设置为关闭状态,重连目标得你自己去写程序呀,
回复 支持 反对

使用道具 举报

  离线 

49

主题

98

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2014-9-7
在线时间
104 小时
 楼主| 发表于 2018-1-12 14:27:58 | 显示全部楼层
enan 发表于 2018-1-12 13:42
完全看不懂你再说什么,但我想我的回答你应该看得懂
IINCHIP_WRITE(Sn_KPALVTR(1),0X02);  这个只是监测心 ...

IINCHIP_WRITE(Sn_KPALVTR(1),0X02);这里面的参数个是什么意思?
1是socket1,0x02是指2*5=10秒,我现在这样理解的。

我拔掉网线,过10秒程序就跑到关闭了,然后又监听了。

我在每个状态都有一个printf。
现在又发现一个问题,我网络调试助手关闭连接,程序输出“关闭、打开socket、监听”,然后我放一长段时间,又出来一“打开socket、监听”。用网络调试助手也连不上了。为什么在上一个socket还没有关闭下,又打开了,还连不上了。
回复 支持 反对

使用道具 举报

  离线 

11

主题

216

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1028
金钱
1028
注册时间
2015-2-27
在线时间
458 小时
发表于 2018-1-12 16:22:21 | 显示全部楼层
你这肯定是程序上的问题,官方例程不是有个一状态机吗,socket关闭就会去打开socket,socket打开后就会listen,然后你就可以连了
回复 支持 反对

使用道具 举报

  离线 

49

主题

98

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2014-9-7
在线时间
104 小时
 楼主| 发表于 2018-1-12 16:33:32 | 显示全部楼层
enan 发表于 2018-1-12 16:22
你这肯定是程序上的问题,官方例程不是有个一状态机吗,socket关闭就会去打开socket,socket打开后就会list ...

就是用的那个状态机,我猜是是不是switch(getSn_SR(0))这个getSn_SR(0)这个读取错误了,然后状态机就进入SOCK_CLOSED的case了。
回复 支持 反对

使用道具 举报

  离线 

11

主题

216

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1028
金钱
1028
注册时间
2015-2-27
在线时间
458 小时
发表于 2018-1-12 16:58:22 | 显示全部楼层
IINCHIP_WRITE(Sn_KPALVTR(1),0X02);你设置的socket1支持心跳包,
却switch(getSn_SR(0))这个socket0去试,你这是几个意思?
回复 支持 反对

使用道具 举报

  离线 

49

主题

98

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2014-9-7
在线时间
104 小时
 楼主| 发表于 2018-1-15 15:26:30 | 显示全部楼层
enan 发表于 2018-1-12 16:58
IINCHIP_WRITE(Sn_KPALVTR(1),0X02);你设置的socket1支持心跳包,
却switch(getSn_SR(0))这个socket0去试 ...

这个我改过来了,弄错了。
现在关键我在“监听”状态下,什么都不动,过1个小时(大概),getSn_SR(SOCK_TCPS)就收到0X00,然后状态机就再次执行了打开socket和监听。网络助手连不上了。
回复 支持 反对

使用道具 举报

  离线 

8

主题

82

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-5-23
在线时间
17 小时
发表于 2018-1-30 17:17:01 | 显示全部楼层
问题解决了吗?

我们有提供技术支持 0755-86568556
邮箱 support@wisioe.com
WIZnet 以太网芯片 w5500 Dai Li 商 深圳炜世科技0755-86568556  QQ2574989918
回复 支持 反对

使用道具 举报

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

本版积分规则




关闭

报名原子哥新品发布会&粉丝见面会上一条 /1 下一条

正点原子公众号

QQ|联系我们|手机版|官方淘宝店|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-10-23 12:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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