380091044 发表于 2025-7-28 14:02:20

这是串口协议还是其他协议?

接手一个烂尾项目,据交接人说,这是使用模块协议,包括串口协议,我看了几遍,没有发现串口相关协议,

## 接入规则
- 数据包格式:十进制,json,用\r\n分隔。
- 服务端心跳检测:180秒没收到客户端新的通信,自动踢出。
- 服务端下发的指令(如:注油、更换耗材)都会带BizId参数,客户端应答时,需要将BizId返回(详细查看协议内容)。
- 由客户端发起的操作,服务端处理后若未得到预期效果(比如登录pwd错了),统一应答格式:{"Type":"err","Msg":"xxxx"}

## 协议内容
## 设备登录
【客户端】发起:
| 字段 |字段类型   | 必填| 说明|
| --- | --- | --- | --- |
|Type|string| 是 | reg |
|Imei|string| 是 | 设备编号 |
|Pwd|string| 是 | 设备密码 |
|Gateway|string| 否 | 网关(传1,如果不是传0或不传) |
|Ver|string| 是 | 版本号 |

- 设备编号、密码需提前录入后台。

【服务端】应答:
| 字段 |字段类型   | 必填| 说明|
| --- | --- | --- | --- |
|Type|string| 是 | reg |
|Time|string| 是 |当前时间戳(1645515775) |

## 设备心跳上报
【客户端】发起:
| 字段 |字段类型   | 必填| 说明|
| --- | --- | --- | --- |
|Type|string| 是 | ping |
|Signal|string| 是 | 4G信号 |
|Status|string| 是 |状态:1-待机,2-故障,3-作业中 |
|BatteryLeft|int| 否 | 剩余电量,如85%就传:85 |
|CapacityLeft|int| 否 | 剩余油量,如100ml就传100 |
|InjectPressure|int| 否 | 注油压强 |

【服务端】应答:
| 字段 |字段类型   | 必填| 说明|
| --- | --- | --- | --- |
|Type|string| 是 | pong |

## 开始注油
【服务端】发起:
| 字段 |字段类型   | 必填| 说明|
| --- | --- | --- | --- |
|Type|string| 是 | start|
|Num|string| 是 | 注油次数 |
|BizId|string| 是 | 指令id |

【客户端】回复:
| 字段 |字段类型   | 必填| 说明|
| --- | --- | --- | --- |
|Type|string| 是 | start |
|BizId|string| 是 | 指令id |

## 重置耗材
【服务端】发起:
| 字段 |字段类型   | 必填| 说明|
| --- | --- | --- | --- |
|Type|string| 是 | reload|
|Capacity|string| 是 | 耗材总油量,如100ml就传100 |
|BizId|string| 是 | 指令id |

【客户端】应答:
| 字段 |字段类型   | 必填| 说明|
| --- | --- | --- | --- |
|Type|string| 是 | reload |
|BizId|string| 是 | 指令id |

## ota更新
【服务端】发起:
| 字段 |字段类型   | 必填| 说明|
| --- | --- | --- | --- |
|Type|string| 是 | upgrade|
|Ip|string| 是 | IP域名 |
|Port|string| 是 | 端口号 |
|Path|string| 是 | 文件位置 |
|BizId|string| 是 | 指令id |

【客户端】应答:
| 字段 |字段类型   | 必填| 说明|
| --- | --- | --- | --- |
|Type|string| 是 | upgrade |
|BizId|string| 是 | 指令id |

## 设备参数下发
【服务端】发起:
| 字段 |字段类型   | 必填| 说明|
| --- | --- | --- | --- |
|Type|string| 是 | setting|
|Time|int| 是 | 注油间隔|
|Oil|int| 是 | 注油量|
|Compensation|int| 是 | 注油补偿次数|
|BizId|string| 是 | 指令id |

【客户端】应答:
| 字段 |字段类型   | 必填| 说明|
| --- | --- | --- | --- |
|Type|string| 是 | setting |
|BizId|string| 是 | 指令id |

## 设备参数上报
【客户端】发起:
| 字段 |字段类型   | 必填| 说明|
| --- | --- | --- | --- |
|Type|string| 是 | up |
|Time|int| 是 | 注油间隔|
|Oil|int| 是 | 注油量|
|Compensation|int| 是 | 注油补偿次数|

【服务端】应答:
| 字段 |字段类型   | 必填| 说明|
| --- | --- | --- | --- |
|Type|string| 是 | up |


## 网关绑定 (当通过APP蓝牙进行配对时,网关会上报下面的子设备id,进行绑定关系)
【客户端】上报:
| 字段 |字段类型   | 必填| 说明|
| --- | --- | --- | --- |
|Type|string| 是 | bind |
|Num|string| 是 | 子设备编号 |

## 网关上报 (操作子设备时,会通过网关进行数据上报,收到数据后,存储到对应的子设备信息中)
【客户端】上报:
| 字段 |字段类型   | 必填| 说明|
| --- | --- | --- | --- |
|Type|string| 是 | report |
|Num|string| 是 | 子设备编号 |
|Status|string| 是 |状态:1-待机,2-故障,3-作业中 |
|BatteryLeft|int| 否 | 剩余电量,如85%就传:85 |
|CapacityLeft|int| 否 | 剩余油量,如100ml就传100 |
|InjectPressure|int| 否 | 注油压强 |
|Sum|int| 否 | 总注油次数 |




