跳转至

项目实战3-设备模拟工具

点击这里,观看项目说明视频讲解

我们通过一个项目来锻炼 Python 做测试开发工具的能力。

可以微信咨询 byhy44 ,参加实战班 或者 购买视频讲解和代码 。

您需要高效学习,找工作? 点击咨询 报名实战班

点击查看学员就业情况

概述

实战要求开发一款 测试工具,可以用来 模拟设备 对接 测试 互联网生活服务系统

要求做成一个 MDI 多功能子窗口的 图形界面程序,方便公司内部使用。 界面如下

image


锻炼本项目实战,需要具备的基础知识点包括:

  • 比较扎实的 Python语言基础

  • 比较了解线程、Socket网络编程

  • 有一定的 Python Qt 图形界面编程能力


下面我们通过分阶段的实战练习,来一步步的开发这个软件。

实战1:充电站模拟设备 界面1

点击这里 观看具体的题目要求


实现一个窗口,里面容纳6个插座控件,水平排列,并且能随着主窗口的缩放而自动调整位置

并且光标悬停在插座控件上时,可以改变背景色

image


视频讲解

参考代码

实战2:充电站模拟设备 界面2

点击这里 观看具体的题目要求

在上次练习的基础上,实现 窗口里面增加一个设备面板,有两个按钮/指示灯,

image

左边的 将来作为 连接/断连 按钮/指示灯

右边的 将来作为 显示设备的二维码 按钮

同样要求,设备面板里面的按钮 能随着主窗口的缩放而自动调整位置


视频讲解

参考代码

实战3:充电站模拟设备 界面3

点击这里 观看具体的题目要求

在上次练习的基础上,

设备面板添加边框,并且添加设备面板和充电口之间的连线

并且能随着主窗口的缩放而自动调整连线位置

image


视频讲解

参考代码

实战4:模拟设备和RC的连接认证

点击这里 观看具体的题目要求


本次练习,需要大家实现 模拟设备 和 RC 的连接和认证,并且实现心跳机制

暂时不用实现和图形界面相关的功能。


点击这里,阅读 Elife系统RF接口 文档, 这是 Elife系统 设备和RC之间的接口文档

然后,点击这里,进入 Elife V1.0 下载页面

根据说明,下载、 激活、运行 Elife-RC


RC的默认监听地址是 本机的 47555 端口

目前RC系统中有如下 设备,可以使用

充电设备
设备编号aaaaaaaa  
共享密钥 hypih74vidyig771hsce6utu4v5tn4rl

充电设备
设备编号bbbbbbbb
共享密钥yfymn3vyoxxiamxagu4btsek6qezfprt

洗车设备
设备编号cccccccc
共享密钥a4pqk4dcxnjvmoj81no9n6rn6hcujs8i


本次练习比较有一些难度,涉及到的基础知识点包括

  • TCP Socket 编程

  • 多线程开发

  • 哈希和加密

实战5:和RC通讯功能 集成到界面

点击这里 观看具体的题目要求


将界面和RC通讯功能结合起来。

做到:

在界面上点击连接指示灯,就和RC建立连接并改变指示灯颜色

再次点击断开连接,并改变指示灯颜色


当RC关闭连接时,比如RC进程被关闭, 工具界面也能侦测到,并且改变指示灯颜色


先不考虑多个设备的问题,先做一个充电站对应一个界面控件

实战6:模拟充电站响应

点击这里 观看具体的题目要求


阅读接口文档,实现模拟充电站设备 能响应

获取设备信息请求:get-dev-info-req

用户服务开始请求:user-start-svc-req

用户服务结束请求:user-stop-svc-req


界面正确显示每个充电口的使用状态,可以这次练习实现,也可以下次练习再实现。


测试时,需要模拟用户手机认证使用设备, 当前系统支持支付宝扫码认证。

充电设备认证网址是这样构成的 http://<RC的IP>/api/3a?f=2_<设备编号>

RC的IP 就是你电脑的IP,

比如 RC的IP是 192.168.5.156 ,设备编号 是 aaaaaaaa

设备二维码Url就是 http://192.168.5.156/api/3a?f=2_aaaaaaaa

你可以用下面两种方法进行用户登录系统,进行测试

方法1 电脑访问

   拷贝Url到 电脑浏览器 进行访问 

   会重定向到支付宝扫码认证界面

   手机打开支付宝扫码确认后 电脑浏览器会模拟手机上登录设备使用界面



