• 欢迎大家分享资料!前往留言板评论即可!

合宙cat1模块如何发送心跳包,看这一篇就够了

合宙 模组资料网 1年前 (2021-05-15) 301次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

本文适用于AT命令固件版本

合宙CAT1模块有两种方式实现心跳包的发送:

第一种:在TCP层实现

这种方式是TCP协议层实现的,只适用于TCP链接。也就是说,这种实现方式不会对应用层的数据流产生任何影响,应用层也看不到心跳包的内容。

这种实现方式叫做TCP保活(TCP Keep-Alive),由+CIPTKA这个命令来实现。具体:

合宙cat1模块如何发送心跳包,看这一篇就够了

<mode> 是否打开TCP保活功能
0:关闭    1:开启


<keepIdle> 在<keepIdle>时间内链接上无任何数据交互,则发送初始保活探针(initial keep-alive probe)
取值范围:30~7200  单位为秒,缺省值为7200

<keepInterval> 保活探针重传的间隔时间
取值范围:30~600  单位为秒,缺省值为75

<keepCount> 发送保活探针的最大数量
取值范围:1~9  单位为次,缺省值为9

例如,建议一个TCP链接,并打开保活探针:
AT+CIPTKA=1,120,75,9
AT+CIPSTART=1,TCP,"<server address>",<port>

CIPTKA命令打开TCP保活功能,<keepIdle>=120秒,<keepInterval>=75,<keepCount>=9 。后面两个参数可选(如AT+CIPTKA=1,120),当后面两个参数空缺的时候,意味着这后面两个参数取的是缺省值。

如果在120秒内TCP链接上没有任何数据交换,则设置端会发送初始保活探针,
- 如果模块端收到对端回复的对初始保活探针的ACK,则认为链接状态正常,会重置<keepIdle>这个timer。还有一种情况下也会重置此timer,那就是当应用层有数据收发时。

- 如果模块端没有收到对端回复的对初始保活探针的ACK,则75秒后会重发一次保活探针;如果还没得到对端的ACK,则隔<keepInterval>=75秒再发,最多一共发送<keepCount>=9次(含初始保活探针)。如果9次内得到了对端的ACK,则重置<keepIdle>这个timer;如果9次发完还没得到对端的ACK,则认为此TCP链接断连

oh,对了,一旦打开TKA功能,对当前存在的所有TCP链接都起作用。而且即使模块进入休眠(CSCLK=1或2),仍旧可以保持链接不掉。

第二种:在应用层实现

这种方式是由设置端在应用层发心跳包来实现的。这种情况下对端的应用层会收到设置端的心跳包内容。这种方式TCP,UDP都适用,但是同时只能作用于一个链接。

这种实现方式由^HEARTCONFIG、^HEARTBEAT(或^HEARTBEATHEX)共同作用来实现。举例如下(每个命令的具体定义请参考合宙AT命令文档):
– 单链接上发送普通心跳内容
AT^HEARTCONFIG=1,0,120
AT^HEARTBEAT=0,Heart-content
AT+CIPSTART=TCP,server,port
以上命令在单链接上每隔120秒发送一个内容为”Heart-content”的心跳包。

  • 在多链接的第5条链接上发送HEX格式心跳内容
    AT+CIPMUX=1
    AT+CSTT
    AT+CIICR
    AT+CIFSR
    AT+CIPSTART=3,TCP,server,port
    AT^HEARTCONFIG=1,3,150
    AT^HEARTBEATHEX=3,6,313233414243
    以上命令在多链接的第三条链接上每隔150秒发送一个内容为”123ABC”的心跳包。

喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址