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. **数据精度**:返回的距离值已四舍五入为整数
|