通讯协议

当使用串口设备与主控进行数据交互时,需要采用一定的交互协议才可以完成数据或指令的传输。Sentry系列视觉传感器支持 标准协议指令简单协议指令

Sentry系列视觉传感器采用相同的通讯协议格式,但不同的产品所支持的协议指令会略有差别,下文将以 Sentry2视觉传感器 为例进行介绍,其他详细信息或技术需求可以联系我们:

技术:support@aitosee.com

销售:sales@aitosee.com

标准协议指令

标准协议指令具有规范的数据格式,结合寄存器表可以实现完整的数据交互功能和较高的通信效率。

指令格式

START | LEN | ADDR | CMD | DATA | CHKSUM | END

符号

含义

长度

描述

START

帧头

1Byte

表示一个数据包的开始,始终为0xFF

LEN

长度

1Byte

数据包的总长度(字节),包含帧头和帧尾

ADDR

地址

1Byte

设备物理地址

CMD

指令

1Byte

指令代码,详见指令列表

DATA

数据

(LEN-6)Byte

数据内容,详见指令列表

CHKSUM

校验

1Byte

从帧头(含)到DATA数据的所有字节累加求和,进位丢弃

END

帧尾

1Byte

表示一个数据包的结束,始终为0xED

数据交互方式

串口模式下采用应答机制,传感器的数据交互完全由主控设备控制,传感器不会主动向主控发送数据。数据交互时,由主控设备先发送指令帧,然后传感器将会返回一个或多个应答帧,完成一次数据交互。

指令介绍

指令代码

名称

描述

0x01

SetRegister

设置寄存器

0x02

GetRegister

读取寄存器

0x20

SetParam

设置算法参数

0x21

SetParamGroup

按组设置算法参数

0x22

GetResult

读取算法结果

0x23

GetResultGroup

按组读取算法结果

0x24

SetResult

设置算法结果

0x25

SetResultGroup

