练习1-协议测试工具

简介

点击这里,结合视频讲解,阅读本文。

某公司开发的智能风泵设备 可以进行 远程网络控制。

该设备的远程控制协议 称之为 : DR接口协议

智能设备和 远程控制软件 之间 通过 DR接口协议 的消息进行 控制信息的交互。

该协议基于 TCP 长连接 ,设备是服务端,控制软件是客户端。


为了减低锻炼的难度,我简化了该接口,目前只有2种控制消息: 设备读取 和 设备设置 。

控制软件 通过 设备读取消息 获取 设备的 编码 和 状态, 通过 设备设置消息 设置 设备的 编码 和 状态 。

具体消息格式在后面讲解。


本次练习要求大家开发一款如下界面的客户端控制软件,实现该协议的客户端,方便进行功能测试。具体要求见视频讲解。

从而更好的掌握 Python开发图形界面工具 和 Socket网络通讯,以便将来在工作中开发各种协议测试软件。

锻炼前提

本次锻炼的前提是:要求大家比较熟悉

下载风泵模拟器

本次练习需要对接 智能风泵设备,这里我们用模拟软件。

通过网盘分享的文件:智能风泵模拟器

点击这里,打开云盘,下载 智能风泵模拟器。

解压压缩包后,进入解压后的目录,点击 run.exe 运行。

该模拟软件默认运行在 30088 TCP 服务端口,你们开发客户端软件需要 TCP Socket连接这个端口。

DR 消息格式

DR 接口消息格式如下图所示

包含的数据只有 整数 和 字符串 2种类型。

消息头和消息体中 所有 整数 数据 的字节 表示都是 高位在前 (big endian) 。

详细说明看视频讲解。

其中,

消息头

消息头由8个字节组成,都是 整数 :

前2个字节 表示消息的长度,该长度包括:消息头的8个字节 和 消息体的长度。

第3到4个字节 表示消息的类型

后4个字节 表示消息ID,就是消息的编号。 同一个连接,一端发送的消息 ID必须 唯一 。 响应消息 和 请求消息的 ID 必须 相同 。

消息体

消息体由一个个 字段 组成.

每个字段都是 TLV(Type,Length,Value) 格式 :类型,长度,值

类型 一个整数字节, 表示该字段的含义

长度 一个整数字节, 表示该字段的长度。包括类型/长度 本身的2个字节

值 为变长字节, 表示该字段具体信息,可能是 整数 或者字符串。

DR 消息类型

设备读取 请求

该消息的类型码是: 0x01F0

字段字段码长度说明必要性
返回信息0xC13字节整数类型
0 - 所有信息
1 - 设备编号
2 - 设备状态
必填

设备读取 响应

该消息的类型码是: 0x01F1

字段字段码长度说明必要性
设备编号0x01变长,不超过10个字节字符串类型
风泵在内网的编号
可选
设备状态0x023字节整数类型
0 - sleep
1 - run1
2 - run2
3 - run3
可选

设备设置 请求

该消息的类型码是: 0x02F0

字段字段码长度说明必要性
设备编号0x01变长,不超过10个字节字符串类型
风泵在内网的编号
可选
设备状态0x023字节整数类型
0 - sleep
1 - run1
2 - run2
3 - run3
可选

设备设置 响应

该消息的类型码是: 0x02F1

字段字段码长度说明必要性
结果码0xA03字节整数类型
0 - 成功
1 - 失败
必填
结果描述0xA1变长字符串类型
失败时,描述具体原因
可选

参考代码

该工具实现的 第一部分参考代码,可以在下面的网盘下载

链接: https://pan.baidu.com/s/1cXaPv3wO57LnA0bsCUCmnA?pwd=1111

↑