APP下载

通过Python 实现WiFi 测试数据分析

2020-05-27周春宇

通信电源技术 2020年6期
关键词:测试数据控件直方图

周春宇

(英华达(上海)科技有限公司,上海 201114)

0 引言

如今工程师、分析师在数据分析上面临众多挑战,他们希望用最小的编程代价进行数据分析,Python 是满足他们需要的一个利器。Python 是一种流行的通用编程语言,使用Python 可以写出简洁、易读、缺陷少的代码[1]。使用Python 对XML 格式的测试数据进行分析前,须先对XML 的数据结构进行分析,即分析XML中有哪些数据是需要获取的。因为WiFi 工作在两个频率段2.4 GHz 和5 GHz,每个频段有许多的信道,需要对获取的数据按照信道来进行分类,对同信道的数据进行分析才有意义。此外,使用Qt Designer 制作一个GUI 程序界面,批量导入和解析测试数据,然后使用模块matplotlib 对数据进行图型分析。

1 解析XML 数据

1.1 分析XML 格式

通过分析WiFi 的XML 数据格式(见图1),发现每个TestStep 节点包含频率Freq,TestStep 下面的节点Meas 包含测项名称POWER_AVG_DBM 和测试值Val,我们需要将测试值按照测试项目名称和频率获取放入列表中。

1.2 获取XML 数据

使用xml.dom.minidom 模块来读取XML,获取需要的节点数据,相关代码如下。

图1 WiFi 的XML 数据格式

到此已经获取POWER_AVG_DBM测试值的列表,其他的测试值依此方式获取,将解析XML 数据的代码存储成模块Traversal_xml_path,以便后续调用。

2 测试数据分类

下面对POWER_AVG_DBM 测试值按照信道进行分类,需要对每个频点的测试项目撰写一个获取数据的函数,以获取信道CH1 的POWER_AVG_DBM 为例,代码如下。

函数最后返回一个名称为tx_2412_0_power_list 的列表,信道CH1 测项POWER_AVG_DBM 的测试数据就存储在这个列表中,其他的测试值依此方式分类,将实现测试数据分类的代码存储成模块Test_Value,以便后续调用。

3 GUI 界面

本文使用Qt Designer来创建GUI界面。Qt Designer 可以用来创建主窗口、自定义窗口部件等用户界面。这里创建一个Widget 窗口,然后在窗口上创建控 件Label、LineEdit、PushButton、ComboBox。Label是标签,用来显示文字,搭配其他控件使用,显示控件的名称;LineEdit 是单行文本编辑框,用于显示已选择测试数据文件夹的路径;PushButton 是按钮,点击后实现被调用函数的功能;ComboBox 是下拉列表框,列表中编辑多个选项,使用时根据需求选择列表中的某个选项[3]。最后创建成功的GUI 界面如图2 所示。

图2 创建成功的GUI 界面

窗口创建好后保存会生成一个.ui 的文件,使用pyuic5 可以把它转化为python 的纯代码形式。新建一个bat 批处理文件,文件内编辑如下指令,运行后就会生成一个.py 的文件。

接下来对新生成的.py 文件,编写控件需要实现的功能函数。

3.1 按钮Select Path 功能

点击这个按钮后,会出现选择存放数据的文件夹窗口,同时会把已选择的文件夹的路径显示在文本编辑框内。

3.2 按钮Load Data 功能

解析所选文件夹内的测试数据。

3.3 按钮Calculate WiFi Chart 功能

将解析的XML 测试数据生成图形,可以使用matplotlib 模块来实现,这里以直方图为例来进行分析。使用matplotlib 模块前需先导入模块,代码是import matplotlib.pyplot as plt[2]。下面代码中“chal”“chan”“test”分别为下拉列表框“Channel”“Chain”“TestItem”选择的值。

3.4 信号槽

利用信号槽机制,将各个控件与事件函数连接起来。下面代码是与按钮相连接的函数名,按钮被触发时函数就被执行。

到此,整个GUI 界面及相应的功能都已经被实现。

4 生成直方图

直接运行这个GUI 程序,选取数据路径并进行数据解析,选取“Channel”“Chain”“TestItem”的值,点击按钮Calculate WiFi Chart,就会生成直方图,如图3 所示,到这里基本上实现了通过python 解析XML 测试数据进行图形分析的要求。这里只是以直方图为例进行说明,当然也可以使用matplotlib 模块进行其他的图形分析,如折线图、散点图等。

图3 直方图

5 结论

由于Python 结构简单,代码定义清晰,易维护,且Python 拥有丰富的库,特别是matplotlib、pandas 等进行图形分析和数据分析的库,因此利用Python 对测试数据进行分析起到方便高效的作用。本文阐述了如何通过Python 对智能音响WiFi 的XML 测试数据,进行解析、分类、图形分析等,所提及的方法对其他电子产品WiFi 测试数据的分析是很好的借鉴。

猜你喜欢

测试数据控件直方图
符合差分隐私的流数据统计直方图发布
基于.net的用户定义验证控件的应用分析
基于FPGA的直方图均衡图像增强算法设计及实现
用直方图控制画面影调
测试数据管理系统设计与实现
关于.net控件数组的探讨
中考频数分布直方图题型展示
基于自适应粒子群优化算法的测试数据扩增方法
空间co-location挖掘模式在学生体能测试数据中的应用
影响《标准》测试数据真实性的因素及破解策略