automation file

This commit is contained in:
Анна Назарчук 2022-10-31 12:45:59 +03:00
parent a76d3322ca
commit 23ea76a395

246
Main.py Normal file
View File

@ -0,0 +1,246 @@
import os
import sys
from PyQt6.QtCore import Qt
from PyQt6.QtGui import QAction
from PyQt6.QtWidgets import (QHBoxLayout,
QApplication,
QCheckBox,
QComboBox,
QDateEdit,
QDateTimeEdit,
QDial,
QDoubleSpinBox,
QFontComboBox,
QLabel,
QLCDNumber,
QLineEdit,
QMainWindow,
QProgressBar,
QPushButton,
QRadioButton,
QSlider,
QSpinBox,
QTimeEdit,
QVBoxLayout,
QWidget,
QTableWidget,
QGridLayout,
QMenu,
QTableWidgetItem,
)
class AbstractWindow(QMainWindow):
def __init__(self):
super().__init__()
self.create_actions()
self.create_menuBar()
def create_menuBar(self):
menuBar = self.menuBar()
self.fileMenu = QMenu("&Файл", self)
menuBar.addMenu(self.fileMenu)
self.helpMenu = QMenu("&Помощь")
menuBar.addMenu(self.helpMenu)
self.fileMenu.addAction(self.exitAction)
self.helpMenu.addAction(self.helpContentAction)
self.helpMenu.addAction(self.aboutAction)
def create_actions(self):
self.exitAction = QAction("&Выход", self)
self.exitAction.triggered.connect(self.exit_click)
self.helpContentAction = QAction("&Инструкция", self)
self.helpContentAction.triggered.connect(self.help_click)
self.aboutAction = QAction("&О программе", self)
self.aboutAction.triggered.connect(self.about_click)
def exit_click(self):
self.close()
def help_click(self):
print('Help')
# TODO
def about_click(self):
print('About')
# TODO
class Start:
def __init__(self):
self.number = 0
self.filename = ''
if not QApplication.instance():
self.app = QApplication(sys.argv)
else:
self.app = QApplication.instance()
self.window = StartWindow(self)
self.draw()
self.app.exec()
def __del__(self):
print('destruct')
def draw(self):
self.window.show()
def change_number(self):
if self.number==2:
self.window.close()
self.window = MainExperiment1Window(self)
if self.number == 1:
pass
self.draw()
class StartWindow(AbstractWindow):
def __init__(self, parent):
super().__init__()
self.setWindowTitle('Эффект Холла в полупроводниках')
self.parent = parent
self.centralwidget = QWidget()
self.resize(1400, 800)
self.setCentralWidget(self.centralwidget)
self.lineEdit = QLineEdit(placeholderText='Введите фамилию')
self.lineEdit.returnPressed.connect(self.enter_name)
self.flow = QPushButton('измерение потока')
self.flow.clicked.connect(self.flow_click)
self.flow.setEnabled(False)
self.main = QPushButton('основной эксперимент')
self.main.clicked.connect(self.main_click)
self.main.setEnabled(False)
self.hbox_layout = QGridLayout(self.centralwidget)
self.hbox_layout.setRowStretch(1, 1)
self.hbox_layout.addWidget(self.lineEdit, 1, 0, 1, 2)
self.hbox_layout.addWidget(self.flow, 2, 0)
self.hbox_layout.addWidget(self.main, 2, 1)
def flow_click(self):
self.parent.number=1
self.parent.change_number()
def main_click(self):
self.parent.number=2
self.parent.change_number()
def enter_name(self):
self.parent.filename = self.lineEdit.text()
self.flow.setEnabled(True)
self.main.setEnabled(True)
self.lineEdit.setReadOnly(True)
class MainExperiment1Window(AbstractWindow):
def __init__(self, parent):
super().__init__()
self.setWindowTitle('Основной эксперимент')
self.parent = parent
self.centralwidget = QWidget()
self.resize(1400, 800)
self.setCentralWidget(self.centralwidget)
self.but = QPushButton('Измерение')
self.but.clicked.connect(self.but_click)
self.setCentralWidget(self.but)
# grid_layout = QGridLayout(self) # Create QGridLayout
# self.centralwidget.setLayout(grid_layout) # Set this layout in central widget
# table = QTableWidget(self) # Create a table
# table.setColumnCount(3) #Set three columns
# table.setRowCount(1) # and one row
# # Set the table headers
# table.setHorizontalHeaderLabels(["Header 1", "Header 2", "Header 3"])
# #Set the tooltips to headings
# table.horizontalHeaderItem(0).setToolTip("Column 1 ")
# table.horizontalHeaderItem(1).setToolTip("Column 2 ")
# table.horizontalHeaderItem(2).setToolTip("Column 3 ")
# table.setItem(0, 0, QTableWidgetItem("Text in column 1"))
# table.setItem(0, 1, QTableWidgetItem("Text in column 2"))
# table.setItem(0, 2, QTableWidgetItem("Text in column 3"))
# # Do the resize of the columns by content
# table.resizeColumnsToContents()
# grid_layout.addWidget(table, 0, 0) # Adding the table to the grid
def but_click(self):
volt_name = os.path.join('/dev', 'usbtmc1')
f_volt = open (volt_name, 'w')
f_volt.write('Measure:Voltage:DC?\n')
f_volt.close()
amp_name = os.path.join('/dev', 'usbtmc2')
f_amp = open (amp_name, 'w')
f_amp.write('Measure:Current:DC?\n')
f_amp.close()
f_volt = open (volt_name, 'r')
v = f_volt.read(15)
f_amp = open (amp_name, 'r')
a = f_amp.read(15)
f_volt.close()
f_amp.close()
s = v +' V '+a+' A '+'\n'
out = open(self.parent.filename, 'a')
out.write(s)
out.close()
# start = Start()
# del start
import time
import serial
# configure the serial connections (the parameters differs on the device you are connecting to)
ser = serial.Serial(
port='/dev/ttyUSB0',
baudrate=9600,
timeout=1
)
ser.isOpen()
msg = 'SYSTem:REMote\n'
ser.write(msg.encode('ascii'))
# Reading the data from the serial port. This will be running in an infinite loop.
while 1 :
msg = 'Read?\n'
ser.write(msg.encode('ascii'))
time.sleep(1)
bytesToRead = ser.inWaiting()
data = ser.read(bytesToRead)
print(data)
# =============================================================================
# f = open (os.path.join('/dev', 'usbtmc1'), 'w')
# f.write('Measure:Voltage:DC?\n')
# f.close()
# f = open (os.path.join('/dev', 'usbtmc1'), 'r')
# a = f.read(15)
# print(a)
# f.close()
#
# f = open (os.path.join('/dev', 'usbtmc2'), 'w')
# f.write('Measure:Current:DC?\n')
# f.close()
# f = open (os.path.join('/dev', 'usbtmc2'), 'r')
# a = f.read(15)
# print(a)
# f.close()
# =============================================================================