#!/usr/bin/env python
# -*- coding: utf-8 -*-
import socket
import sys
from PyQt5 import QtWidgets, QtCore
from PyQt5.QtWidgets import QPushButton
from PyQt5.QtGui import QColor
from matplotlib.backends.backend_qt5agg import (FigureCanvasQTAgg, NavigationToolbar2QT as NavigationToolbar)
from matplotlib.figure import Figure
from matplotlib.font_manager import FontProperties
import matplotlib.pyplot as plt
from matplotlib import rc
import time
import datetime
import re
import _thread
import random
x1 = []
y1 = []
x2 = []
y2 = []
s1 = []
s2 = []
def run(QTextEdit):
global count
global append_Signal
init_current_time = int(time.time() * 1000)
count = 1
while True:
try:
time.sleep(0.1)
# 接收服务器响应
# 获取当前时间并打印
# current_time = datetime.datetime.now()
# print(' Received response:', response)
# 获取当前时间
current_time = int(time.time() * 1000) - init_current_time
inData = random.randint(1, 100)
set_rssi = -60
mean_rssi = random.randint(1, 100)
string = (str(datetime.datetime.now()) + f" 设置阈值:{set_rssi} RSSI原始值:-{inData} 滤波后值:-{mean_rssi}")
print(string)
QTextEdit.append(string)
if "inData" in "inData":
try:
s1.append(int(set_rssi))
except:
s1.append(0)
try:
if int(set_rssi) > -50:
s2.append(int(set_rssi) - 7)
elif int(set_rssi) < -70:
s2.append(int(set_rssi) - 3)
else:
s2.append(int(set_rssi) - 5)
except:
s2.append(0)
try:
x1.append(current_time / 1000.0)
y1.append(0 - int(inData))
y2.append(0 - int(mean_rssi))
except:
x1.append(0)
y1.append(0)
y2.append(0)
except:
pass
if count == 0:
break
class ApplicationWindow(QtWidgets.QMainWindow):
global x1
global y1
global x2
global y2
global s1
global s2
def __init__(self):
super().__init__()
self._main = QtWidgets.QWidget()
self.setCentralWidget(self._main)
# 创建垂直布局
layout = QtWidgets.QVBoxLayout(self._main)
# 创建水平布局
h_layout = QtWidgets.QHBoxLayout(self._main)
dynamic_canvas = FigureCanvasQTAgg(Figure(figsize=(500, 400)))
layout.addWidget(dynamic_canvas)
self.addToolBar(QtCore.Qt.BottomToolBarArea, NavigationToolbar(dynamic_canvas, self))
self.QTextEdit = QtWidgets.QTextEdit('', self._main)
self.QTextEdit.setTextColor(QColor(255, 0, 0))
layout.addWidget(self.QTextEdit)
# 在水平布局中添加按钮
self._button1 = QPushButton('开始', self._main)
self._button2 = QPushButton('暂停', self._main)
self._button3 = QPushButton('结束|清屏', self._main)
self._button1.setStyleSheet("background-color: green;color: white;")
self._button2.setStyleSheet("background-color: blue;color: white;")
self._button3.setStyleSheet("background-color: red;color: white;")
font = self._button1.font()
font.setBold(True) # 设置字体加粗
font.setFamily('Microsoft YaHei') # 设置字体为微软雅黑
font.setPointSize(15)
self._button1.setFont(font)
font = self._button2.font()
font.setBold(True) # 设置字体加粗
font.setFamily('Microsoft YaHei') # 设置字体为微软雅黑
font.setPointSize(15)
self._button2.setFont(font)
font = self._button3.font()
font.setBold(True) # 设置字体加粗
font.setFamily('Microsoft YaHei') # 设置字体为微软雅黑
font.setPointSize(15)
self._button3.setFont(font)
h_layout.addWidget(self._button1)
h_layout.addWidget(self._button2)
h_layout.addWidget(self._button3)
# 在垂直布局中添加水平布局
layout.addLayout(h_layout)
self._button1.clicked.connect(self.button_run)
self._button2.clicked.connect(self.button_suspend)
self._button3.clicked.connect(self.button_finish)
# 设置窗口的主布局
self.setLayout(layout)
self._dynamic_ax = dynamic_canvas.figure.subplots()
self.set_dynamic_ax()
self._timer = dynamic_canvas.new_timer(100, [(self._update_canvas, (), {})])
self._timer.start()
def set_dynamic_ax(self):
# 设置坐标轴标签的字体大小
self._dynamic_ax.xaxis.label.set_size(20)
self._dynamic_ax.yaxis.label.set_size(20)
self._dynamic_ax.tick_params(axis='x', labelsize=20)
self._dynamic_ax.tick_params(axis='y', labelsize=20)
font = FontProperties(fname=r"c:/windows/fonts/simsun.ttc", size=20)
self._dynamic_ax.set_title("手机蓝牙RSSI测试", fontproperties=font)
self._dynamic_ax.set_xlabel('时间/s', fontproperties=font)
self._dynamic_ax.set_ylabel('手机蓝牙RSSI', fontproperties=font)
self._dynamic_ax.legend(labels=('RSSI原始值', '滤波后值', '开锁阈值', '关锁阈值'),prop=font, loc='lower right')
self._dynamic_ax.grid(color='b', ls='--', lw=0.25)
self._dynamic_ax.set_ylim(-100, 0) # set_ylim() 将 y 轴的范围设置为(0到10000)
def _update_canvas(self):
try:
# self._dynamic_ax.clear() # 清除屏幕数据
self._dynamic_ax.plot(x1, y1, 'g', label='RSSI原始值')
self._dynamic_ax.plot(x1, y2, 'r', label='滤波后值')
self._dynamic_ax.plot(x1, s1, 'g:', label='开锁阈值')
self._dynamic_ax.plot(x1, s2, 'k--', label='关锁阈值')
self._dynamic_ax.figure.canvas.draw()
except:
pass
def button_run(self):
self.set_dynamic_ax()
time.sleep(0.1)
x1.clear()
y1.clear()
x2.clear()
y2.clear()
s1.clear()
s2.clear()
self.QTextEdit.clear()
_thread.start_new_thread(run, (self.QTextEdit,))
def button_suspend(self):
global count
count = 0
def button_finish(self):
global count
count = 0
x1.clear()
y1.clear()
x2.clear()
y2.clear()
s1.clear()
s2.clear()
self.QTextEdit.clear()
self._dynamic_ax.clear()
if __name__ == "__main__":
qapp = QtWidgets.QApplication(sys.argv)
app = ApplicationWindow()
app.setWindowTitle("蓝牙信号滤波测试工具")
app.resize(900, 650)
app.show()
qapp.exec_()
# pyinstaller -F -w 蓝牙信号滤波测试工具.py
05-13
2640
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交