/
App.py
66 lines (56 loc) · 2.21 KB
/
App.py
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
60
61
62
63
64
65
66
# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
import ctypes
from AppIcon import AppIcon
from AppView import ViewController
import EventHandler
from SerialPort import SPCore
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.serialPort = SPCore.SerialPort()
self.setWindowIcon(AppIcon().getQIcon())
self.view = ViewController(self)
self.handler = EventHandler.handler(self)
self.view.bindEvents(self.handler)
self.serialPort.sendThread.autoSendError.connect(self.handler.autoSendError)
self.serialPort.receiveThread.received.connect(self.handler.receivedData)
self.serialPort.sendThread.error.connect(self.handler.serialIOError)
self.serialPort.receiveThread.error.connect(self.handler.serialIOError)
self.view.initComboBox(self.serialPort)
# 调用串口类发送数据
def sendData(self):
sendData = self.view.getSendText()
success, msg = self.serialPort.sendThread.sendData(sendData)
if not success:
self.showWarning(msg)
# 调用串口类发送十六进制命令
def sendCmd(self, data):
success, msg = self.serialPort.sendThread.sendCmd(data)
if not success:
self.showWarning(msg)
def showWarning(self, msg):
messageBox = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Warning, " ", msg)
messageBox.setStandardButtons(QtWidgets.QMessageBox.Yes)
messageBox.setWindowIcon(AppIcon().getQIcon())
button = messageBox.button(QtWidgets.QMessageBox.Yes)
button.setText('确认')
messageBox.exec_()
def closeEvent(self,event):
self.serialPort.sendThread.stop()
self.serialPort.receiveThread.stop()
self.serialPort.close()
event.accept()
if __name__ == "__main__":
# 设置应用唯一的AppID
appID = u'dennic.serialport.tool.v1.0'
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(appID)
# 实例化应用
app = QtWidgets.QApplication(sys.argv)
# 实例化主窗口
mainWindow = MainWindow()
# 显示主窗口
mainWindow.show()
# 应用执行结束后退出
sys.exit(app.exec_())