# 轮眉测量 TCP/IP 通信协议 ## 概述 - **协议类型**: TCP/IP 文本协议 - **默认端口**: 5000(可在配置文件中修改) - **数据格式**: 纯文本,UTF-8编码 - **通信模式**: 客户端-服务器模式(视觉系统作为服务器) ## 协议格式 ### 1. 触发检测命令(客户端 → 服务器) ``` start,100 ``` **格式说明**: - `start`: 命令关键字 - `100`: 参数(当前未使用,保留用于扩展) **示例**: ``` start,100 ``` ### 2. 检测结果响应(服务器 → 客户端) #### 成功情况(所有相机检测成功) ``` 1,100,200;2,100,200;3,100,200;4,100,200 ``` **格式说明**: - 多个相机结果用分号 `;` 分隔 - 每个相机结果格式:`相机ID,中心点到地面距离,轮眉到地面距离` - `相机ID`: 1-4(对应4个相机) - `中心点到地面距离`: 整数,单位mm - `轮眉到地面距离`: 整数,单位mm **示例**: ``` 1,150,250;2,148,252;3,151,249;4,149,251 ``` 表示: - 相机1:中心距离150mm,轮眉距离250mm - 相机2:中心距离148mm,轮眉距离252mm - 相机3:中心距离151mm,轮眉距离249mm - 相机4:中心距离149mm,轮眉距离251mm #### 失败情况(部分相机检测失败) ``` 1,400;2,100,200;3,100,200;4,100,200 ``` **错误码说明**: - `400`: 扫描/匹配失败 - `401`: 工件为空 **格式说明**: - 失败的相机只返回:`相机ID,错误码` - 成功的相机返回:`相机ID,中心距离,轮眉距离` **示例**: ``` 1,400;2,150,250;3,401;4,149,251 ``` 表示: - 相机1:扫描失败(错误码400) - 相机2:成功,中心距离150mm,轮眉距离250mm - 相机3:工件为空(错误码401) - 相机4:成功,中心距离149mm,轮眉距离251mm ## 通信流程 ``` 客户端 服务器(视觉系统) | | |-------- start,100 ------------------------>| | | | | 触发所有相机顺序检测 | | (相机1 → 相机2 → 相机3 → 相机4) | | |<------- 1,150,250;2,148,252;... -----------| | | ``` **时序说明**: 1. 客户端发送 `start,100` 命令 2. 服务器收到命令后,依次触发所有启用的相机进行检测 3. 所有相机检测完成后,服务器发送汇总结果 4. 客户端接收结果并处理 ## 错误处理 ### 连接错误 - 如果TCP连接断开,服务器会清除当前客户端的请求状态 - 客户端需要重新连接并发送命令 ### 超时处理 - 建议客户端设置接收超时(推荐60秒) - 如果超时未收到响应,可以重新发送命令 ### 数据解析 - 客户端应验证返回数据格式 - 检查相机ID是否在1-4范围内 - 检查是否包含错误码(400/401) ## 配置说明 TCP服务器端口可在配置文件中修改: ```xml TCPServer 0.0.0.0 5000 ``` ## 注意事项 1. **数据单位**:所有距离值单位为毫米(mm) 2. **相机顺序**:相机ID固定为1-4,对应配置文件中的相机顺序 3. **检测时间**:完整检测所有相机通常需要30-50秒,请设置合理的超时时间 4. **并发限制**:服务器同时只处理一个检测请求,多个客户端连接时按先后顺序处理 5. **数据精度**:返回的距离值已四舍五入为整数