diff --git a/Automation/Main.py b/Automation/Main.py index 5aa9800..702dee8 100644 --- a/Automation/Main.py +++ b/Automation/Main.py @@ -17,6 +17,8 @@ from Abstract_window import AbstractWindow from Main_experiment_window import (MainExperimentDataWindow, MainExperimentChartWindow) from GraduationWindow import GraduationWindow +from SignWindow import SignWindow +from ResistanceWindow import ResistanceWindow class Start: @@ -28,7 +30,11 @@ class Start: else: self.app = QApplication.instance() self.window = StartWindow(self) + # self.add_ser() + # self.parent.amp_name= os.path.join('/dev', 'usbtmc1') + # self.volt_name = os.path.join('/dev', 'usbtmc0') + self.draw() self.app.exec() @@ -51,6 +57,9 @@ class Start: if self.number == 30: self.window.close() self.window = SignWindow(self) + if self.number == 40: + self.window.close() + self.window = ResistanceWindow(self) self.draw() def add_ser(self): @@ -88,6 +97,11 @@ class StartWindow(AbstractWindow): self.sign.clicked.connect(self.sign_click) if not self.parent.foldername: self.sign.setEnabled(False) + + self.res = QPushButton('Удельная проводимость') + self.res.clicked.connect(self.res_click) + if not self.parent.foldername: + self.res.setEnabled(False) self.main = QPushButton('Основной эксперимент') self.main.clicked.connect(self.main_click) @@ -101,6 +115,7 @@ class StartWindow(AbstractWindow): self.hbox_layout.addWidget(self.lineEdit, 1, 0, 1, 2) self.hbox_layout.addWidget(self.flow, 2, 0) self.hbox_layout.addWidget(self.sign, 3, 0) + self.hbox_layout.addWidget(self.res, 3, 1) self.hbox_layout.addWidget(self.main, 2, 1) def flow_click(self): @@ -111,6 +126,10 @@ class StartWindow(AbstractWindow): self.parent.number = 20 self.parent.change_number() + def res_click(self): + self.parent.number = 40 + self.parent.change_number() + def sign_click(self): self.parent.number = 30 self.parent.change_number() @@ -125,71 +144,11 @@ class StartWindow(AbstractWindow): self.flow.setEnabled(True) self.main.setEnabled(True) self.sign.setEnabled(True) + self.res.setEnabled(True) self.lineEdit.setReadOnly(True) -class SignWindow(AbstractWindow): - def __init__(self, parent): - super().__init__() - self.setWindowTitle('Определение знака носителей') - self.parent = parent - - self.start = QPushButton('Старт') - self.start.clicked.connect(self.start_clicked) - self.start.setEnabled(True) - - self.menu = QPushButton('Меню') - self.menu.setEnabled(False) - self.menu.clicked.connect(self.menu_clicked) - - self.with_field = QLabel('С полем: ', self) - self.without_field = QLabel('С полем: ', self) - self.with_field_value = QLabel(self) - self.without_field_value = QLabel(self) - - self.centralwidget = QWidget() - self.resize(1400, 800) - self.setCentralWidget(self.centralwidget) - self.grid_layout = QGridLayout(self.centralwidget) - - self.grid_layout.addWidget(self.start, 0, 0, 1, -1) - self.grid_layout.addWidget(self.with_field, 1, 0) - self.grid_layout.addWidget(self.with_field_value, 1, 1) - self.grid_layout.addWidget(self.without_field, 2, 0) - self.grid_layout.addWidget(self.without_field_value, 2, 1) - self.grid_layout.addWidget(self.menu, 3, 0, 1, -1) - - def menu_clicked(self): - self.parent.number = 0 - self.parent.change_number() - - def start_clicked(self): - self.start.setEnabled(False) - with_field=10 - without_field=15 - # without_field, with_field = self.get_values() - self.with_field_value.setText(str(with_field)+', mV') - self.without_field_value.setText(str(without_field)+', mV') - self.menu.setEnabled(True) - - def measure(self, volt): - msg = 'VOLTage '+str(volt)+'\n' - self.parent.ser.write(msg.encode('ascii')) - time.sleep(1) - volt_name = os.path.join('/dev', 'usbtmc0') - f_volt = open(volt_name, 'w') - f_volt.write('Measure:Voltage:DC?\n') - f_volt.close() - f_volt = open(volt_name, 'r') - v = '{:.9f}'.format(float(f_volt.read(15))*10**3) - f_volt.close() - return v - def get_values(self): - without_field = self.measure(0) - with_field = self.measure(10) - return without_field, with_field - start = Start() diff --git a/Automation/Main_experiment_window.py b/Automation/Main_experiment_window.py index 70da9d3..9de5208 100644 --- a/Automation/Main_experiment_window.py +++ b/Automation/Main_experiment_window.py @@ -170,20 +170,18 @@ class MainExperimentDataWindow(AbstractWindow): I_M = self.parent.ser.read(bytesToRead) self.volt += 5 - volt_name = os.path.join('/dev', 'usbtmc0') - f_volt = open(volt_name, 'w') + f_volt = open(self.parent.volt_name, 'w') f_volt.write('Measure:Voltage:DC?\n') f_volt.close() - amp_name = os.path.join('/dev', 'usbtmc1') - f_amp = open(amp_name, 'w') + f_amp = open(self.parent.amp_name, 'w') f_amp.write('Measure:Current:DC?\n') f_amp.close() - f_volt = open(volt_name, 'r') + f_volt = open(self.parent.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') + f_amp = open(self.parent.amp_name, 'r') a = '{:.9f}'.format(float(f_amp.read(15))*10**3) print(a) # protect of errors: diff --git a/Automation/ResistanceWindow.py b/Automation/ResistanceWindow.py new file mode 100644 index 0000000..17859e1 --- /dev/null +++ b/Automation/ResistanceWindow.py @@ -0,0 +1,95 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Created on Mon Nov 14 21:31:55 2022 + +@author: anna +""" + +from PyQt6.QtWidgets import (QPushButton, + QWidget, + QGridLayout, + QLabel, + QLineEdit + ) +from Abstract_window import AbstractWindow + + +class ResistanceWindow(AbstractWindow): + def __init__(self, parent): + super().__init__() + + self.setWindowTitle('Определение удельной проводимости') + self.parent = parent + + self.start = QPushButton('Старт') + self.start.clicked.connect(self.start_clicked) + self.start.setEnabled(False) + + self.menu = QPushButton('Меню') + self.menu.setEnabled(False) + self.menu.clicked.connect(self.menu_clicked) + + self.current = QLabel('Ток через образец: ', self) + self.voltage= QLabel('Напряжение на 3_5: ', self) + self.current_value = QLabel(self) + self.voltage_value = QLabel(self) + + self.line_L = QLineEdit(placeholderText='Введите L_35, мм') + self.line_L.returnPressed.connect(self.enter_L) + + self.line_l = QLineEdit(placeholderText='Введите l, мм') + self.line_l.returnPressed.connect(self.enter_l) + + self.centralwidget = QWidget() + self.resize(1400, 800) + self.setCentralWidget(self.centralwidget) + self.grid_layout = QGridLayout(self.centralwidget) + + self.grid_layout.addWidget(self.line_L, 0, 0) + self.grid_layout.addWidget(self.line_l, 0, 1) + self.grid_layout.addWidget(self.start, 1, 0, 1, -1) + self.grid_layout.addWidget(self.current, 2, 0) + self.grid_layout.addWidget(self.current_value, 2, 1) + self.grid_layout.addWidget(self.voltage, 3, 0) + self.grid_layout.addWidget(self.voltage_value, 3, 1) + self.grid_layout.addWidget(self.menu, 4, 0, 1, -1) + + def menu_clicked(self): + self.parent.number = 0 + self.parent.change_number() + + def enter_L(self): + self.parent.L=self.line_L.text() + self.line_L.setReadOnly(True) + + def enter_l(self): + self.parent.L=self.line_l.text() + self.start.setEnabled(True) + self.line_l.setReadOnly(True) + + def start_clicked(self): + self.start.setEnabled(False) + current=10 + voltage=15 + # voltage, current = self.measure() + self.current_value.setText(str(current)+', mA') + self.voltage_value.setText(str(voltage)+', mV') + self.menu.setEnabled(True) + + def measure(self): + f_amp = open(self.parent.amp_name, 'w') + f_amp.write('Measure:Current:DC?\n') + f_amp.close() + f_amp = open(self.parent.amp_name, 'r') + a = '{:.9f}'.format(float(f_amp.read(15))*10**3) + f_amp.close() + + f_amp.close() + f_volt = open(self.parent.volt_name, 'w') + f_volt.write('Measure:Voltage:DC?\n') + f_volt.close() + f_volt = open(self.parent.volt_name, 'r') + v = '{:.9f}'.format(float(f_volt.read(15))*10**3) + f_volt.close() + return v, a \ No newline at end of file diff --git a/Automation/SignWindow.py b/Automation/SignWindow.py new file mode 100644 index 0000000..1f0f6e0 --- /dev/null +++ b/Automation/SignWindow.py @@ -0,0 +1,78 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Created on Mon Nov 14 21:00:36 2022 + +@author: anna +""" +import os +import time +from PyQt6.QtWidgets import (QPushButton, + QWidget, + QGridLayout, + QLabel + ) +from Abstract_window import AbstractWindow + + +class SignWindow(AbstractWindow): + def __init__(self, parent): + super().__init__() + + self.setWindowTitle('Определение знака носителей') + self.parent = parent + + self.start = QPushButton('Старт') + self.start.clicked.connect(self.start_clicked) + self.start.setEnabled(True) + + self.menu = QPushButton('Меню') + self.menu.setEnabled(False) + self.menu.clicked.connect(self.menu_clicked) + + self.with_field = QLabel('С полем: ', self) + self.without_field = QLabel('С полем: ', self) + self.with_field_value = QLabel(self) + self.without_field_value = QLabel(self) + + self.centralwidget = QWidget() + self.resize(1400, 800) + self.setCentralWidget(self.centralwidget) + self.grid_layout = QGridLayout(self.centralwidget) + + self.grid_layout.addWidget(self.start, 0, 0, 1, -1) + self.grid_layout.addWidget(self.with_field, 1, 0) + self.grid_layout.addWidget(self.with_field_value, 1, 1) + self.grid_layout.addWidget(self.without_field, 2, 0) + self.grid_layout.addWidget(self.without_field_value, 2, 1) + self.grid_layout.addWidget(self.menu, 3, 0, 1, -1) + + def menu_clicked(self): + self.parent.number = 0 + self.parent.change_number() + + def start_clicked(self): + self.start.setEnabled(False) + with_field=10 + without_field=15 + # without_field, with_field = self.get_values() + self.with_field_value.setText(str(with_field)+', mV') + self.without_field_value.setText(str(without_field)+', mV') + self.menu.setEnabled(True) + + def measure(self, volt): + msg = 'VOLTage '+str(volt)+'\n' + self.parent.ser.write(msg.encode('ascii')) + time.sleep(1) + f_volt = open(self.parent.volt_name, 'w') + f_volt.write('Measure:Voltage:DC?\n') + f_volt.close() + f_volt = open(self.parent.volt_name, 'r') + v = '{:.9f}'.format(float(f_volt.read(15))*10**3) + f_volt.close() + return v + + def get_values(self): + without_field = self.measure(0) + with_field = self.measure(10) + return without_field, with_field \ No newline at end of file diff --git a/Automation/__pycache__/Main_experiment_window.cpython-39.pyc b/Automation/__pycache__/Main_experiment_window.cpython-39.pyc index cf8ea08..718f3da 100644 Binary files a/Automation/__pycache__/Main_experiment_window.cpython-39.pyc and b/Automation/__pycache__/Main_experiment_window.cpython-39.pyc differ diff --git a/Automation/__pycache__/ResistanceWindow.cpython-39.pyc b/Automation/__pycache__/ResistanceWindow.cpython-39.pyc new file mode 100644 index 0000000..a9adb02 Binary files /dev/null and b/Automation/__pycache__/ResistanceWindow.cpython-39.pyc differ diff --git a/Automation/__pycache__/SignWindow.cpython-39.pyc b/Automation/__pycache__/SignWindow.cpython-39.pyc new file mode 100644 index 0000000..380c8c4 Binary files /dev/null and b/Automation/__pycache__/SignWindow.cpython-39.pyc differ