上位机通讯协议1
需积分: 0 109 浏览量
更新于2022-08-03
收藏 131KB PDF 举报
### 上位机通讯协议解析
#### 一、概述
本文档详细介绍了特定场景下的上位机通讯协议,涉及的关键信息包括连接配置、消息主题、数据格式以及消息处理逻辑等内容。此协议主要应用于智能车辆(例如树莓派控制的小车)与上位机之间的通信。
#### 二、连接信息
**Broker**: mqtt.gycis.me
**端口**: 1883
**用户名**: smartcar
**密码**: smartcar
#### 三、消息主题
1. **路况信息**: `/smartcar/{mac}/traffic`
2. **起终点信息**: `/smartcar/{mac}/task`
3. **命令信息**: `/smartcar/{mac}/command`
4. **位置信息**: `/smartcar/{mac}/position`
- `{mac}`: 指树莓派WLAN0接口MAC地址的后三位。例如,如果完整的MAC地址是`01:a2:34:56:78:9a`,那么用于构建消息主题的`{mac}`就是`01a2ee`。
#### 四、数据格式
- **基本格式**: 在MQTT协议上传输的payload全部为十六进制数组,即Python中的`bytes`类型数据。
- **具体格式**:
- **路况信息**:
- 每个record包含3个字节:
- 第0个字节: 路段起点编号
- 第1个字节: 路段终点编号
- 第2个字节: 路段路况
- 路况字节`x`与小车行驶在该路段时电机获得的最高电压`y`的关系为`y = 12 - x(V)`,其中`x`取值范围为0~9,0表示完全不拥堵,9表示最拥堵。
- **起终点信息**:
- payload为两个字节:
- 第0字节: 起点编号
- 第1字节: 终点编号
- 此信息只在每轮比赛开始时发送一次,有效期为当前一轮比赛。
- **命令信息**:
- payload为一个字节的十六进制数组:
- `0x00`: 表示比赛开始
- `0x01`: 表示到达终点,比赛正常结束
- `0x02`: 表示小车冲出赛道等异常情况
- **位置信息**:
- payload包含8个字节:
- 第0字节: 当前所处路段的起点编号
- 第1字节: 当前所处路段的终点编号
- 第2、3字节: 小车距离起点的距离
- 第4、5字节: 在地图中X方向坐标
- 第6、7字节: 在地图中Y方向坐标
- 长度单位均为毫米(mm)。
#### 五、示例代码
以下是一个示例Python代码片段,展示了如何从系统中获取MAC地址,并构建消息主题:
```python
import re
# 获取MAC地址后三位
with open('/sys/class/net/wlan0/address') as f:
mac = re.sub(r'.+((:\w\w){3})\n', r'\1', f.read()).replace(':', '')
topic = f"/smartcar/{mac}/traffic"
```
#### 六、发送时间节点
- **比赛开始前**:
- 选手将车模放置在赛道起点处,打开车模上的电机开关。
- 上位机会发送本轮比赛的起终点信息。
- **比赛开始时**:
- 上位机会发送开始命令。
- 控制电机电源打开。
- **比赛过程中**:
- 上位机会循环发送位置信息和路况信息。
- 位置信息会以最快的速度实时发送。
- 路况信息约每5-10秒刷新一次。
- **比赛结束时**:
- 上位机会发送结束命令。
- 强制关闭电机电源。
#### 七、数据解析示例
假设接收到的位置信息payload为`0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08`,则可以解析为:
- 路段起点编号: `0x01`
- 路段终点编号: `0x02`
- 小车距离起点距离: `0x04 * 0xFF + 0x03 = 1027mm`
- 小车X坐标: `0x06 * 0xFF + 0x05 = 15365mm`
- 小车Y坐标: `0x08 * 0xFF + 0x07 = 20487mm`
通过上述解析过程,可以清晰地了解到上位机通讯协议的具体细节及其应用场景,为实际开发提供了明确的指导。
甜甜不加糖
- 粉丝: 38
- 资源: 322
最新资源
- 基于LabVIEW的CRC校验程序
- Python毕业设计-基于Python的天气预测和天气可视化项目(源码+数据库)
- Comsol光子晶体光栅非对称传输
- Mac最新版本的JasperSoft
- 在CodeBlocks搭建SDL2工程构建TFT彩屏模拟器虚拟TFT彩屏幕显示
- Python实现简单的天气数据爬取和可视化(课程设计)
- COMSOL 热流耦合拓扑优化 无量纲-双目标
- comsol光子晶体仿真,拓扑荷,偏振态 三维能带,三维Q,Q因子计算 远场偏振计算
- ECMAScript 6 入门 作者:阮一峰, 的学习源码,供大家学习使用
- 海草云智能修片,一键修图,修人像,修风景,媲美美图、PS,方便快捷
- 含齿根裂纹-轴承内圈,外圈,滚动体的超高自由度斜齿–轴承复合故障特性分析!才用残差法突出故障时域响应,采用包络谱对故障特征频率进行分析,模型难度巨大
- VB 开发access职工工资管理信息系统(系统+开题+论文+任务书
- 电解质锂离子电化学传输模型 基于Nernst-Planck方程构建电解质中锂离子传输机理模型,传递机理包括对流,迁移和扩散作用,可模拟电解质的锂离子浓度,通量和电场结果 可添加正负电极,界面电极动力
- 销售记录数据,包括订单ID、产品种类、销售额、利润、客户区域等
- Comsol三维锂离子叠片电池电化学-热全耦合 采用COMSOL锂离子电池模块耦合传热模块,仿真模拟锂离子电池在充放电过程中产生的欧姆热,极化热,反应热,以及所引起的电芯温度变化
- Comsol石墨烯二维材料 包含太赫兹德鲁得和近红外Kubo两种模型 共7个案例,包含参考文献