132 lines
3.6 KiB
Markdown
132 lines
3.6 KiB
Markdown
|
|
# 轮眉测量 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
|
|||
|
|
<ServerList>
|
|||
|
|
<Server>
|
|||
|
|
<Name>TCPServer</Name>
|
|||
|
|
<IP>0.0.0.0</IP>
|
|||
|
|
<Port>5000</Port>
|
|||
|
|
</Server>
|
|||
|
|
</ServerList>
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **数据单位**:所有距离值单位为毫米(mm)
|
|||
|
|
2. **相机顺序**:相机ID固定为1-4,对应配置文件中的相机顺序
|
|||
|
|
3. **检测时间**:完整检测所有相机通常需要30-50秒,请设置合理的超时时间
|
|||
|
|
4. **并发限制**:服务器同时只处理一个检测请求,多个客户端连接时按先后顺序处理
|
|||
|
|
5. **数据精度**:返回的距离值已四舍五入为整数
|