OpenEdv-开源电子网

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

W5500心跳包怎么弄?

[复制链接]

52

主题

106

帖子

0

精华

高级会员

Rank: 4

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

使用道具 举报

52

主题

106

帖子

0

精华

高级会员

Rank: 4

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

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

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

回帖奖励 +20 金钱

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

使用道具 举报

52

主题

106

帖子

0

精华

高级会员

Rank: 4

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

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

使用道具 举报

3

主题

51

帖子

0

精华

高级会员

Rank: 4

积分
530
金钱
530
注册时间
2017-7-25
在线时间
188 小时
发表于 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
回复 支持 反对

使用道具 举报

52

主题

106

帖子

0

精华

高级会员

Rank: 4

积分
691
金钱
691
注册时间
2014-9-7
在线时间
121 小时
 楼主| 发表于 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

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

使用道具 举报

52

主题

106

帖子

0

精华

高级会员

Rank: 4

积分
691
金钱
691
注册时间
2014-9-7
在线时间
121 小时
 楼主| 发表于 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

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

使用道具 举报

52

主题

106

帖子

0

精华

高级会员

Rank: 4

积分
691
金钱
691
注册时间
2014-9-7
在线时间
121 小时
 楼主| 发表于 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

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

使用道具 举报

52

主题

106

帖子

0

精华

高级会员

Rank: 4

积分
691
金钱
691
注册时间
2014-9-7
在线时间
121 小时
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-21 15:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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