扫地机地图服务

更新时间:2024-04-08 08:18:04下载pdf

扫地机地图流数据传输功能是针对扫地机地图数据传输的服务,作为扫地机和涂鸦 App 地图数据在线上的一个特殊快捷通道。

扫地机流服务的命令不是所有模组都支持,需要使用特定的模组并且开通相关服务,才可以正常使用该服务。

功能流程

扫地机地图服务

使用说明:

  • 扫地机一次完整的地图数据通过协议中的地图 ID 区分。对于同一个 ID 的数据,App 端认为这是一张地图数据,会一直累加处理。
  • 扫地机在清扫过程中需要在全屋范围内移动,部分区域 Wi-Fi 信号弱可能导致数据上传失败,在模组内存充足的前提下,目前可以缓存 24 条数据。

指令列表

扫地机地图服务涉及以下协议指令:

命令字 命令说明
0x28 地图流数据传输
0x30 地图流数据传输(多张地图数据)
0x34+0x06 获取地图会话 ID

地图流数据传输

  • 偏移量表示一次地图数据里,MCU 已经发送的数据总长。

  • 模组串口最大可以缓存的数据可以达到 1024 字节,一个地图数据包的数据不能超过 1024 字节,每包地图数据内容建议 512 字节。

  • 地图 ID 作为一次完整地图数据的标志,数据传输方需要在一张地图数据结束后、新地图开始时,改变地图 ID,一般以递增的方式进行。当地图 ID 改变,App 界面显示当前地图数据,清除之前数据,重新开始显示。

  • 开始数据传输后,模组会停止心跳包发送,保证地图数据的优先传输。之后,在模组不断电的前提下不会主动恢复心跳包的发送。

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x28
数据长度 2 0x0006+N
数据 2 data[0]–data[1] 地图 ID 号:地图 ID 号作为一张地图数据的归属标识。
4 data[2]–data[5] 偏移量,首包为 0
N data[6]–data[N] 实体数据,大端模式
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

示例:地图 ID:123,包偏移量:0

55 aa 03 28 xx xx 00 7b 00 00 00 00 xx xx xx xx xx

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x28
数据长度 2 0x0001
数据 1 数据
  • 0x00:成功
  • 0x01:流服务功能未开启
  • 0x02:流服务器未连接成功
  • 0x03:数据推送超时
  • 0x04:传输的数据长度错误
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

示例55 aa 00 28 00 01 00 28

地图流数据传输(多张地图数据)

如果扫地机将多张上传的地图数据合并为一张显示的地图,可以采用本通道。

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x30
数据长度 2 0x0009+N
数据 1 地图服务协议版本:0x00
2 地图服务会话 ID 号:作为一次地图显示的标志
6
  • BUF[0]:子地图 ID 号。一次地图会话可以由多张地图数据合成,例如路径图。
  • BUF[1]:地图 ID 数据处理方式。0x00:继续累加。0x01:清除子地图 ID 号上传的数据。
  • BUF[2]-BUF[5]:子地图数据偏移量,首包为 0。
N 实体数据(大端模式)
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

示例55 aa 03 30 00 xx 00 00 00 01 00 00 00 00 xx xx xx xx xx xx

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x30
数据长度 2 0x0001
数据 1
  • 0x00:成功
  • 0x01:失败
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

示例55 aa 03 30 00 01 00 33

获取地图会话 ID

  • 此命令是地图流服务单张地图和多张地图传输协议的补充。

  • 地图会话 ID 由模组管理。MCU 在传一张新的地图数据时,可以先向模组申请地图会话 ID(子地图 ID 不用申请,根据子地图个数,依次为 0x010x020x03……即可),模组会在回复时将此次地图会话 ID 返回给 MCU,随后 MCU 传输这张地图的地图会话 ID 都需要使用此 ID。

  • 如果您想自行管理地图会话 ID,可以不使用此命令。

MCU 发送

字段 长度 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x34
数据长度 2 0x0001
数据 1 0x06(子命令)
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

示例55 aa 03 30 00 01 00 33

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x34
数据长度 2 0x0004
数据 1 0x06(子命令)
1 传输结果
  • 0x00:成功
  • 0x01:流服务未开启
  • 0x02:获取 ID 失败
2 地图会话 ID(如果传输结果失败,此数据为无效数据)
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

示例55 aa 00 34 00 04 06 00 00 00 3d