add logics
This commit is contained in:
parent
a7155a4a6f
commit
f0449a472b
@ -30,9 +30,6 @@ class Start:
|
||||
self.draw()
|
||||
self.app.exec()
|
||||
|
||||
def __del__(self):
|
||||
print('destruct')
|
||||
|
||||
def draw(self):
|
||||
self.window.show()
|
||||
|
||||
|
@ -35,8 +35,8 @@ class ThreadData(QtCore.QThread):
|
||||
def run(self):
|
||||
self.running = True
|
||||
while self.running:
|
||||
self.parent.take_data()
|
||||
self.sleep(2)
|
||||
self.parent.no_data()
|
||||
self.sleep(1)
|
||||
|
||||
|
||||
class MainExperimentDataWindow(AbstractWindow):
|
||||
@ -45,27 +45,19 @@ class MainExperimentDataWindow(AbstractWindow):
|
||||
|
||||
self.setWindowTitle('Основной эксперимент. Получение данных')
|
||||
self.parent = parent
|
||||
|
||||
self.parent.ser = serial.Serial(
|
||||
port='/dev/ttyUSB2',
|
||||
baudrate=9600,
|
||||
timeout=1
|
||||
)
|
||||
self.parent.ser.isOpen()
|
||||
|
||||
msg = 'OUTput on\n'
|
||||
self.parent.ser.write(msg.encode('ascii'))
|
||||
# self.add_ser()
|
||||
self.data_thread = ThreadData(self)
|
||||
self.resize(1400, 800)
|
||||
self.number_iteration = 1
|
||||
self.start_time = 0
|
||||
self.volt = 0
|
||||
|
||||
# make masthead
|
||||
self.parent.dataname = 'data.csv'
|
||||
head_1 = 'I_0,mA'
|
||||
head_2 = 'U_34,mV'
|
||||
head_3 = 't,ms'
|
||||
heads = ['U_34,mV', 'I_M,mA', 'U_0,mV', 'I_0,mA', 'E, mV', 'N', 't,ms']
|
||||
with open(os.path.join(self.parent.folder, self.parent.dataname), 'w') as file:
|
||||
wr = csv.writer(file)
|
||||
wr.writerow([head_1, head_2, head_3])
|
||||
wr.writerow(heads)
|
||||
|
||||
self.centralwidget = QWidget()
|
||||
self.setCentralWidget(self.centralwidget)
|
||||
@ -79,89 +71,114 @@ class MainExperimentDataWindow(AbstractWindow):
|
||||
self.stop.clicked.connect(self.stop_clicked)
|
||||
self.stop.setEnabled(False)
|
||||
|
||||
self.next = QPushButton(self)
|
||||
self.next.setIcon(QIcon('arrow.png'))
|
||||
self.next.setEnabled(False)
|
||||
self.next.clicked.connect(self.next_clicked)
|
||||
self.new = QPushButton('Новый ток')
|
||||
self.new.clicked.connect(self.new_clicked)
|
||||
self.new.setEnabled(False)
|
||||
|
||||
self.lineEdit = QLineEdit(placeholderText='Введите что-то')
|
||||
self.lineEdit.returnPressed.connect(self.enter_smth)
|
||||
self.chart = QPushButton('График')
|
||||
self.chart.setEnabled(False)
|
||||
self.chart.clicked.connect(self.chart_clicked)
|
||||
|
||||
self.lineEdit = QLineEdit(placeholderText='Введите a, мм')
|
||||
self.lineEdit.returnPressed.connect(self.enter_a)
|
||||
|
||||
# make table
|
||||
self.table = QTableWidget(self)
|
||||
self.table.setColumnCount(3)
|
||||
self.table.setColumnCount(len(heads))
|
||||
self.table.setRowCount(0)
|
||||
self.table.setHorizontalHeaderLabels([head_1, head_2, head_3])
|
||||
self.table.setHorizontalHeaderLabels(heads)
|
||||
header = self.table.horizontalHeader()
|
||||
header.setSectionResizeMode(0, QHeaderView.ResizeMode.Stretch)
|
||||
header.setSectionResizeMode(1, QHeaderView.ResizeMode.Stretch)
|
||||
header.setSectionResizeMode(2, QHeaderView.ResizeMode.Stretch)
|
||||
for i in range(len(heads)):
|
||||
header.setSectionResizeMode(i, QHeaderView.ResizeMode.Stretch)
|
||||
self.table.resizeColumnsToContents()
|
||||
|
||||
# Adding the table to the grid
|
||||
self.grid_layout.addWidget(self.table, 0, 0, -1, 1)
|
||||
self.grid_layout.addWidget(self.lineEdit, 0, 2, -1, -1)
|
||||
self.grid_layout.addWidget(self.next, 2, 2, -1, -1)
|
||||
self.grid_layout.addWidget(self.lineEdit, 0, 2, 1, -1)
|
||||
self.grid_layout.addWidget(self.start, 1, 2)
|
||||
self.grid_layout.addWidget(self.stop, 1, 3)
|
||||
self.grid_layout.addWidget(self.new, 2, 2, 1, -1)
|
||||
self.grid_layout.addWidget(self.chart, 3, 2, 1, -1)
|
||||
|
||||
def enter_smth(self):
|
||||
def add_ser(self):
|
||||
self.parent.ser = serial.Serial(
|
||||
port='/dev/ttyUSB2',
|
||||
baudrate=9600,
|
||||
timeout=1
|
||||
)
|
||||
self.parent.ser.isOpen()
|
||||
msg = 'OUTput on\n'
|
||||
self.parent.ser.write(msg.encode('ascii'))
|
||||
|
||||
def enter_a(self):
|
||||
# TODO
|
||||
self.parent.smth = self.lineEdit.text()
|
||||
self.parent.a = self.lineEdit.text()
|
||||
self.start.setEnabled(True)
|
||||
self.lineEdit.setReadOnly(True)
|
||||
|
||||
def start_clicked(self):
|
||||
self.stop.setEnabled(True)
|
||||
self.start_time = round(time.time()*1000)
|
||||
if self.start_time == 0:
|
||||
self.start_time = round(time.time()*1000)
|
||||
self.start.setEnabled(False)
|
||||
if not self.data_thread.isRunning():
|
||||
self.new.setEnabled(True)
|
||||
if not self.data_thread.running:
|
||||
self.data_thread.start()
|
||||
|
||||
def stop_clicked(self):
|
||||
self.data_thread.running = False
|
||||
self.stop.setEnabled(False)
|
||||
self.next.setEnabled(True)
|
||||
self.start.setEnabled(True)
|
||||
self.chart.setEnabled(True)
|
||||
|
||||
def next_clicked(self):
|
||||
def new_clicked(self):
|
||||
self.number_iteration += 1
|
||||
self.volt = 0
|
||||
if not self.data_thread.running:
|
||||
self.data_thread.start()
|
||||
self.start.setEnabled(False)
|
||||
self.new.setEnabled(True)
|
||||
self.stop.setEnabled(True)
|
||||
|
||||
def chart_clicked(self):
|
||||
self.parent.number = 21
|
||||
self.parent.change_number()
|
||||
|
||||
def no_data(self):
|
||||
current_time = round(time.time()*1000)
|
||||
v = str((current_time-self.start_time)/60)
|
||||
a = v
|
||||
t = str(current_time-self.start_time)
|
||||
self.save_data(v, a, t)
|
||||
if float(self.volt) <= 0.1:
|
||||
self.u_0 = v
|
||||
a = str(float(v)/100)
|
||||
I_M = v
|
||||
self.save_data([v, I_M, self.u_0, a, self.volt,
|
||||
self.number_iteration, t])
|
||||
self.volt = str(float(self.volt)+5)
|
||||
if float(a) > 1:
|
||||
self.stop_clicked()
|
||||
|
||||
def save_data(self, v, a, t):
|
||||
def save_data(self, data):
|
||||
with open(os.path.join(self.parent.folder, self.parent.dataname), 'a') as file:
|
||||
wr = csv.writer(file)
|
||||
wr.writerow([v, a, t])
|
||||
v = str(v)
|
||||
a = str(a)
|
||||
t = str(t)
|
||||
wr.writerow(data)
|
||||
self.table.insertRow(self.table.rowCount())
|
||||
self.table.setItem(self.table.rowCount()-1, 0, QTableWidgetItem(v))
|
||||
self.table.setItem(self.table.rowCount()-1, 1, QTableWidgetItem(a))
|
||||
self.table.setItem(self.table.rowCount()-1, 2, QTableWidgetItem(t))
|
||||
for i in range(len(data)):
|
||||
self.table.setItem(self.table.rowCount()-1, i,
|
||||
QTableWidgetItem(str(data[i])))
|
||||
|
||||
def take_data(self):
|
||||
# measure voltage and current
|
||||
volt = 1.5 * (1+(time.time()-self.start_time/1000)/20)
|
||||
|
||||
# print(volt)
|
||||
msg = 'VOLTage '+str(volt)+'\n'
|
||||
msg = 'VOLTage '+str(self.volt)+'\n'
|
||||
self.parent.ser.write(msg.encode('ascii'))
|
||||
time.sleep(1)
|
||||
|
||||
msg = 'MEASure:VOLTage?\n'
|
||||
|
||||
msg = 'MEASure:Current?\n'
|
||||
self.parent.ser.write(msg.encode('ascii'))
|
||||
time.sleep(1)
|
||||
bytesToRead = self.parent.ser.inWaiting()
|
||||
data = self.parent.ser.read(bytesToRead)
|
||||
print(float(data))
|
||||
I_M = self.parent.ser.read(bytesToRead)
|
||||
self.volt += 5
|
||||
|
||||
volt_name = os.path.join('/dev', 'usbtmc0')
|
||||
f_volt = open(volt_name, 'w')
|
||||
@ -174,14 +191,23 @@ class MainExperimentDataWindow(AbstractWindow):
|
||||
|
||||
f_volt = open(volt_name, 'r')
|
||||
v = '{:.9f}'.format(float(f_volt.read(15))*10**3)
|
||||
if self.volt == 0:
|
||||
self.u_0 = v
|
||||
f_amp = open(amp_name, 'r')
|
||||
a = '{:.9f}'.format(float(f_amp.read(15))*10**3)
|
||||
print(a)
|
||||
# protect of errors:
|
||||
if a > 1:
|
||||
self.stop_clicked()
|
||||
|
||||
f_volt.close()
|
||||
f_amp.close()
|
||||
|
||||
current_time = round(time.time()*1000)
|
||||
t = str(current_time-self.start_time)
|
||||
self.save_data(v, a, t)
|
||||
|
||||
self.save_data([v, I_M, self.u_0, a, self.volt,
|
||||
self.number_iteration, t])
|
||||
|
||||
def closeEvent(self, event):
|
||||
self.data_thread.running = False
|
||||
@ -210,13 +236,13 @@ class MainExperimentChartWindow(AbstractWindow):
|
||||
pixmap = QPixmap(os.path.join(
|
||||
self.parent.folder, self.parent.chartname))
|
||||
self.label = QLabel(self)
|
||||
pixmap.scaled(0.5, 0.3)
|
||||
self.label.setScaledContents(True)
|
||||
self.label.setPixmap(pixmap)
|
||||
self.label.setFixedSize(0.7*self.width(), self.height())
|
||||
|
||||
self.text = QTextBrowser()
|
||||
self.text.setText('text')
|
||||
|
||||
self.resize(1400, 800)
|
||||
self.hbox_layout = QGridLayout(self.centralwidget)
|
||||
self.hbox_layout.addWidget(self.label, 0, 0)
|
||||
self.hbox_layout.addWidget(self.text, 0, 1)
|
||||
|
Binary file not shown.
@ -1 +0,0 @@
|
||||
,anna,anna-HP-Laptop-15-bw0xx,08.11.2022 18:47,file:///home/anna/.config/libreoffice/4;
|
Binary file not shown.
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 80 KiB |
@ -1,4 +1,13 @@
|
||||
"I_0,mA","U_34,mV","t,ms"
|
||||
5.721514880,-0.000002069,3963
|
||||
4.002560960,0.000000000,9913
|
||||
-88.817369600,-0.000000886,15850
|
||||
"U_34,mV","I_M,mA","U_0,mV","I_0,mA","E, mV",N,"t,ms"
|
||||
0.016666666666666666,0.016666666666666666,0.016666666666666666,0.00016666666666666666,0,1,1
|
||||
16.7,16.7,0.016666666666666666,0.16699999999999998,5.0,1,1002
|
||||
33.38333333333333,33.38333333333333,0.016666666666666666,0.3338333333333333,10.0,1,2003
|
||||
50.06666666666667,50.06666666666667,0.016666666666666666,0.5006666666666667,15.0,1,3004
|
||||
66.75,66.75,0.016666666666666666,0.6675,20.0,1,4005
|
||||
83.43333333333334,83.43333333333334,0.016666666666666666,0.8343333333333334,25.0,1,5006
|
||||
100.11666666666666,100.11666666666666,0.016666666666666666,1.0011666666666665,30.0,1,6007
|
||||
142.81666666666666,142.81666666666666,142.81666666666666,1.4281666666666666,0,2,8569
|
||||
172.68333333333334,172.68333333333334,172.68333333333334,1.7268333333333334,0,3,10361
|
||||
212.01666666666668,212.01666666666668,212.01666666666668,2.120166666666667,0,5,12721
|
||||
235.11666666666667,235.11666666666667,235.11666666666667,2.351166666666667,0,6,14107
|
||||
256.65,256.65,256.65,2.5664999999999996,0,7,15399
|
||||
|
|
Loading…
Reference in New Issue
Block a user