2207-功耗监测软件开发笔记

Version 0.0

功耗监测软件

2022-07-05 开发测试 为了更好的对软件的功耗和行为进行监测

设计阶段 1

首先,启发我完善该项目的是一位师弟: https://github.com/xwy-bit

原始项目: https://github.com/xwy-bit/IPMI

那么整理需求,绘制设计草稿:

需求有如下: 1. 如果绘制程序的设置进行了变更,我们需要 Reset 2. 可以读取 IPMI config,如果将账户和密码写在程序中不方便 3. 可以读取峰值功耗,从而检测是否超过了 3kW 4. 可以设置时间间隔和检测时间长度 5. UI 美观

Development Step 1

首先我们选择框架和组件。框架上选择 PyQt6 作为顶层框架,之后开始设计布局:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
class Dashboard(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Dashboard")
self.setGeometry(400, 400, 850, 500)
...
self.initUI()
self.show()

def initUI(self):
'''
1. define basic items
2. set item
3. set layout
4. connect items
'''
...

def load_machine(self):
'''
load machine ipmi config
'''

def update_interval(self, text):
'''
update interval
'''

def update_maxtime(self, text):
'''
update maxtime
'''

def reset_system(self):
'''
reset system
Clear Plot
'''

def reset_machine(self):
'''
reset_machine
Reset machine information and status
'''

def clear_layout(self):
'''
update layout
'''

def timer_start(self):
'''
timer start trigger
'''

def plot_power(self):
'''
update power information and plot
'''

设计框架完成之后开始设计链接逻辑

按钮逻辑

Start/Reset 按钮: - 重置 Plot - 读取数值 - 不重置机器配置文件 - 重置 timer

Load 按钮: - 重置 Plot - 重置机器配置文件 - 重置布局 - 重置 timer

CheckBox 逻辑

勾选了新的机器之后需要停止 timer

输入文本逻辑

  • 重置 Plot
  • 读取数值
  • 不重置机器配置文件
  • 重置 timer

分别 connected 对应函数即可。

效果如下:

之后的计划

Reference

  • Qt6 教程 https://maicss.gitbook.io/pyqt-chinese-tutoral/pyqt6/layout
  • qt-theme https://github.com/UN-GCPDS/qt-material
  • 更新 layout 方法 https://stackoverflow.com/questions/7882749/how-to-update-a-qlayout-and-get-the-new-dimensions-before-returning
  • qt 字体设置 https://stackoverflow.com/questions/1464591/how-to-create-a-bold-red-text-label-in-qt

2207-功耗监测软件开发笔记
http://blog.chivier.site/2022-07-06/2022/2207-功耗监测软件开发笔记/
Author
Chivier Humber
Posted on
July 6, 2022
Licensed under