automation file
This commit is contained in:
		
							parent
							
								
									a76d3322ca
								
							
						
					
					
						commit
						23ea76a395
					
				
							
								
								
									
										246
									
								
								Main.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										246
									
								
								Main.py
									
									
									
									
									
										Normal 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() | ||||
| # ============================================================================= | ||||
| 
 | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user