Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 24.93 KB | None | 0 0
  1. #! /usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3.  
  4. import datetime
  5. import locale
  6. import sys
  7. import time
  8. import qdarkstyle
  9. import threading
  10.  
  11. from PyQt5.QtCore import QElapsedTimer, QTimer
  12. from PyQt5.QtCore import Qt
  13. from PyQt5.QtCore import pyqtSlot
  14. from PyQt5.QtGui import QPixmap
  15. from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
  16.  
  17. from auu_ui import Ui_MainWindow
  18. from checksums import AuuCheckSums
  19. from chooseins import AuuChooseIns
  20.  
  21. from config import setup_logging
  22.  
  23. from mkio_http_client import MkioClient
  24.  
  25. import mkio_exch_structure as s
  26.  
  27. locale.setlocale(locale.LC_ALL, 'ru_RU.UTF-8')
  28.  
  29. logger = setup_logging(__name__)
  30.  
  31. AUU_CHANNEL = 0
  32. AUU_ADDRESS = 8
  33.  
  34. send_packet = [0] * 32
  35. get_packet = [0] * 32
  36.  
  37. condition = threading.Condition()
  38.  
  39. class StatusThread(threading.Thread):
  40.     def __init__(self, mkio_d):
  41.         super().__init__()
  42.         threading.Thread.__init__(self)
  43.         self.counter = 0
  44.         self.mkio_d = mkio_d
  45.  
  46.     def run(self):
  47.         global send_packet
  48.         global get_packet
  49.         while 1:
  50.             # Отправка запроса в НСВ
  51.             send_packet[0] = 0x1234  # Запрос
  52.             send_packet[30] = self.counter  # Счетчик запросов
  53.  
  54.             logger.info('Send request ' + str(self.counter))
  55.             if self.mkio_d.send(8, 2, send_packet) == 0:
  56.                 logger.info('Waiting answer')
  57.  
  58.             time.sleep(0.2)
  59.  
  60.             while 1:
  61.  
  62.                 # logger.info('Receiving answer')
  63.                 status, self.get_packet = self.mkio_d.receive(8, 1, 32)
  64.                 # print(self.get_packet)
  65.                 if self.get_packet[30] != self.counter:
  66.                     # logger.warning('Wrong counter receive: ' + str(self.get_packet[2]))
  67.                     time.sleep(0.2)
  68.                 else:
  69.                     logger.info('Answer received')
  70.                     break
  71.  
  72.             self.counter = self.counter + 1  # Увеличиваем счетчик запросов
  73.             if self.counter > 0xFFFF:  # Проверяем на переполнение
  74.                 self.counter = 1
  75.  
  76.  
  77. class AuuWidget(QMainWindow):
  78.     def __init__(self):
  79.         super().__init__()
  80.  
  81.         # Настройка окошка
  82.         self.setWindow()
  83.  
  84.         # Настройка таймеров
  85.         self.setTimers()
  86.  
  87.         # Настройка манчестера
  88.         self.mkio_d = MkioClient()
  89.  
  90.         self.counter = 1  # Счетчик запросов в НСВ
  91.         self.send_packet = [0] * 32  # Пакет данных отправляемый в НСВ
  92.         self.get_packet = [0] * 32  # Пакет данных получаемый из НСВ
  93.  
  94.         self.isStarted = False  # Флаг старта режима
  95.  
  96.         self.statusReceived = False  # Флаг состояния ответа от НСВ
  97.  
  98.  
  99.         # Статусы
  100.         self.canStart   = False
  101.         self.canPowerOn = False
  102.         self.canPrim    = False
  103.         self.canCaps    = False
  104.         self.canLaunch  = False
  105.  
  106.         self.current_sgi = 0
  107.  
  108.         self.powerOn    = False  # Питание
  109.         self.prim       = False  # Применение
  110.         self.caps       = False  # Крышки
  111.         self.launch     = False  # Пуск
  112.  
  113.         self.error      = False
  114.  
  115.  
  116.         self.ping = 1
  117.  
  118.     def setWindow(self):
  119.         self.ui = Ui_MainWindow()
  120.         self.ui.setupUi(self)
  121.  
  122.         qss_file = open('auu_style.qss').read()
  123.         self.setStyleSheet(qss_file)
  124.  
  125.         self.setMaximumHeight(768)
  126.         self.setMaximumWidth(1366)
  127.         # self.showFullScreen()
  128.         # self.showMaximized()
  129.  
  130.         self.ui.pushButton_connect.setProperty('active', True)
  131.         self.ui.pushButton_connect.setStyle(self.ui.pushButton_power.style())
  132.         self.ui.pushButton_connect.setEnabled(True)
  133.  
  134.         self.ui.pushButton_power.setEnabled(False)
  135.  
  136.         self.ui.pushButton_use.setEnabled(False)
  137.  
  138.         self.ui.pushButton_nsk.setEnabled(False)
  139.  
  140.         self.ui.pushButton_launch.setEnabled(False)
  141.  
  142.  
  143.         # Время работы АПП
  144.         self.ui.label_workTime.setVisible(False)
  145.         self.ui.label_workTimeCaption.setVisible(False)
  146.  
  147.         self.ui.label_workModeCaption.setText("Основной")
  148.  
  149.  
  150.     def setTimers(self):
  151.  
  152.         self.mainTimer = QElapsedTimer()
  153.         self.mainTimer.start()
  154.  
  155.         # Таймер обновления UI
  156.         self.timer = QTimer()
  157.         self.timer.setInterval(100)
  158.         self.timer.timeout.connect(self.updateTimer)
  159.         self.timer.start()
  160.  
  161.         # Таймер запросов на подключение к ПЭВМ
  162.         self.timer_ping = QTimer()
  163.         self.timer_ping.setInterval(500)
  164.         self.timer_ping.timeout.connect(self.pingTimer)
  165.  
  166.         # Таймер обновления статусов
  167.         self.timer_status = QTimer()
  168.         self.timer_status.setInterval(500)
  169.         self.timer_status.timeout.connect(self.statusTimer)
  170.  
  171.         # АПП исправно
  172.         self.appIsOk_timer = QElapsedTimer()
  173.  
  174.         self.openFrontCapTimer = QElapsedTimer()
  175.         self.openBackCapTimer = QElapsedTimer()
  176.  
  177.         self.closeFrontCapTimer = QElapsedTimer()
  178.         self.closeBackCapTimer = QElapsedTimer()
  179.  
  180.         self.powerTPKTimer = QElapsedTimer()
  181.         self.powerItem27Timer = QElapsedTimer()
  182.         self.powerItem115Timer = QElapsedTimer()
  183.  
  184.         self.itemSGITimer = QElapsedTimer()
  185.  
  186.         self.loadSNAUTimer = QElapsedTimer()
  187.         self.loadKRTimer = QElapsedTimer()
  188.  
  189.     def getTimeStamp(self):
  190.         return datetime.datetime.fromtimestamp(time.time()).strftime('[%d-%m-%Y %H:%M:%S] ')
  191.  
  192.     def addSysMessage(self, text):
  193.         self.ui.plainTextEdit.appendPlainText(self.getTimeStamp() + text)
  194.  
  195.     @pyqtSlot()
  196.     def on_pushButton_checkSums_clicked(self):
  197.         logger.info('Show checksums window')
  198.         checksums = AuuCheckSums()
  199.         checksums.exec()
  200.  
  201.     @pyqtSlot()
  202.     def on_pushButton_close_clicked(self):
  203.         self.close()
  204.  
  205.     @pyqtSlot()
  206.     def on_pushButton_connect_clicked(self):
  207.         logger.info('Command to connect')
  208.  
  209.         self.ui.pushButton_connect.setProperty('pushed', True)
  210.         self.ui.pushButton_connect.setProperty('active', False)
  211.         self.ui.pushButton_connect.setStyle(self.ui.pushButton_connect.style())
  212.         self.ui.pushButton_connect.setEnabled(False)
  213.  
  214.         self.isStarted = True
  215.  
  216.         self.timer_ping.start()
  217.  
  218.         self.ui.plainTextEdit.appendPlainText(self.getTimeStamp() + 'Старт выполнен')
  219.  
  220.  
  221.     @pyqtSlot()
  222.     def on_pushButton_power_clicked(self):
  223.         logger.info('Command to power on')
  224.  
  225.         self.ui.pushButton_power.setProperty('pushed', True)
  226.         self.ui.pushButton_power.setStyle(self.ui.pushButton_power.style())
  227.         self.ui.pushButton_power.setEnabled(False)
  228.  
  229.         self.ui.plainTextEdit.appendPlainText(self.getTimeStamp() + 'Выдана команда Подать питание')
  230.  
  231.         self.send_packet[21] |= 1 << 1
  232.  
  233.     @pyqtSlot()
  234.     def on_pushButton_use_clicked(self):
  235.         logger.info('Command to use')
  236.  
  237.         self.ui.pushButton_use.setProperty('pushed', True)
  238.         self.ui.pushButton_use.setStyle(self.ui.pushButton_use.style())
  239.         self.ui.pushButton_use.setEnabled(False)
  240.  
  241.         self.ui.plainTextEdit.appendPlainText(self.getTimeStamp() + 'Выдана команда Применение')
  242.  
  243.         self.send_packet[21] |= 1 << 2
  244.  
  245.  
  246.     @pyqtSlot()
  247.     def on_pushButton_nsk_clicked(self):
  248.         logger.info('Command to nsk')
  249.  
  250.         self.ui.pushButton_nsk.setProperty('pushed', True)
  251.         self.ui.pushButton_nsk.setStyle(self.ui.pushButton_nsk.style())
  252.         self.ui.pushButton_nsk.setEnabled(False)
  253.  
  254.         self.ui.plainTextEdit.appendPlainText(self.getTimeStamp() + 'Выдана команда Открыть крышки ТПК')
  255.  
  256.         self.send_packet[21] |= 1 << 3
  257.  
  258.     @pyqtSlot()
  259.     def on_pushButton_launch_clicked(self):
  260.         logger.info('Command to launch')
  261.  
  262.         self.ui.pushButton_launch.setProperty('pushed', True)
  263.         self.ui.pushButton_launch.setStyle(self.ui.pushButton_launch.style())
  264.         self.ui.pushButton_launch.setEnabled(False)
  265.  
  266.         self.ui.plainTextEdit.appendPlainText(self.getTimeStamp() + 'Выдана команда Пуск')
  267.  
  268.         self.send_packet[21] |= 1 << 4
  269.  
  270.     @pyqtSlot()
  271.     def on_pushButton_cancel_clicked(self):
  272.         logger.info('Command to cancel')
  273.  
  274.         self.ui.pushButton_cancel.setProperty('pushed', True)
  275.         self.ui.pushButton_cancel.setStyle(self.ui.pushButton_cancel.style())
  276.         self.ui.pushButton_cancel.setEnabled(False)
  277.  
  278.         self.ui.plainTextEdit.appendPlainText(self.getTimeStamp() + 'Выдана команда Отбой ЦГ')
  279.  
  280.         self.ui.label_stop.startBlink('red', 'gold')
  281.  
  282.         self.send_packet[21] |= 1 << 5
  283.  
  284.         self.ui.pushButton_connect.setDisabled(True)
  285.         self.ui.pushButton_power.setDisabled(True)
  286.         self.ui.pushButton_use.setDisabled(True)
  287.         self.ui.pushButton_nsk.setDisabled(True)
  288.         self.ui.pushButton_launch.setDisabled(True)
  289.  
  290.     def printElapsedTime(self, timer:QElapsedTimer, label:QLabel):
  291.         if timer.isValid():
  292.             seconds = (timer.elapsed() / 1000) % 60
  293.             minutes = (timer.elapsed() / (1000 * 60)) % 60
  294.             hours = (timer.elapsed() / (1000 * 60 * 60)) % 24
  295.             if int(minutes) > 0:
  296.                 if int(hours) > 0:
  297.                     label.setText(" {0:2d}ч {1:2d}м {2:2d}с".format(int(hours), int(minutes), int(seconds)))
  298.                 else:
  299.                     label.setText(" {0:2d}м {1:2d}с".format(int(minutes), int(seconds)))
  300.             else:
  301.                 label.setText(" {0:02d}с".format(int(seconds)))
  302.  
  303.  
  304.     @pyqtSlot()
  305.     def updateTimer(self):
  306.  
  307.         self.ui.label_currentTimeCaption.setText(time.asctime())
  308.  
  309.         self.printElapsedTime(self.openFrontCapTimer, self.ui.label_pkCommandTime)
  310.  
  311.         self.printElapsedTime(self.openBackCapTimer, self.ui.label_zkCommandTime)
  312.  
  313.         self.printElapsedTime(self.closeFrontCapTimer, self.ui.label_pkReportTime)
  314.  
  315.         self.printElapsedTime(self.closeBackCapTimer, self.ui.label_zkReportTime)
  316.  
  317.         self.printElapsedTime(self.itemSGITimer, self.ui.label_itemInSGITime)
  318.  
  319.         self.printElapsedTime(self.loadSNAUTimer, self.ui.label_7)
  320.  
  321.         self.printElapsedTime(self.loadKRTimer, self.ui.label_8)
  322.  
  323.  
  324.     @pyqtSlot()
  325.     def pingTimer(self):
  326.         if self.mkio_d.ping() == 0:
  327.             logger.info('Ping is ok')
  328.             self.ui.label_connectionStateText.stopBlink('lightGreen')
  329.  
  330.             self.timer_ping.stop()
  331.  
  332.             status = self.mkio_d.open("OU", AUU_CHANNEL, AUU_ADDRESS)
  333.             if status == 0:
  334.                 logger.info('Manchester open successfully')
  335.                 self.ui.label_connectionStateText.stopBlink('lime')
  336.                 self.ui.label_appIsOkText.setStyleSheet("background-color: lime;")
  337.                 self.appIsOk_timer.start()
  338.  
  339.                 zero_pack = [0] * 32
  340.                 self.mkio_d.send(8, 1, zero_pack)
  341.  
  342.                 logger.warning("Send start message to APP")
  343.  
  344.                 packet = [0] * 32
  345.                 packet[0] = 0xC0C0
  346.                 packet[1] = 5
  347.                 packet[2] = 0xF
  348.                 packet[3] = 2
  349.                 packet[4] = 0xC0D4
  350.  
  351.                 choose_ins = AuuChooseIns()
  352.                 choose_ins.exec()
  353.  
  354.                 logger.warning('Ins mode: ' + str(choose_ins.result()))
  355.  
  356.                 if choose_ins.result() == 1:
  357.                     packet[3] = 1
  358.                     self.ui.plainTextEdit.appendPlainText(
  359.                         self.getTimeStamp() + 'Выбран режим работы с одной инерциальной системой')
  360.                 elif choose_ins.result() == 2:
  361.                     packet[3] = 2
  362.                     self.ui.plainTextEdit.appendPlainText(
  363.                         self.getTimeStamp() + 'Выбран режим работы с двумя инерциальными системами')
  364.                 else:
  365.                     self.ui.plainTextEdit.appendPlainText(self.getTimeStamp() + 'Ошибка при установке работы ИНС')
  366.  
  367.                 packet[4] += packet[3]
  368.  
  369.                 logger.warning(self.mkio_d.send(8, 2, packet))
  370.  
  371.                 self.ui.plainTextEdit.appendPlainText(self.getTimeStamp() + 'Старт ЦГ выполнен')
  372.  
  373.                 time.sleep(2)
  374.  
  375.                 self.timer_status.start()
  376.  
  377.                 self.send_packet[21] |= 1 << 0
  378.  
  379.                 self.ui.label_connectionState.setPixmap(QPixmap('./icons/connected.svg').scaled(32, 32, Qt.KeepAspectRatio))
  380.  
  381.                 self.ui.plainTextEdit.appendPlainText(self.getTimeStamp() + 'Связь с СПУ-Д установлена')
  382.  
  383.  
  384.             else:
  385.                 logger.error('Error while opening manchester')
  386.                 self.ui.label_connectionStateText.stopBlink('red')
  387.  
  388.  
  389.  
  390.         else:
  391.             # self.ui.label_appIsOkText.startBlink("red", "yellow")
  392.             logger.info('Cant connect')
  393.             if self.ping:
  394.                 self.ui.label_connectionState.setPixmap(QPixmap('./icons/disconnected.svg').scaled(32, 32, Qt.KeepAspectRatio))
  395.                 self.ping = 0
  396.             else:
  397.                 self.ui.label_connectionState.setPixmap(QPixmap('./icons/offline.svg').scaled(32, 32, Qt.KeepAspectRatio))
  398.                 self.ping = 1
  399.  
  400.  
  401.     @pyqtSlot()
  402.     def statusTimer(self):
  403.         # Отправка запроса в НСВ
  404.         self.send_packet[0] = 0x1234  # Запрос
  405.         self.send_packet[30] = self.counter  # Счетчик запросов
  406.  
  407.         answer_timer = 0
  408.  
  409.         # if(self.statusReceived is True):
  410.         logger.info('Send request')
  411.         if self.mkio_d.send(8, 2, self.send_packet) == 0:
  412.             logger.info('Request sanded. Waiting answer')
  413.         # self.send_packet[0] = 0
  414.         # self.mkio_d.send(8, 2, self.send_packet)
  415.         logger.debug("sent counter = " + str(self.counter))
  416.         # else:
  417.         time.sleep(0.2)
  418.         while (1):
  419.             # logger.info('Receiving answer')
  420.             status, self.get_packet = self.mkio_d.receive(8, 1, 32)
  421.             # if status == 0:
  422.             # print(self.get_packet)
  423.             if self.get_packet[30] != self.counter:
  424.                 # logger.warning('Wrong counter receive: ' + str(self.get_packet[2]))
  425.                 pass
  426.             else:
  427.                 logger.info('Answer received')
  428.                 # self.timer_manch.start()
  429.                 break
  430.  
  431.             '''
  432.            time.sleep(0.1)
  433.            answer_timer += 1
  434.            if answer_timer >= 50:
  435.                break
  436.            '''
  437.  
  438.         self.parseStatus(self.get_packet)  # Парсим полученный от НСВ статус
  439.  
  440.         self.counter = self.counter + 1  # Увеличиваем счетчик запросов
  441.         if self.counter > 0xFFFF:  # Проверяем на переполнение
  442.             self.counter = 1
  443.  
  444.     def checkStatus(self, status, parameter):
  445.         if self.get_packet[status] & 1 << parameter == 1 << parameter:
  446.             return True
  447.         else:
  448.             return False
  449.  
  450.     def status_requester(self, condition: threading.Condition):
  451.         counter = 0
  452.         while 1:
  453.             with condition:
  454.                 # Отправка запроса в НСВ
  455.                 self.send_packet[0] = 0x1234  # Запрос
  456.                 self.send_packet[30] = counter  # Счетчик запросов
  457.  
  458.                 logger.info('Send request ' + str(counter))
  459.                 if self.mkio_d.send(8, 2, send_packet) == 0:
  460.                     logger.info('Waiting answer')
  461.  
  462.                 counter += 1  # Увеличиваем счетчик запросов
  463.                 if counter > 0xFFFF:  # Проверяем на переполнение
  464.                     counter = 1
  465.  
  466.                 while 1:
  467.                     # logger.info('Receiving answer')
  468.                     status, self.get_packet = self.mkio_d.receive(8, 1, 32)
  469.                     logger.debug(self.get_packet)
  470.                     if self.get_packet[30] != self.counter:
  471.                         # logger.warning('Wrong counter receive: ' + str(self.get_packet[2]))
  472.                         time.sleep(0.2)
  473.                     else:
  474.                         logger.info('Answer received')
  475.                         condition.notify()
  476.                         break
  477.  
  478.  
  479.  
  480.     def parseStatus(self, status):
  481.  
  482.         # Кнопки управления
  483.         if self.checkStatus(s.BUT, s.but_start):
  484.             self.canStart = True
  485.  
  486.         if self.checkStatus(s.BUT, s.but_power_on):
  487.             if self.powerOn is False:
  488.                 logger.info("Press power")
  489.                 self.canPowerOn = True
  490.                 self.addSysMessage("Ожидание команды \"Подать питание\"")
  491.                 self.powerOn = True
  492.  
  493.         if self.checkStatus(s.BUT, s.but_prim):
  494.             if self.prim is False:
  495.                 logger.info("Press prim")
  496.                 self.canPrim = True
  497.                 self.addSysMessage("Ожидание команды \"Применение\"")
  498.                 self.prim = True
  499.  
  500.         if self.checkStatus(s.BUT, s.but_caps):
  501.             if self.caps is False:
  502.                 logger.info("Press caps")
  503.                 self.canCaps = True
  504.                 self.addSysMessage("Ожидание команды \"Открыть ТПК\"")
  505.                 self.caps = True
  506.  
  507.         if self.checkStatus(s.BUT, s.but_launch):
  508.             if self.launch is False:
  509.                 logger.info("Press launch")
  510.                 self.canLaunch = True
  511.                 self.addSysMessage("Ожидание команды \"Пуск\"")
  512.                 self.launch = True
  513.  
  514.         # СГИ
  515.         if status[s.SGI] > 0:
  516.             if self.current_sgi != status[s.SGI]:
  517.                 self.itemSGITimer.restart()
  518.                 self.current_sgi = status[s.SGI]
  519.             self.ui.label_itemInSGI.setText("Изделие в СГИ " + str(status[s.SGI]))
  520.             self.ui.label_itemInSGI.setStyleSheet("background-color: deepskyblue;")
  521.  
  522.         # Загрузка СНАУ
  523.         if self.get_packet[18] > 0:
  524.             if self.get_packet[18] == 100:
  525.                 self.loadSNAUTimer = QElapsedTimer()
  526.                 self.ui.progressBar.setValue(100)
  527.             else:
  528.                 self.ui.progressBar.setValue(self.get_packet[18])
  529.  
  530.             if not self.loadSNAUTimer.isValid() and self.get_packet[18] != 100:
  531.                 self.loadSNAUTimer.start()
  532.  
  533.         # Загрузка КР
  534.         if self.get_packet[19] > 0:
  535.  
  536.             if self.get_packet[19] == 100:
  537.                 self.loadKRTimer = QElapsedTimer()
  538.                 self.ui.progressBar_2.setValue(100)
  539.  
  540.             else:
  541.                 self.ui.progressBar_2.setValue(self.get_packet[19])
  542.  
  543.             if not self.loadKRTimer.isValid() and self.get_packet[19] != 100:
  544.                 self.loadKRTimer.start()
  545.  
  546.         # Отбой
  547.         if (self.get_packet[17] & 1 << 5) == 1 << 5:
  548.             if self.error is False:
  549.                 self.error = True
  550.                 self.addSysMessage('Получена команда Отбой ЦГ')
  551.                 self.addSysMessage('Отбой ЦГ!')
  552.                 self.ui.label_stop.startBlink('red', 'yellow')
  553.                 self.send_packet[21] |= 1 << 5
  554.  
  555.                 logger.info('Received close command')
  556.  
  557.         # Питание ТПК
  558.         if (self.get_packet[12] & 1 << 6) == 1 << 6:
  559.             self.ui.label_tpkPowerText.setStyleSheet('background-color: lime')
  560.             if not self.powerTPKTimer.isValid():
  561.                 self.powerTPKTimer.start()
  562.         # Питание Изделие 27
  563.         if (self.get_packet[13] & 1 << 0) == 1 << 0:
  564.             self.ui.label_itemPowerText.setStyleSheet('background-color: lime')
  565.             if not self.powerItem27Timer.isValid():
  566.                 self.powerItem27Timer.start()
  567.         # Питание 115
  568.         if (self.get_packet[13] & 1 << 1) == 1 << 1:
  569.             self.ui.label_itemPower115Text.setStyleSheet('background-color: lime')
  570.             if not self.powerItem115Timer.isValid():
  571.                 self.powerItem115Timer.start()
  572.  
  573.         # Интегральная исправность
  574.  
  575.         # Стыковка ТПК
  576.         if (self.get_packet[12] & 1 << 0) == 1 << 0:
  577.             if (self.get_packet[12] & 1 << 1) == 1 << 1:
  578.                 self.ui.label_tpkDock.setStyleSheet('background-color: red')
  579.             else:
  580.                 self.ui.label_tpkDock.setStyleSheet('background-color: lime')
  581.  
  582.         # Стыковка Изделия
  583.         if (self.get_packet[12] & 1 << 2) == 1 << 2:
  584.             if (self.get_packet[12] & 1 << 3) == 1 << 3:
  585.                 self.ui.label_dockItemInTpk.setStyleSheet('background-color: red')
  586.             else:
  587.                 self.ui.label_dockItemInTpk.setStyleSheet('background-color: lime')
  588.  
  589.         # Исходное состояние
  590.         if (self.get_packet[12] & 1 << 4) == 1 << 4:
  591.             if (self.get_packet[12] & 1 << 5) == 1 << 5:
  592.                 self.ui.label_itemDefault.setStyleSheet('background-color: red')
  593.             else:
  594.                 self.ui.label_itemDefault.setStyleSheet('background-color: lime')
  595.  
  596.         # Обмен по МКИО
  597.  
  598.         # Передняя крышка
  599.         if self.checkStatus(s.TPK, s.tpk_front_opening):
  600.             if self.checkStatus(s.TPK, s.tpk_front_opened):
  601.                 if self.openFrontCapTimer.isValid():
  602.                     self.openFrontCapTimer = QElapsedTimer()
  603.                 self.ui.label_pkOpened.setStyleSheet('background-color: lime')
  604.                 self.ui.label_pkCommandText.stopBlink('deepskyblue')
  605.             else:
  606.                 self.ui.label_pkCommandText.startBlink('yellow', 'lime')
  607.                 if not self.openFrontCapTimer.isValid():
  608.                     self.openFrontCapTimer.start()
  609.  
  610.         # Задняя крышка
  611.         if self.checkStatus(s.TPK, s.tpk_back_opening):
  612.             if self.checkStatus(s.TPK, s_tpk_back_opened):
  613.                 if self.openBackCapTimer.isValid():
  614.                     self.openBackCapTimer = QElapsedTimer()
  615.                 self.ui.label_zkOpened.setStyleSheet('background-color: lime')
  616.                 self.ui.label_zkCommandText.stopBlink('deepskyblue')
  617.             else:
  618.                 self.ui.label_zkCommandText.startBlink('yellow', 'lime')
  619.                 if not self.openBackCapTimer.isValid():
  620.                     self.openBackCapTimer.start()
  621.  
  622.  
  623.  
  624.  
  625.     def keyPressEvent(self, event):
  626.  
  627.         # Установлене связи с СПУ
  628.         '''if event.key() == Qt.Key_S and event.modifiers() & Qt.ControlModifier and self.isStarted == False:
  629.            self.timer_ping.start()
  630.            self.isStarted = True
  631.            self.ui.plainTextEdit.appendPlainText(self.getTimeStamp() + 'Старт выполнен')
  632.            self.ui.label_NextCommand.setStyleSheet("background-color: lightGray; color: gray;")
  633.            self.ui.label_CurrenOperation.setText("Установление связи с СП")
  634. '''
  635.         # Старт основного режима
  636.         if event.key() == Qt.Key_F and event.modifiers() & Qt.ControlModifier:
  637.             logger.warning("start")
  638.  
  639.             packet = [0] * 32
  640.             packet[0] = 0xC0C0
  641.             packet[1] = 5
  642.             packet[2] = 0xF
  643.             packet[3] = 2
  644.             packet[4] = 0xC0D6
  645.  
  646.             choose_ins = AuuChooseIns()
  647.             choose_ins.exec()
  648.             logger.warning(choose_ins.result())
  649.             if choose_ins.result() == 1:
  650.                 packet[3] = 1
  651.                 self.ui.plainTextEdit.appendPlainText(
  652.                     self.getTimeStamp() + 'Выбран режим работы с одной инерциальной системой')
  653.             elif choose_ins.result() == 2:
  654.                 packet[3] = 2
  655.                 self.ui.plainTextEdit.appendPlainText(
  656.                     self.getTimeStamp() + 'Выбран режим работы с двумя инерциальными системами')
  657.             else:
  658.                 self.ui.plainTextEdit.appendPlainText(self.getTimeStamp() + 'Ошибка при установке работы ИНС')
  659.  
  660.             self.ui.plainTextEdit.appendPlainText(self.getTimeStamp() + 'Старт ЦГ выполнен')
  661.  
  662.             logger.warning(self.mkio_d.send(8, 2, packet))
  663.  
  664.             time.sleep(2)
  665.  
  666.             self.timer_status.start()
  667.  
  668.             self.send_packet[21] |= 1 << 0
  669.  
  670. if __name__ == "__main__":
  671.     app = QApplication(sys.argv)
  672.  
  673.     app.setAttribute(Qt.AA_UseHighDpiPixmaps)
  674.  
  675.     auu = AuuWidget()
  676.     auu.show()
  677.  
  678.     app.setStyleSheet(qdarkstyle.load_stylesheet_pyqt5())
  679.  
  680.     #cs = AuuCheckSums()
  681.     #cs.show()
  682.  
  683.     sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement