连接通道

### 用于连接各检测通道的接口基于WebSocket协议,通道身份以通道ID(暂支持1-8)识别。使用时按以下方式构造WebSocket URL: ## ws://{serverIp}:2442/channel/{id} #### 示例:如需要连接ID为1的通道,假设服务器部署在本地,则URL为: #### ws://127.0.0.1:2442/channel/1 #### 使用以上URL即可连接WebSocket服务端的画面广播服务。 连接上通道后按以下方式解析图像数据: |名称|长度|说明| |-|-|-| |长度|4byte|图像数据长度| |格式|1byte|版本:</br>0:JPEG</br>1:JPEG,带容器ID| |类型|1byte|图像类型:</br>0:正常;</br>1:异常或缺陷| |容器ID|100bytes|容器ID字符串| |数据|实际数据长度|图像数据| 以下是封装图像数据的Python代码示例: ```Python def newImgMsg(img,format,type,container): containerBytes = container.encode('utf-8') lenBytes=len(img).to_bytes(4,byteorder='little') fmtByte=format.to_bytes(1,byteorder='little') typeByte=type.to_bytes(1,byteorder='little') return lenBytes + fmtByte + typeByte + containerBytes + img ``` 以下是解析图像数据的C#代码示例: ```C# private void Socket_MessageReceived(MessageWebSocket sender, MessageWebSocketMessageReceivedEventArgs args){ try { using (var reader = args.GetDataReader()) { var len = reader.ReadUInt32(); var fmt = reader.ReadByte(); var type = reader.ReadByte() var containerBytes = reader.ReadBuffer(CONTAINER_ID_LENGTH).ToArray(); var container = Encoding.UTF8.GetString(containerBytes).Trim('\0'); var data = reader.ReadBuffer(len).ToArray(); // Create a new instance of DdsImage DdsImage image = new DdsImage(deviceId, Module.ModuleId, Channel, container, data, fmt, type); } } catch (Exception ex){ Logger.E("Error occur when receiving image."); Logger.Log(ex); } } ``` ## ### 测试 用于检测画面广播的WebSocket服务还提供了一个用于测试的接口,可用来验证服务是否正在运行。 可以用以下URL连接服务: **ws://localhost:2442/echo** 连接成功后,向服务发发送任意内容时,服务端将原封不动向客户端返回该内容。