From 6846b9574817f6bf9434d59f302a3cba4e014921 Mon Sep 17 00:00:00 2001 From: "nazarchuk.as" Date: Mon, 14 Nov 2022 21:33:32 +0300 Subject: [PATCH] add new window --- Automation/Main.py | 81 ++++----------- Automation/Main_experiment_window.py | 10 +- Automation/ResistanceWindow.py | 95 ++++++++++++++++++ Automation/SignWindow.py | 78 ++++++++++++++ .../Main_experiment_window.cpython-39.pyc | Bin 7512 -> 7455 bytes .../ResistanceWindow.cpython-39.pyc | Bin 0 -> 3053 bytes .../__pycache__/SignWindow.cpython-39.pyc | Bin 0 -> 2509 bytes 7 files changed, 197 insertions(+), 67 deletions(-) create mode 100644 Automation/ResistanceWindow.py create mode 100644 Automation/SignWindow.py create mode 100644 Automation/__pycache__/ResistanceWindow.cpython-39.pyc create mode 100644 Automation/__pycache__/SignWindow.cpython-39.pyc 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 cf8ea08bb3f197692c4b6e7e0ef07886dc409313..718f3dac82484841e6bfe36bbb63f05faf837f72 100644 GIT binary patch delta 513 zcmZ8dO=}ZT6n%Fx-)UZ&IFkgDP}EJ^MNtt7voMPa1*xlo+c5M^i~W?DX$$2I5oaYx z4P0;|Y6gEn>7VGr?p#Q)I~VTkPw0JVE9iss-o5wSbMN8(2)+b7tW;b^=gr%A?f1+H zKdW<=&~Um;~p1D#Ne5U0M*(h{jmjH}zUde!E_Cnbtr9n!gR+`cz zrBf@-g;Ke=%0+lZD_bT9E?OnbKr9EWgxr#B1fspA9YQ+QB+-7mHdI6AV#xe&h-bd! zGZlyneM_g&JCYSED%x2@it;yVkQs$hGPQ07xt%d-)5@@;Sd*qA+POrXw&an@LKVyA zb5p%Su*d9*k1vAjt$qEf*xaqm*ORB&cz6xp2VH)~Ht1(UAW?9W zplS@acP98Sya5ir3D5QT?#_1Be>oU$R>rfwB9%25zp6WU6ee&FtFRl|V1WlV9ZR#J z0}dEqqY-^@zme-iBVe$95x=^tcoID@4v43RxDr2twa-stPlq2k>gH>2RX_R%19giP f%n80z)m9dyb8Po6!#hlRA7PHCOEI4I*5T40C_s#o diff --git a/Automation/__pycache__/ResistanceWindow.cpython-39.pyc b/Automation/__pycache__/ResistanceWindow.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a9adb022e474930f9ace44d89b2281e5c16fe4ee GIT binary patch literal 3053 zcmZ`*OK%*<5$>MX&JK6U6-`N$Eh&>+l1&8BBFz9H0!K1!=|VH2BiO)R2BYnvxb*A{ z(=#Jl8wzktAwqyW0H2d!nVWzdl)#FW#8HrcuzT%mF5x9VAeZE;o*~7Dy^F4{uBxv7 zs=K;+!e-NB`2F+eviqL~WB;PT(VvCEb+n9#U>zp7Fk;>}I!52@n0>2b_3e(`cRCIy zof+5qZpY>97891RA2DG^?ylLX3+G3yT^qdNEz2m(BjKls|1R2Udf&hHhChF8Y2n(^ z;-WwQ`ux1-T@Q=p`cE?vlHsKeHNSZ-a?gha*tqF?5~h3R75*SO)Xo$w1NtTu5EF{fi z5?eG$CMNgnBX&(ObzIIEUW|V_{$%vLpbIwI1N(IR@%WRQ zg-he#kfZUhif_>1_n7lnfBbm#OfU4gkMSSDJ{^4y(a)Cr;%j8~TL=JU{Oi%54`E>O zr~X2)2%8IJ^CPo)DMTy^n0h zdOosKA~)H-CjY~4pAvVUvUZ;;L;JF_vtlcf$_;{E(#wNDO=eMb&+hc{I8x45D5E5o zG!xc&D05Zo#=Y)`kpPn>Nz~0%Q!9c4xd$ijB;nl{Hda4M3e_NbpqGHhFu9QATGj5S zaUR}_RI`!<_rtiru#%TU>Chx6MqLP2R8vNIA(PuO$}$21KaqsI)W-*cSW>WXOd*8v zc3E;9%<2sy)dI}rQd1TqNxPyZ?x7$Baaob-p%A6AZ73^?;&nLed6Z^vLz74J;UP;T8lS8 z8@y#SKt0GyzGb)=<8Ms!X?_l^{0}aia(-}}T{`-MAMtdI%V-&8k3eo9NEw2ZC+00VcL$&>;YvFIZbxE34z^Da*NV`~h>h^=R{JU4z@LJM$Y^GmG x{oLqRM89$6n>BUt{TgiR4_HZ`j@sc73_9frgL1!LM)xLNTz%aw=c3av{|_`bFAV?y literal 0 HcmV?d00001 diff --git a/Automation/__pycache__/SignWindow.cpython-39.pyc b/Automation/__pycache__/SignWindow.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..380c8c45e96b31fd83dddb54b5c03470a7ed8770 GIT binary patch literal 2509 zcmZWr&2Jk;6rcU{dSfRcNt1w(FaimTAZbGtiKyxaf%ZTf8Z~Mqb69P5Hp!;z-7veG zw8oK2U8&;2Ux1Kv?5zhX%4h!t=Q>v|r$^-n@A``#yhTzgl$}o`>Iw z;45%{(PH>9vAB$pT?gT;!MMitSZio%)*CuzBQ~05!)#g&t7$jvW~ouqNY9L&X1P(; z*fqv2Za-q&4$B>*;d1>JtCw2m-DMH_dB|&NQoDh%lJ3^dov$sNTRMAo>Ep%P!r6rd z*S+i)`Bo~HYJQUV?h))@D|J(jtlliLtxtMy%X`xFo*P-i1>B?ep=+xUcK(G zhjCq#qgU3mT=+qLCrWs_7tkTYk1<$e7r=xJ?y-jcm~ALGA2|(!8{B-v8fM>-hQ&+V z!P@3!?qV)IW+rPmaBD=mx1!Bt@Ev{VBgB_5=v&#M##qietg9U`jkQ@9fjrQ_X>H~i zxykhoaaNmcTibTGgxOL1Sa-|ZARbz#(sHruLTU{(+`$_oN~^-{HtXm(t(u?kqj?2V z`o`ExZajaj16#Za*fU8U9_Y%pDV#r{&N@S!dTScobaw{SLJSZEK5}4@_CQ*Nq?Pf133>I@8jyK@yw`6dTZCEE3gtLVSnlui8%z)&$dOGn znHTrFtn72%->mD>%))p>P#~XZvh2ZDKg&Gt3H#@x`K`1W&QlZ5ulOxr1Y5=3`71@9 zHvK$GllhajncKN9syJd2Bbx(Znyb5-jWMoOKr7m~UIBF>cQE6pPiqr{Uu$ycsN<9b zl)2-FcuK`GMm7z?(FohjQ?#p7OR7@SS5(&PhVn?-Nzq(Ko~yx@pKOL+e_7W=4M&J~ zUXpi-qhl8^GKv_}9IZ7oWY%yZPnky9pf{9h1iEBc7dS-y$Mt={?LK;WTkirT+FA!N zJHrNjZz&m&V@PJ>U4;wEA$#TO5%s_kWvFF-SZm&1tCz$$R$_|C>mag(tgnUla%liG z#Tz6)1A;Krh@T-cOXL-oDPM~iSp|e4E2d`ZQ`(f)njLceRFMaihU13{+Qv}6KLEqE z9EjM_X5je@Q+{jYd0X$Agn&VDZMAn{&av(#P1St=tnMchK z&=7~=jx^JqFp=e5oa!Y$$%8n}puCX^bc?h$;uMpK>yy_ll@)1{wltdACe%E&&~{(R zkSsO(248|L86}*dqo&YDqZkh8EEVd+P__my{I5pgQ$J5{g28=(Tp@aBAaFW39XFZ2 zK^MKzZzAy?6wxaeX&O|LDk4=*rz=UixXb(SlzjpHjH&`4fM4s(kZ~tk^)jI^#R}-_ zdR{Z-MNE9f^S&TL2$JL4FL@qM1AI|WGeM0n$8O$V%@^lZaTCyglT4w%f?I{6ef%Cf{%7LtslO(I fTvcZd8KI&>Mo8yE-?NJpe`SejImp?pRWbephW&to literal 0 HcmV?d00001