## 网关下发(网关向某个子设备下发信息 ,当子设备被唤醒后,网关进行下发)
【客户端】上报:
| 字段 |字段类型   | 必填| 说明|
| --- | --- | --- | --- |
|Type|string| 是 | send |
|Num|string| 是 | 子设备编号 |
|Time|int| 是 | 注油间隔|
|Oil|int| 是 | 注油量|
|Compensation|int| 是 | 注油补偿次数|
|Pressure|int| 是 | 压强阀值

【服务端】应答:
| 字段 |字段类型   | 必填| 说明|
| --- | --- | --- | --- |
|Type|string| 是 | send |
|Num|string| 是 | 子设备编号 |

lora协议:

    {"Type":"bind","Group":xx,"Id":xx}
    "send,id,status,BatteryLeft,CapacityLeft,InjectPressure,sum,time,oil,fullOil,press"
   "report,id"


国芯人工智能 发表于 2025-7-28 14:03:00

根据您提供的信息,该协议并非传统意义上的串口协议,而是一种基于TCP/IP网络通信的自定义应用层协议。以下是对该协议的详细分析及说明:

一、协议类型分析

从数据格式和交互方式来看,该协议属于应用层协议,而非物理层或数据链路层的串口协议(如RS232、RS485等)。其主要特征包括:
数据格式:采用十进制JSON格式,并以\r\n作为分隔符,符合标准的网络通信规范。
通信方式:通过TCP/IP协议栈进行数据传输,支持客户端与服务端之间的双向通信。
功能特性:包含设备登录、心跳上报、指令下发与应答等功能,具备完整的业务逻辑。

因此,该协议更接近于一种基于TCP的自定义应用协议,适用于物联网设备与后台服务器之间的通信。

二、协议结构解析

1. 数据包格式
数据格式:JSON(十进制)
分隔符:\r\n(即回车换行符),用于标识一个完整的数据包边界。
示例:
json
{"Type":"reg","Imei":"123456789012345","Pwd":"123456","Ver":"V1.0"}
\r\n

2. 心跳机制
服务端检测:若180秒内未收到客户端新数据,则自动断开连接。
客户端行为:需定期发送心跳包(如“ping”类型)以维持连接。

3. 指令交互机制
服务端下发指令(如注油、更换耗材)时,均携带BizId参数。
客户端应答时,必须返回相同的BizId,确保指令与应答一一对应。
错误处理:若服务端处理失败(如密码错误),应返回固定格式:
json
{"Type":"err","Msg":"xxxx"}

三、协议内容详解

1. 设备登录(Reg)
客户端请求字段:
| 字段   | 类型   | 必填 | 说明             |
|----------|--------|------|------------------|
| Type   | string | 是   | 固定为 "reg"   |
| Imei   | string | 是   | 设备编号         |
| Pwd      | string | 是   | 设备密码         |
| Gateway| string | 否   | 网关标志(传1/0)|
| Ver      | string | 是   | 版本号         |
服务端应答字段:
| 字段| 类型   | 必填 | 说明             |
|-------|--------|------|------------------|
| Type| string | 是   | 固定为 "reg"   |
| Time| string | 是   | 当前时间戳       |

2. 心跳上报(Ping)
客户端请求字段:
| 字段   | 类型   | 必填 | 说明             |
|----------|--------|------|------------------|
| Type   | string | 是   | 固定为 "ping"    |
| Signal   | string | 否   | 信号强度(可选) |
服务端应答:通常为简单确认响应,无需携带额外数据。

四、关于“模块协议”的理解

交接人提到“使用模块协议”,可能是指该系统采用了某种模块化设计,其中包含了多种通信方式的适配。但根据实际内容分析,该协议并未涉及传统的串口通信(如UART、RS232等),而是基于网络通信的自定义协议。

若您在项目中未发现串口相关代码或配置,可能是由于:
项目初期仅实现了网络通信部分;
串口模块尚未实现或被移除;
协议文档描述不够清晰,导致误解。

五、建议与后续工作方向

1. 明确通信方式:确认当前项目是否支持串口通信,或仅依赖网络协议。
2. 检查代码实现:查找是否存在串口驱动、通信模块或相关接口代码。
3. 完善文档:建议补充协议说明,明确各模块功能及通信方式。
4. 测试验证:通过模拟客户端和服务端,验证协议的完整性和稳定性。

综上所述,该协议属于基于TCP/IP的自定义应用层协议,不具备传统串口协议的特征。如需进一步开发或调试,请结合上述内容进行系统分析与实现。

[本文内容由国芯人工智能辅助生成,仅供参考]

ercircle 发表于 2025-7-28 14:21:00

串口传输方式,传输内容,json加字符串混合报文。

380091044 发表于 2025-7-29 08:42:17

ercircle 发表于 2025-7-28 14:21
串口传输方式,传输内容,json加字符串混合报文。

连基本串口配置都没有,怎么说是串口方式传输呢?

ercircle 发表于 2025-7-29 08:59:31

380091044 发表于 2025-7-29 08:42
连基本串口配置都没有,怎么说是串口方式传输呢?

“据交接人说,这是使用模块协议,包括串口协议”


你这不是1L提了串口么,串口是传输途径,一般波特率115200也不需要特殊配置。
1L后面的内容描述的是软件层协议。

380091044 发表于 2025-7-29 13:39:02

ercircle 发表于 2025-7-29 08:59
“据交接人说,这是使用模块协议,包括串口协议”




单片机与蓝牙、LORA、4G模块,都使用的是串口通信

xiangzichen 发表于 2025-7-30 15:22:56

串口是个物理层面的东西,协议是软件层面的.比如modbus协议,可用串口,可用tcp,还可以用can
页: [1]
查看完整版本: 这是串口协议还是其他协议?