Toybrick

中文 / EN
Toybrick Wiki教程 TB-16A-AI 检测框交互协议
检测框交互协议

检测框信息通讯通过web socket实现,RK1808作为websocket服务器,绑定端口9000IPC作为客户端向服务器发起请求。建立连接后,RK1808主动发送检测框数据帧给IPC

IPC usb0 固定IP地址为10.0.99.200RK1808 usb0 固定IP地址为10.0.99.201 ;请确保RK1808 usb0 IP地址正常,否则会影响到RK1808IPC的数据交互。

相关代码位于WebSocketServer.c,大部分代码属于建立Websocket server的基本操作,用户可参考web socket相关教程,熟悉建立,握手,保持连接,收发消息等内容。下文将介绍自定义的交互协议,包含两部分内容,一是握手协议,二是检测框数据帧的封装。

 

握手协议

IPC

GET /api/v1/smart_ext/osd HTTP/1.1

Upgrade: websocket

Connection: Upgrade

Host: 10.0.99.201

Sec-WebSocket-Key: NDAyMjAzRTY0MDIyMDNlNgA=

Sec-WebSocket-Version: 13

 

RK1808

HTTP/1.1 101 Switching Protocols

Upgrade: websocket

Connection: Upgrade

Content-Length: 0

Sec-WebSocket-Accept: vHQi0tAu4Jmqzq023rOT8po+yYY=

 

/api/v1/smart_ext/osd 为特殊关键字,表示IPC想要获取叠加框信息。在握手

时需要进行sha1编码和base64编码, 示例代码中包含OpenSSL的静态库libcrypto.alibssl.a

 

相关函数

int WS_shakehands(int cli_fd) 处理握手请求

 

检测框叠加

 

物体检测得到的检测框信息会通过send_box_info发送给Websocket_Server线程该线程再通过WS_MsgHandle将检测框信息封装成特定格式的数据帧发送给IPC

{

      “object”{

              "object_total": 2,        //总个数

              "objects": [

                   {

                       "object_name": "aaaaa",  //名称,GB2312编码格式

                        "color":"EEFF00",//叠加颜色,RGB分量值

                        "object_x": "126", //x坐标

                        "object_y": "100",//y坐标

                        "object_width":"32",//宽度

                        "object_height":"32" //高度

                   },

                   {

                       "object_name": "bbbbb",  //名称,GB2312编码格式

                        "color":"EEFF00",//叠加颜色,RGB分量值

                        "object_x": "126", //x坐标

                        "object_y": "100",//y坐标

                        "object_width":"32",//宽度

                        "object_height":"32" //高度

                    },

              ]

      },

}


产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


返回顶部