forked from Ultrawipf/OpenFFBoard-configurator
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserial_ui.py
More file actions
127 lines (103 loc) · 4.23 KB
/
Copy pathserial_ui.py
File metadata and controls
127 lines (103 loc) · 4.23 KB
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
from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtWidgets import QDialog
from PyQt5.QtWidgets import QWidget
from PyQt5.QtSerialPort import QSerialPort,QSerialPortInfo
from PyQt5.QtCore import QIODevice,pyqtSignal
import main
from base_ui import WidgetUI
from helper import classlistToIds,updateClassComboBox
from PyQt5.QtWidgets import QMessageBox
class SerialChooser(WidgetUI):
connected = pyqtSignal(bool)
classes = []
classIds = {}
port = None
mainID = None
def __init__(self,serial, main):
WidgetUI.__init__(self, main,'serialchooser.ui')
self.serial = serial
self.pushButton_refresh.clicked.connect(self.getPorts)
self.pushButton_connect.clicked.connect(self.serialConnect)
self.comboBox_port.currentIndexChanged.connect(self.selectPort)
self.pushButton_send.clicked.connect(self.sendLine)
self.lineEdit_cmd.returnPressed.connect(self.sendLine)
self.pushButton_ok.clicked.connect(self.mainBtn)
self.getPorts()
self.ports = []
self.update()
def serialLog(self,txt):
if(type(txt) == list):
txt = "\n".join(txt)
else:
txt = str(txt)
self.serialLogBox.append(txt)
def sendLine(self):
cmd = self.lineEdit_cmd.text()+"\n"
self.serialLog(cmd)
self.main.comms.serialGetAsync(cmd,self.serialLog)
def write(self,data):
self.serial.write(data)
def update(self):
if(self.serial.isOpen()):
self.pushButton_connect.setText("Disconnect")
self.comboBox_port.setEnabled(False)
self.pushButton_refresh.setEnabled(False)
self.pushButton_send.setEnabled(True)
self.lineEdit_cmd.setEnabled(True)
self.connected.emit(True)
self.getMainClasses()
else:
self.pushButton_connect.setText("Connect")
self.comboBox_port.setEnabled(True)
self.pushButton_refresh.setEnabled(True)
self.pushButton_send.setEnabled(False)
self.lineEdit_cmd.setEnabled(False)
self.connected.emit(False)
self.groupBox_system.setEnabled(False)
def serialConnect(self):
self.selectPort(self.comboBox_port.currentIndex())
if(not self.serial.isOpen() and self.port != None):
self.main.log("Connecting...")
self.serial.setPort(self.port)
self.serial.open(QIODevice.ReadWrite)
else:
self.serial.close()
self.update()
def selectPort(self,id):
if(id != -1):
self.port = self.ports[id]
else:
self.port = None
def getPorts(self):
oldport = self.port.portName() if self.port else None
self.ports = QSerialPortInfo().availablePorts()
self.comboBox_port.clear()
for port in self.ports:
self.comboBox_port.addItem(port.portName() + " : " + port.description())
self.update()
plist = [p.portName() for p in self.ports]
if oldport in plist:
self.comboBox_port.setCurrentIndex(plist.index(oldport))
self.selectPort(self.comboBox_port.currentIndex())
def getMainClasses(self):
def updateMains(dat):
self.comboBox_main.clear()
self.classIds,self.classes = classlistToIds(dat)
if(self.mainID == None):
#self.main.resetPort()
self.groupBox_system.setEnabled(False)
return
self.groupBox_system.setEnabled(True)
updateClassComboBox(self.comboBox_main,self.classIds,self.classes,self.mainID)
self.main.log("Detected mode: "+self.comboBox_main.currentText())
self.main.updateTabs()
def f(i):
self.mainID = i
self.main.comms.serialGetAsync("id?",f,int)
self.main.comms.serialGetAsync("lsmain",updateMains)
def mainBtn(self):
id = self.classes[self.comboBox_main.currentIndex()][0]
self.main.comms.serialWrite("main="+str(id)+"\n")
self.main.reconnect()
msg = QMessageBox(QMessageBox.Information,"Main class changed","Chip is rebooting. Please reconnect.")
msg.exec_()