找回密码
 立即注册
查看: 77|回复: 6

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

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:569
  • 最近打卡:2025-07-31 07:48:43
已绑定手机

161

主题

595

回帖

1079

积分

金牌会员

积分
1079
发表于 3 天前 | 显示全部楼层 |阅读模式
接手一个烂尾项目,据交接人说,这是使用模块协议,包括串口协议,我看了几遍,没有发现串口相关协议,

## 接入规则
- 数据包格式:十进制,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"


回复

使用道具 举报 送花

3

主题

247

回帖

-795

积分

等待验证会员

积分
-795
发表于 3 天前 | 显示全部楼层
根据您提供的信息,该协议并非传统意义上的串口协议,而是一种基于TCP/IP网络通信的自定义应用层协议。以下是对该协议的详细分析及说明:

一、协议类型分析

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

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

二、协议结构解析

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

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

3. 指令交互机制
服务端下发指令(如注油、更换耗材)时,均携带BizId参数。
客户端应答时,必须返回相同的BizId,确保指令与应答一一对应。
错误处理:若服务端处理失败(如密码错误),应返回固定格式:
  1. json
  2.   {"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的自定义应用层协议,不具备传统串口协议的特征。如需进一步开发或调试,请结合上述内容进行系统分析与实现。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:253
  • 最近打卡:2025-07-31 08:55:10
已绑定手机

78

主题

2294

回帖

5226

积分

荣誉版主

无情的代码机器

积分
5226
发表于 3 天前 | 显示全部楼层
串口传输方式,传输内容,json加字符串混合报文。
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:569
  • 最近打卡:2025-07-31 07:48:43
已绑定手机

161

主题

595

回帖

1079

积分

金牌会员

积分
1079
发表于 前天 08:42 | 显示全部楼层
erci*** 发表于 2025-7-28 14:21
串口传输方式,传输内容,json加字符串混合报文。

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

点评

“据交接人说,这是使用模块协议,包括串口协议” 你这不是1L提了串口么,串口是传输途径,一般波特率115200也不需要特殊配置。 1L后面的内容描述的是软件层协议。  详情 回复 发表于 前天 08:59
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:253
  • 最近打卡:2025-07-31 08:55:10
已绑定手机

78

主题

2294

回帖

5226

积分

荣誉版主

无情的代码机器

积分
5226
发表于 前天 08:59 | 显示全部楼层
38009*** 发表于 2025-7-29 08:42
连基本串口配置都没有,怎么说是串口方式传输呢?

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


你这不是1L提了串口么,串口是传输途径,一般波特率115200也不需要特殊配置。
1L后面的内容描述的是软件层协议。
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:569
  • 最近打卡:2025-07-31 07:48:43
已绑定手机

161

主题

595

回帖

1079

积分

金牌会员

积分
1079
发表于 前天 13:39 | 显示全部楼层
erci*** 发表于 2025-7-29 08:59
“据交接人说,这是使用模块协议,包括串口协议”

单片机与蓝牙、LORA、4G模块,都使用的是串口通信
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:357
  • 最近打卡:2025-07-31 16:33:11
已绑定手机

14

主题

604

回帖

719

积分

荣誉版主

积分
719
发表于 昨天 15:22 | 显示全部楼层
串口是个物理层面的东西,协议是软件层面的.比如modbus协议,可用串口,可用tcp,还可以用can
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-7-31 20:16 , Processed in 0.118534 second(s), 80 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表