按组设置算法结果

  • Param Group 参数组

    一组参数可以表示一个作用区域,每组参数最多可包含5个参数值,不同的算法对这5个参数值的含义可能是不同的。

    仅有部分算法具有参数设置功能,有的算法还可以设置多组参数,每组参数由Param ID进行标记。

    比如颜色识别算法,要设置25个检测区域,则需要写入25组参数

  • Param Value 参数值

    每组参数可以由5个参数值来描述,不同算法的参数值的含义并不相同:

    算法

    Param Value1

    Param Value2

    Param Value3

    Param Value4

    Param Value5

    颜色识别

    检测区域中心点x坐标

    检测区域中心点y坐标

    检测区域宽度w

    检测区域高度h

    色块检测

    最小色块宽度w

    最小色块高度h

    待检测的颜色分类标签

    深度学习

    0=删除该ID数据,100=训练该ID数据

    人脸识别

    0=删除该ID数据,100=训练该ID数据

  • Result Group 结果组

    一组数据表示一个检测结果,每组结果包含5个数据,但不同的算法对这5个数据的含义可能是不同的,部分算法可以返回多个结果,每组检测结果由ResultID进行标记。

  • Result Data 结果数据

    算法

    Result Data1

    Result Data1

    Result Data3

    Result Data4

    Result Data5

    备注

    颜色识别

    R红色通道值

    G绿色通道值

    B蓝色通道值

    颜色分类标签

    色块检测

    中心x坐标

    中心y坐标

    宽度w

    高度h

    颜色分类标签

    线条检测

    终点x坐标

    终点y坐标

    起点x坐标

    起点y坐标

    线段角度

    标签识别

    中心x坐标

    中心y坐标

    宽度w

    高度h

    分类标签

    深度学习

    固定中心x坐标

    固定中心y坐标

    固定宽度w

    固定高度h

    分类标签

    分类标签需要先进行训练

    卡片识别

    中心x坐标

    中心y坐标

    宽度w

    高度h

    分类标签

    人脸识别

    中心x坐标

    中心y坐标

    宽度w

    高度h

    分类标签

    分类标签需要先进行训练

    20类物体识别

    中心x坐标

    中心y坐标

    宽度w

    高度h

    分类标签

    二维码识别

    中心x坐标

    中心y坐标

    宽度w

    高度h

    字符数量

    后续结果组为字符数据

    自定义算法

    自定义含义

    自定义含义

    自定义含义

    自定义含义

    自定义含义

    移动物体检测

    中心x坐标

    中心y坐标

    宽度w

    高度h

  • 0x01-SetRegister

    描述:设置寄存器,每次只可设置一个寄存器(一个字节)

    指令帧CMD:0x01

    Byte1

    Byte2

    Byte3

    Byte4

    Byte5

    Byte6

    Byte7

    寄存器地址

    待写入数据

    应答帧CMD:0xE0

    Byte1

    Byte2

    Byte3

    Byte4

    Byte5

    Byte6

    Byte7

    0x01

    已写入数据

  • 0x02-GetRegister

    描述:读取寄存器,每次只可读取一个寄存器(一个字节)

    指令帧CMD:0x02

    Byte1

    Byte2

    Byte3

    Byte4

    Byte5

    Byte6

    Byte7

    寄存器地址

    应答帧CMD:0xE0

    Byte1

    Byte2

    Byte3

    Byte4

    Byte5

    Byte6

    Byte7

    0x02

    读取的数据

  • 0x20-SetParam

    描述:设置指定算法同一类型的参数值,可以同时设置多个数据,比如单独设置颜色识别算法10个检测区域的x坐标

    指令帧-0x20

    Byte1

    Byte2

    Byte3

    Byte4

    Byte5

    Byte6

    Bytes

    算法ID

    参数类型

    起始ParamID1

    结束ParamIDn

    参数1

    参数2

    参数n

    应答帧CMD:0xE0

    Byte1

    Byte2

    Byte3

    Byte4

    Byte5

    Byte6

    Byte7

    0x20

    算法ID

  • 0x21-SetParamGroup

    描述:设置指定算法的参数组数据,每个参数组包含5个数据项,比如同时设置颜色识别算法的5个检测区域x,y,w,h信息

    指令帧CMD:0x21

    Byte1

    Byte2

    Byte3

    Byte4

    Bytes

    Bytes

    Bytes

    算法ID

    起始ParamID1

    结束ParamIDn

    参数组1

    参数组2

    参数组n

    应答帧CMD:0xE0

    Byte1

    Byte2

    Byte3

    Byte4

    Byte5

    Byte6

    Byte7

    0x21

    算法ID

  • 0x22-GetResult

    描述:获取指定算法算法的某一类型的检测结果,比如只获取颜色识别的标签数据,而不关心xy坐标

    指令帧CMD:0x22

    Byte1

    Byte2

    Byte3

    Byte4

    Byte5

    Byte6

    Byte7

    算法ID

    数据类型

    起始ResultID

    结束ResultID

    因为每个数据帧的最大长度只有255个字节,当检测结果帧数据长度超过此值时,将会产生多个数据帧,当CMD为0xEC时表示中间帧,为0xE0时表示结束帧

    应答帧CMD:0xEC或0xE0

    Byte1

    Byte2

    Byte3

    Byte4

    Byte5

    Byte6

    Bytes

    0x22

    图像帧号

    算法ID

    数据类型

    起始ResultID1

    结束ResultIDn

    结果数据

  • 0x23-GetResultGroup

    描述:获取指定算法每组的检测结果,一组检测结果包含5个数据项,比如同时获取颜色识别算法的5个区域的RGB值和分类标签值

    指令帧CMD:0x23

    Byte1

    Byte2

    Byte3

    Byte4

    Byte5

    Byte6

    Byte7

    算法ID

    起始ResultID

    结束ResultID

    因为每个数据帧的最大长度只有255个字节,当检测结果帧数据长度超过此值时,将会产生多个数据帧,当CMD为0xEC时表示中间帧,为0xE0时表示结束帧

    应答帧CMD:0xEC或0xE0

    Byte1

    Byte2

    Byte3

    Byte4

    Byte5

    Byte6

    Bytes

    0x23

    图像帧号

    算法ID

    起始ResultID1

    结束ResultIDn

    结果组1

    结果组n

  • 0x24-SetResult

    描述:设置指定算法算法的某一类型的检测结果,用于将WiFi芯片中自定义算法的结果写入K210寄存器中,以便主控读取

    指令帧CMD:0x24

    Byte1

    Byte2

    Byte3

    Byte4

    Byte5

    Byte6

    Byte7

    算法ID

    数据类型

    起始ResultID

    结束ResultID

    应答帧CMD:0xE0

    Byte1

    Byte2

    Byte3

    Byte4

    Byte5

    Byte6

    Byte7

    0x24

    算法ID

  • 0x25-SetResultGroup

    描述:设置指定算法每组的检测结果,一组检测结果包含5个数据项,用于将WiFi芯片中自定义算法的结果写入K210寄存器中,以便主控读取

    指令帧CMD:0x25

    Byte1

    Byte2

    Byte3

    Byte4

    Byte5

    Bytes

    Bytes

    算法ID

    起始ResultID

    结束ResultID

    应答帧CMD:0xE0

    Byte1

    Byte2

    Byte3

    Byte4

    Byte5

    Byte6

    Bytes

    0x25

    算法ID

