-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBasicInfo_Interface.py
157 lines (137 loc) · 5.14 KB
/
BasicInfo_Interface.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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
import typing
from PyQt5 import QtCore
from PyQt5.QtCore import Qt,pyqtSignal,QTimer,QMutex
from PyQt5.QtGui import QPixmap,QPainter,QColor
from PyQt5.QtWidgets import QWidget,QApplication
from PyQt5 import QtWidgets
import sys
import UI
from COMDriver import EzCOM
from cushy_serial import CushySerial
from qfluentwidgets import Flyout,InfoBarIcon,MessageBox
import SV
class BasicInfoInterface(QWidget,UI.Ui_BasicInfo):
def __init__(self,parent=None):
super().__init__(parent=parent)
self.setupUi(self)
self.COMCombo.addItems(EzCOM().ports)
self.RDCombo.addItems(SV.hRD.Devices)
self.COMCombo.setCurrentIndex(0)
self.RDCombo.setCurrentIndex(0)
self.COMBtn.clicked.connect(self.COMBtnCB)
self.ScanBtn.clicked.connect(self.ScanBtnCB)
self.BoardCom.addItem('运算放大器测量')
self.BoardCom.addItem('线性稳压器测量')
self.BoardCom.addItem('音频部分')
self.BoardCom.addItem('模拟电路课堂')
self.BoardCom.currentIndexChanged.connect(lambda x :SV.setBoardID(x))
self.RDBtn.clicked.connect(self.RDBtnCB)
self.ImageLabel.resize(300,150)
self.ImageLabel.setScaledContents(True)
self.ImageLabel.setImage('./assets/yourDad.png')
self.Timer = QTimer()
self.Timer.timeout.connect(self.CheckDevice)
self.Timer.start(2000)
self.COMBtn.isPushed = False
self.RDBtn.isPushed = False
self.Mutex = QMutex()
def CheckDevice(self):
# print('hi')
if SV.hMutex.tryLock(0) == True:
self.Mutex.lock()
if SV.huart.isOpen() == False:#串口断开
self.COMCombo.setEnabled(True)
if self.COMBtn.isPushed:
self.COMBtn.toggle()
self.COMBtn.isPushed = False
if SV.hRD.isOpen == False:#雨珠设备断开
SV.c.errSig.emit('RD')
self.RDCombo.setEnabled(True)
if self.RDBtn.isPushed:
self.RDBtn.toggle()
self.RDBtn.isPushed = False
SV.hMutex.unlock()
self.Mutex.unlock()
else:
pass
def ScanBtnCB(self):
if(SV.huart.isOpen()):
pass
else:
self.COMCombo.clear()
self.COMCombo.addItems(EzCOM().ports)
self.COMCombo.setCurrentIndex(0)
if SV.hRD.isOpen == True:
pass
else:
self.RDCombo.clear()
self.RDCombo.addItems(SV.hRD.Devices)
self.RDCombo.setCurrentIndex(0)
def RDBtnCB(self):
self.Mutex.lock()
if not self.RDBtn.isPushed:
if SV.hRD.isOpen == True:
pass
else:
SV.hRD.Connect(self.RDCombo.currentIndex())
if SV.hRD.isOpen == True:
print('RDopensuccess')
self.RDBtn.isPushed = True
self.RDCombo.setEnabled(False)
else:
print('RDopenfail')
self.RDBtn.toggle()
# self.
Flyout.create(
icon=InfoBarIcon.ERROR,
title="RD设备异常",
content="请检查连接以及串口是否被其他程序占用",
target=self.RDBtn,
parent=self,
isClosable=False
)
else:
self.RDBtn.isPushed = False
SV.hRD.DisConnect()
print('RDClosed')
self.RDCombo.setEnabled(True)
self.Mutex.unlock()
def COMBtnCB(self):
self.Mutex.lock()
if not self.COMBtn.isPushed:
try:
# SV.COMconnect(EzCOM.cvtStr(self.COMCombo.currentText()))
SV.huart.connect(EzCOM.cvtStr(self.COMCombo.currentText()),timeout=1)
if(SV.huart.isOpen()):
print('COMopensuccess')
self.COMBtn.isPushed = True
self.COMCombo.setEnabled(False)
else:
print('COMopenfail')
self.COMBtn.toggle()
except Exception as r:
self.COMBtn.toggle()
print('error',r)
Flyout.create(
icon=InfoBarIcon.ERROR,
title='串口异常',
content="请检查连接以及串口是否被其他程序占用",
target=self.COMBtn,
parent=self,
isClosable=False
)
# w = MessageBox('ok','hi',self)
# w.exec()
else:
self.COMBtn.isPushed = False
SV.huart.close()
print('serClosed')
self.COMCombo.setEnabled(True)
# print(huart.isOpen)
self.Mutex.unlock()
if __name__ == '__main__':
QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
app = QApplication(sys.argv)
w = BasicInfoInterface()
w.show()
app.exec_()