diff --git a/Main.py b/Main.py new file mode 100644 index 0000000..ce6d951 --- /dev/null +++ b/Main.py @@ -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() +# ============================================================================= +