简单协议指令

该指令没有复杂的协议规范,只需要通过串口发送简单的字母和数字就可以开启算法和获取数据,无需开发驱动库,适用于任何有UART功能的主控平台,但也只适合简单的应用场景

指令格式

发送

CMD | DATA | END

符号

含义

长度

描述

CMD

指令字符

1

指令字符,详见指令列表

DATA

参数

NA

指令参数

END

结束符

1

非必须,也可以为换行符,回车符,或者空格

返回

DATA | END

符号

含义

长度

描述

DATA

结果

NA

返回结果

END

结束符

1

均以换行符结尾

指令列表

操作

指令字符

参数

返回

举例

开启算法

O 或 o

算法编号

1:成功, 0:失败

O7:开启人脸识别

关闭算法

C 或 c

算法编号

1:成功, 0:失败

C7:关闭人脸识别

查询检测结果数量

N 或 n

算法编号

检测到物体的数量,0为未检测到

N7:返回人脸数量

获取水平x坐标

X 或 x

检测结果的编号,可省略,默认为1

物体的水平坐标值

X1:返回第1个人脸x坐标

获取垂直y坐标

Y 或 y

检测结果的编号,可省略,默认为1

物体的垂直坐标值

Y3:返回第3个人脸y坐标

获取物体w宽度

W 或 w

检测结果的编号,可省略,默认为1

物体的宽度值

W:返回第1个人脸宽度

获取物体h高度

H 或 h

检测结果的编号,可省略,默认为1

物体的高度值

H:返回第1个人脸高度

获取物体分类标签

L 或 l

检测结果的编号,可省略,默认为1

物体的分类标签

L2:返回第2个人脸的分类标签

获取所有结果

A 或 a

检测结果的编号,可省略,默认为1

指令A返回结果说明

A2:返回第2组结果的所有数值

获取图片

I 或 i

图片数据帧

I:返回一张图片

设置参数

S 或 s

参数ID+X参数+Y参数+W参数+H参数+L参数

1:成功, 0:失败

S2+100+50+10+10+0,假设开启了颜色算法,设置第2组参数,x=100,y=50,w=10,h=10,l=0

指令A返回结果说明

返回格式为:A+001+002+003+004+005

其中001为X坐标,002为Y坐标,003为W宽度,004为H高度,005为L标签

为方便解析,每个结果采用3位固定的数字组成,不足部分用0填充

注意,对于线段检测和二维码等具有特殊返回结果的算法,返回结果的含义见各算法的介绍

指令S设置参数说明

不是所有算法都可以设置参数,设置参数前需要先开启算法

指令S后的第一个参数为Param-ID,即你所要设置第几组参数,最多支持25个参数,不应超过此值

设置参数时需要同时写入XYWHL五个参数,如果输入参数不足,则会默认为0

数字间的连接符号“+”不可省略

图像传输协议

Sentry2支持图像传输功能,可以将图片发送给WiFi芯片,UART端口或USB端口,支持RGB565,JPEG,JPEG-Base64格式。

指令格式

START | TYPE | WIDTH | HEIGHT | LEN | DATA

符号

含义

长度

描述

START

帧头

1Byte

表示一个数据包的开始,始终为0xF0

TYPE

图像格式

1Byte

2=RGB565,4=JPEG,5=JPEG-Base64

WIDTH

图像宽度

2Bytes

图像的宽度

HEIGHT

图像高度

2Bytes

图像的高度

LEN

数据长度

4Bytes

图像数据长度

DATA

图像数据

LEN

图像数据

RGB565:图像原始采样数据,采用2个字节表示一个像素点,数据较大,一副320×240的图片需要153600字节

JPEG:一种常见的图像压缩格式,可以将RGB565图片压缩至10~30KB,压缩率的大小取决于图片的颜色丰富度,颜色较少则压缩率高

JPEG-Base64:是将JPEG图片按照Base64规则进行编码,将十六进制HEX数据转为文本字符,便于网络传输和解析,通常用于云端图像识别