方法2 手机访问

   确保手机和运行RC的电脑处于同一个局域网内

   拷贝Url到可以url呈现二维码的网站比如 https://cli.im/url
   产生url对应的二维码

   手机支付宝扫码确认后就会手机登录使用界面

   注意这种方式由于RC是局域网电脑和手机是同一网段
   不知为何苹果手机好像不行
   如果确认不行就使用第一种方式

实战7:界面上的 设备属性功能

点击这里 观看具体的题目要求


界面添加 属性设置表格,如下所示

image


做到

  • 设备模拟控件 和 属性表格 之间的边界可以拖动,调整边界的位置 (使用分裂器)

  • 能以界面设备属设置 进行RC的连接和消息收发

  • 界面正确显示每个充电口的使用状态


先不考虑多个设备的问题,先做一个充电站对应一个界面控件

实战8:支持模拟多个充电站设备

点击这里 观看具体的题目要求

1 - 主界面添加工具栏, 工具栏上有文字按钮 添加、删除、保存。

本次练习先实现其中添加按钮的功能,可以添加多个模拟充电站设备

1 - 实现界面左边的充电站列表,当前和RC连接上的设备绿色显示,否则灰色

2 - 点击充电站列表项,切换到该模拟设备,展示当前的连接状态和充电位 使用状态

3 - 注意,非当前显示的充电站,状态产生的改变也要支持好。

比如:当前显示充电站A,

充电站B连接断开了, 界面左边也能显示连接状态变更为灰色

充电站B某个充电口开始使用、停止使用,能响应更新状态,再切换到显示充电站B时,能正确显示。

实战9:充电站设备属性保存到文件

点击这里 观看具体的题目要求

  • 实现 多个充电站设备属性数据保存到文件。

并且在启动程序时,自动加载文件的功能

  • 实现 修改设备名 功能

  • 实现 删除设备 功能

删除后,显示第一个设备

如果没有设备了,显示空

实战10:使用图标

点击这里 观看具体的题目要求

实现

  • 工具栏使用图标功能

  • 设备列表使用图标

并且用不同的图标显示出设备有没有处于连接状态

如下

image

实战11:二维码功能

点击这里 观看具体的题目要求

实现 点击设备控件控制面板上的二维码按钮,可以显示二维码的功能

显示的二维码对应的URL 是 设备属性中 二维码URL 设置的值的。

并且双击二维码,可以让二维码消失。


请网上搜索 Python 如何显示二维码功能,并且和Qt界面结合起来。

锻炼自行搜索解决问题的能力。

实战12:充电位 结束使用功能

点击这里 观看具体的题目要求


不仅用户可以从手机端点击停止使用服务。

设备端也可也侦测到服务停止事件。

根据接口文档定义 实现 充电站点击处于使用状态的充电位, 发送 dev-stop-svc-req 停止服务消息,并结束使用,使之处于空闲状态


没有要求是:

充电位空闲状态点击无效,因为目前不能直接从设备侧开始服务,这时无法确定客户身份;

充电位使用状态点击停止服务。

实战13:操作树 功能

点击这里 观看具体的题目要求


实现 充电站右边界面的 操作树功能。

实战14:洗车机模拟设备 界面

点击这里 观看具体的题目要求


实现 模拟洗车机功能,本次练习先实现洗车机模拟控件的大体界面。

各种点击处理、消息收发的功能点暂时不用实现

实战15:洗车机模拟设备 功能

点击这里 观看具体的题目要求


实现 所有的模拟洗车机功能:

包括 界面动画显示、设备属性表格、消息收发、右侧操作树

最终的成品是充电站、洗车机 分别作为整个程序的子窗口。

这次练习,我们先实现为单独的程序。


注意:洗车机业务URL后缀是 3 开头(因为洗车机的业务类型是3), 加 设备编号

比如 : http://192.168.5.156/api/3a?f=3_cccccccc

实战16:主界面窗口

点击这里 观看具体的题目要求


实现 主界面窗口 ,把前面实现的模拟充电站、洗车站功能分别作为两个子窗口整合到 主窗口中

主窗口界面要有菜单栏和工具栏


实现 可停靠的日志窗口

您需要高效学习,找工作? 点击咨询 报名实战班

点击查看学员就业情况