Tcp 通讯
上位机设置 Tcp 通讯参数
命令字: 0x7320
参数列表
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| client | object | 否 | 客户端参数,当 type 为 1 时该节点存在 |
| client.frameHeader | string | 否 | 数据帧头,留空为没有 |
| client.ip | string | 否 | 需要连接的服务器 IP |
| client.numberSystem | int | 否 | 接收到的数据解析进制:0-十进制,1-十六进制 |
| client.port | int | 否 | 通讯端口,范围 (0, 65535] |
| client.separator | string | 否 | 数据分隔符 |
| client.terminator | string | 否 | 数据帧尾,留空为没有 |
| server | object | 否 | 服务器参数,当 type 为 0 时该节点存在 |
| server.frameHeader | string | 否 | 数据帧头,留空为没有 |
| server.ip | string | 否 | 当前用作服务器 IP |
| server.numberSystem | int | 否 | 接收到的数据解析进制:0-十进制,1-十六进制 |
| server.port | int | 否 | 通讯端口,范围 (0, 65535] |
| server.separator | string | 否 | 数据分隔符 |
| server.terminator | string | 否 | 数据帧尾,留空为没有 |
| craft | int | 是 | 工艺号,范围 [1, 9] |
| robot | int | 是 | 当前机器人号,范围 [1, 4] |
| type | int | 是 | TCP 通讯方式:0-服务器,1-客户端,2-配置文件 |
请求示例
json
{
"client": {
"frameHeader": "@",
"ip": "192.168.1.111",
"numberSystem": 0,
"port": 9000,
"separator": ",",
"terminator": "!"
},
"craft": 1,
"robot": 1,
"server": {
"frameHeader": "@",
"ip": "192.168.0.229",
"numberSystem": 0,
"port": 9001,
"separator": ",",
"terminator": "!"
},
"type": 1
}上位机查询 Tcp 通讯参数
命令字: 0x7321
参数列表
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| craft | int | 是 | 工艺号,范围 [1, 9] |
| robot | int | 是 | 机器人号,范围 [1, 4] |
| type | int | 是 | TCP 通讯方式:0-服务器,1-客户端,2-配置文件;为 2 时控制器发送服务器参数 |
请求示例
json
{
"craft": 1,
"robot": 1,
"type": 2
}控制器回复 Tcp 通讯参数
命令字: 0x7322
参数列表
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| client | object | 否 | 客户端参数,当 type 为 1 时该节点存在 |
| client.frameHeader | string | 否 | 数据帧头,留空为没有 |
| client.ip | string | 否 | 需要连接的服务器 IP |
| client.numberSystem | int | 否 | 接收到的数据解析进制:0-十进制,1-十六进制 |
| client.port | int | 否 | 通讯端口,范围 (0, 65535] |
| client.separator | string | 否 | 数据分隔符 |
| client.terminator | string | 否 | 数据帧尾,留空为没有 |
| server | object | 否 | 服务器参数,当 type 为 0 时该节点存在 |
| server.frameHeader | string | 否 | 数据帧头,留空为没有 |
| server.ip | string | 否 | 当前用作服务器 IP |
| server.numberSystem | int | 否 | 接收到的数据解析进制:0-十进制,1-十六进制 |
| server.port | int | 否 | 通讯端口,范围 (0, 65535] |
| server.separator | string | 否 | 数据分隔符 |
| server.terminator | string | 否 | 数据帧尾,留空为没有 |
| craft | int | 是 | 工艺号,范围 [1, 9] |
| robot | int | 是 | 当前机器人号,范围 [1, 4] |
| type | int | 是 | TCP 通讯方式:0-服务器,1-客户端,2-配置文件 |
响应示例
json
{
"client": {
"frameHeader": "@",
"ip": "192.168.1.111",
"numberSystem": 0,
"port": 9000,
"separator": ",",
"terminator": "!"
},
"craft": 1,
"robot": 1,
"server": {
"frameHeader": "@",
"ip": "192.168.0.229",
"numberSystem": 0,
"port": 9001,
"separator": ",",
"terminator": "!"
},
"type": 1
}上位机请求连接 Tcp 通讯
命令字: 0x7323
参数列表
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| craft | int | 是 | 工艺号,范围 [1, 9] |
| robot | int | 是 | 机器人号,范围 [1, 4] |
请求示例
json
{
"craft": 1,
"robot": 1
}上位机请求断开 Tcp 通讯
命令字: 0x7324
参数列表
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| craft | int | 是 | 工艺号,范围 [1, 9] |
| robot | int | 是 | 机器人号,范围 [1, 4] |
请求示例
json
{
"craft": 1,
"robot": 1
}上位机查询 Tcp 通讯连接状态
命令字: 0x7325
参数列表
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| craft | int | 是 | 工艺号,范围 [1, 9] |
| robot | int | 是 | 机器人号,范围 [1, 4] |
请求示例
json
{
"craft": 1,
"robot": 1
}控制器回复 Tcp 通讯连接状态
命令字: 0x7326
参数列表
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| craft | int | 是 | 工艺号,范围 [1, 9] |
| robot | int | 是 | 机器人号,范围 [1, 4] |
| status | int | 是 | 连接状态;0-未连接,1-已连接 |
响应示例
json
{
"craft": 1,
"robot": 1,
"status": 1
}上位机发送 Tcp 数据
命令字: 0x7327
说明: 上位机通过已建立的 TCP 连接向对端发送字符串数据。发送前需确保 TCP 连接已建立。
参数列表
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| craft | int | 是 | 工艺号,范围 [1, 9] |
| robot | int | 是 | 机器人号,范围 [1, 4] |
| data | string | 是 | 要发送的字符串数据 |
请求示例
json
{
"craft": 1,
"robot": 1,
"data": "Hello, this is a test message!"
}控制器主动推送 Tcp 接收数据
命令字: 0x7328
说明: 当 TCP 连接接收到对端发来的数据时,控制器会主动向上位机推送接收到的数据。
参数列表
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| craft | int | 是 | 工艺号,范围 [1, 9] |
| robot | int | 是 | 机器人号,范围 [1, 4] |
| data | string | 是 | 接收到的字符串数据 |
推送示例
json
{
"craft": 1,
"robot": 1,
"data": "Received message from peer"
}TCP 通讯协议说明
数据帧格式
TCP 通讯支持自定义数据帧格式,通过设置 frameHeader(帧头)、separator(分隔符)和 terminator(帧尾)来定义数据帧的边界:
- 帧头(
frameHeader):数据帧的起始标记,留空表示无帧头 - 分隔符(
separator):数据域之间的分隔字符,用于解析多个数据字段 - 帧尾(
terminator):数据帧的结束标记,留空表示无帧尾 - 数据进制(
numberSystem):接收数据时的解析进制,0为十进制,1为十六进制
连接管理流程
- 设置参数:通过
0x7320设置 TCP 通讯参数(服务器/客户端模式、IP、端口等) - 建立连接:通过
0x7323请求建立 TCP 连接 - 数据收发:通过
0x7327发送数据,通过0x7328接收推送数据 - 查询状态:通过
0x7325查询连接状态 - 断开连接:通过
0x7324请求断开 TCP 连接
服务器模式(type=0)
当 type 为 0 时,控制器作为 TCP 服务器,绑定 server.ip 和 server.port,等待客户端连接。
客户端模式(type=1)
当 type 为 1 时,控制器作为 TCP 客户端,主动连接 client.ip 和 client.port 指定的服务器。
配置文件模式(type=2)
当 type 为 2 时,控制器读取配置文件中的 TCP 通讯参数,上位机可通过 0x7321 查询配置。
注意事项
- 通讯双方的数据帧格式(帧头、分隔符、帧尾)必须保持一致,否则可能导致数据解析错误
- 进制设置仅影响接收数据的解析,发送数据始终以原始字符串形式发送
- 同一工艺号同时只能维持一种连接模式(服务器或客户端)