优化逻辑
parent
3988ab1b17
commit
99a5b1bcd3
Binary file not shown.
Binary file not shown.
|
@ -1,5 +1,5 @@
|
|||
import sys
|
||||
from PyQt5.QtWidgets import QApplication, QMainWindow
|
||||
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox
|
||||
from main_ui import *
|
||||
from wifi_udp import *
|
||||
import threading #引入并行
|
||||
|
@ -11,47 +11,76 @@ class MyWindow(QMainWindow, Ui_MainWindow):
|
|||
def __init__(self, parent=None):
|
||||
super(MyWindow, self).__init__(parent)
|
||||
self.setupUi(self)
|
||||
self.v_list=[]
|
||||
self.v_list.append(np.zeros(300))
|
||||
self.timeArray = np.arange(-300, 0, 1)
|
||||
# 变量初始化
|
||||
self.variable_init()
|
||||
# 设置实例
|
||||
self.CreateItems()
|
||||
# 设置信号与槽
|
||||
self.CreateSignalSlot()
|
||||
# 图表初始化
|
||||
self.plot_init()
|
||||
|
||||
self.velocity = 0
|
||||
# 滑条
|
||||
self.velocity_lineEdit.setText(str(self.velocity_horizontalSlider.value()))
|
||||
# 设置信号与槽
|
||||
def CreateSignalSlot(self):
|
||||
self.wifi_recv_open_pushButton.clicked.connect(self.wifi_recv_open_pushButton_clicked)
|
||||
self.velocity_horizontalSlider.valueChanged.connect(self.velocity_horizontalSlider_valueChanged)
|
||||
self.wifi_config_pushButton.clicked.connect(self.wifi_config_pushButton_clicked)
|
||||
|
||||
# 设置实例
|
||||
def CreateItems(self):
|
||||
# 定时器-绘图刷新
|
||||
self.timer = QtCore.QTimer()
|
||||
self.timer.timeout.connect(self.update_plot)
|
||||
self.timer.start(50)
|
||||
# wifi udp
|
||||
self.udp = udp()
|
||||
self.wifi_IP_lineEdit.setText(self.udp.user_ip)
|
||||
def variable_init(self):
|
||||
# 图表数据变量
|
||||
self.wifi_recv_flag = 0
|
||||
self.udp_data = 0
|
||||
self.target_velocity = 0
|
||||
self.now_velocity = 0
|
||||
|
||||
# 接收数据
|
||||
self.udp_data = ''
|
||||
t1 = threading.Thread(target=self.udp_recv)
|
||||
t1.start()
|
||||
def plot_init(self):
|
||||
# 图表可视化数组
|
||||
self.v_list = []
|
||||
self.v_list.append(np.zeros(300))
|
||||
self.timeArray = np.arange(-300, 0, 1)
|
||||
# 绘图对象
|
||||
self.pw = pg.PlotWidget()
|
||||
self.curve = self.pw.plot(pen='y')
|
||||
self.gridLayout.addWidget(self.pw)
|
||||
# 定时器
|
||||
self.timer = QtCore.QTimer()
|
||||
self.timer.timeout.connect(self.update_plot)
|
||||
self.timer.start(50)
|
||||
|
||||
|
||||
|
||||
# 滑条事件绑定
|
||||
# 滑条绑定
|
||||
def velocity_horizontalSlider_valueChanged(self):
|
||||
value = self.velocity_horizontalSlider.value()
|
||||
self.velocity_lineEdit.setText(str(value))
|
||||
# self.udp.send_message(str(value))
|
||||
# self.curve.updateItems()
|
||||
# self.curve.sigPlotChanged.emit(self.curve)
|
||||
self.target_velocity = self.velocity_horizontalSlider.value()
|
||||
self.velocity_lineEdit.setText(str(self.target_velocity))
|
||||
self.udp.send_message(str(self.velocity_lineEdit))
|
||||
|
||||
def wifi_config_pushButton_clicked(self):
|
||||
try:
|
||||
self.udp.udpClientSocket.bind((self.wifi_IP_lineEdit.text(), 2333))
|
||||
t1 = threading.Thread(target=self.udp_recv)
|
||||
t1.start()
|
||||
self.wifi_recv_open_pushButton.setEnabled(True)
|
||||
except:
|
||||
QMessageBox.critical(self, "错误", '该请求的地址无效')
|
||||
def wifi_recv_open_pushButton_clicked(self):
|
||||
if self.wifi_recv_flag == 0:
|
||||
# 打开wifi接收
|
||||
self.wifi_recv_flag = 1
|
||||
self.wifi_recv_open_pushButton.setText('关闭')
|
||||
else:
|
||||
self.wifi_recv_flag = 0
|
||||
self.wifi_recv_open_pushButton.setText('打开')
|
||||
def udp_recv(self):
|
||||
while True:
|
||||
while self.wifi_recv_flag:
|
||||
recv_data = self.udp.udpClientSocket.recv(1024)
|
||||
recv_data = recv_data.decode('utf-8')
|
||||
self.udp_data = recv_data
|
||||
def update_plot(self):
|
||||
print(self.udp_data)
|
||||
if self.wifi_recv_flag:
|
||||
self.v_list[0] = np.roll(self.v_list[0], -1)
|
||||
self.v_list[0][-1] = self.udp_data
|
||||
self.curve.setData(self.timeArray, self.v_list[0]) # 在绘图部件中绘制折线图
|
||||
|
|
|
@ -37,6 +37,26 @@ class Ui_MainWindow(object):
|
|||
self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
|
||||
self.gridLayout.setContentsMargins(0, 0, 0, 0)
|
||||
self.gridLayout.setObjectName("gridLayout")
|
||||
self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
|
||||
self.groupBox.setGeometry(QtCore.QRect(20, 420, 241, 61))
|
||||
self.groupBox.setObjectName("groupBox")
|
||||
self.horizontalLayoutWidget = QtWidgets.QWidget(self.groupBox)
|
||||
self.horizontalLayoutWidget.setGeometry(QtCore.QRect(10, 20, 221, 31))
|
||||
self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
|
||||
self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
|
||||
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
|
||||
self.horizontalLayout.setSpacing(1)
|
||||
self.horizontalLayout.setObjectName("horizontalLayout")
|
||||
self.wifi_IP_lineEdit = QtWidgets.QLineEdit(self.horizontalLayoutWidget)
|
||||
self.wifi_IP_lineEdit.setObjectName("wifi_IP_lineEdit")
|
||||
self.horizontalLayout.addWidget(self.wifi_IP_lineEdit)
|
||||
self.wifi_config_pushButton = QtWidgets.QPushButton(self.horizontalLayoutWidget)
|
||||
self.wifi_config_pushButton.setObjectName("wifi_config_pushButton")
|
||||
self.horizontalLayout.addWidget(self.wifi_config_pushButton)
|
||||
self.wifi_recv_open_pushButton = QtWidgets.QPushButton(self.centralwidget)
|
||||
self.wifi_recv_open_pushButton.setEnabled(False)
|
||||
self.wifi_recv_open_pushButton.setGeometry(QtCore.QRect(180, 380, 93, 28))
|
||||
self.wifi_recv_open_pushButton.setObjectName("wifi_recv_open_pushButton")
|
||||
MainWindow.setCentralWidget(self.centralwidget)
|
||||
self.menubar = QtWidgets.QMenuBar(MainWindow)
|
||||
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
|
||||
|
@ -52,4 +72,9 @@ class Ui_MainWindow(object):
|
|||
def retranslateUi(self, MainWindow):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
|
||||
self.velocity_lineEdit.setText(_translate("MainWindow", "0"))
|
||||
self.label.setText(_translate("MainWindow", "速度:"))
|
||||
self.groupBox.setTitle(_translate("MainWindow", "wifi_IP"))
|
||||
self.wifi_IP_lineEdit.setText(_translate("MainWindow", "192.168.4.2"))
|
||||
self.wifi_config_pushButton.setText(_translate("MainWindow", "设置"))
|
||||
self.wifi_recv_open_pushButton.setText(_translate("MainWindow", "打开"))
|
||||
|
|
|
@ -48,6 +48,9 @@
|
|||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>0</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="geometry">
|
||||
|
@ -73,6 +76,64 @@
|
|||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout"/>
|
||||
</widget>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>420</y>
|
||||
<width>241</width>
|
||||
<height>61</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>wifi_IP</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="horizontalLayoutWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>20</y>
|
||||
<width>221</width>
|
||||
<height>31</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="spacing">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="wifi_IP_lineEdit">
|
||||
<property name="text">
|
||||
<string>192.168.4.2</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="wifi_config_pushButton">
|
||||
<property name="text">
|
||||
<string>设置</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="wifi_recv_open_pushButton">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>180</x>
|
||||
<y>380</y>
|
||||
<width>93</width>
|
||||
<height>28</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>打开</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QMenuBar" name="menubar">
|
||||
<property name="geometry">
|
||||
|
|
|
@ -1,42 +1,9 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
This example demonstrates many of the 2D plotting capabilities
|
||||
in pyqtgraph. All of the plots may be panned/scaled by dragging with
|
||||
the left/right mouse buttons. Right click on any plot to show a context menu.
|
||||
"""
|
||||
import socket
|
||||
|
||||
from pyqtgraph.Qt import QtGui, QtCore
|
||||
import numpy as np
|
||||
import pyqtgraph as pg
|
||||
|
||||
#QtGui.QApplication.setGraphicsSystem('raster')
|
||||
app = QtGui.QApplication([])
|
||||
#mw = QtGui.QMainWindow()
|
||||
#mw.resize(800,800)
|
||||
|
||||
win = pg.GraphicsLayoutWidget(show=True, title="Basic plotting examples")
|
||||
win.resize(1000,600)
|
||||
win.setWindowTitle('pyqtgraph example: Plotting')
|
||||
|
||||
# Enable antialiasing for prettier plots
|
||||
pg.setConfigOptions(antialias=True)
|
||||
|
||||
p6 = win.addPlot(title="Updating plot")
|
||||
curve = p6.plot(pen='y')
|
||||
data = np.random.normal(size=(10,1000))
|
||||
ptr = 0
|
||||
def update():
|
||||
global curve, data, ptr, p6
|
||||
curve.setData(data[ptr%10])
|
||||
if ptr == 0:
|
||||
p6.enableAutoRange('xy', False) ## stop auto-scaling after the first data set is plotted
|
||||
ptr += 1
|
||||
timer = QtCore.QTimer()
|
||||
timer.timeout.connect(update)
|
||||
timer.start(50)
|
||||
|
||||
## Start Qt event loop unless running in interactive mode or using pyside.
|
||||
if __name__ == '__main__':
|
||||
import sys
|
||||
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
|
||||
QtGui.QApplication.instance().exec_()
|
||||
try:
|
||||
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
|
||||
s.connect(('8.8.8.8',80))
|
||||
ip = s.getsockname()[0]
|
||||
finally:
|
||||
s.close()
|
||||
print(ip)
|
|
@ -9,8 +9,13 @@ class udp(object):
|
|||
self.ADDRESS = (self.HOST, self.PORT)
|
||||
|
||||
self.udpClientSocket = socket(AF_INET, SOCK_DGRAM)
|
||||
self.udpClientSocket.bind(("192.168.4.2",2333))
|
||||
|
||||
try:
|
||||
s = socket(AF_INET, SOCK_DGRAM)
|
||||
s.connect(('8.8.8.8', 80))
|
||||
self.user_ip = s.getsockname()[0]
|
||||
finally:
|
||||
s.close()
|
||||
def send_message(self,data):
|
||||
if not data:
|
||||
return 0
|
||||
|
|
Loading…
Reference in New Issue