main.py

import sys
import os
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import *
from PyQt5 import uic
from CFRASP import CFNET
 
# 파일 절대경로 (현재 디렉토리 기준)
current_dir = os.path.dirname(os.path.abspath(__file__))
 
# UI 파일 절대경로 (현재 디렉토리 기준)
ui_path = os.path.join(current_dir, "HMI_design_cfdi(test).ui")
form_class = uic.loadUiType(ui_path)[0]
 
# 이미지 파일 절대경로 (현재 디렉토리 기준)
ON_IMG = os.path.join(current_dir, "ON.png")
OFF_IMG = os.path.join(current_dir, "OFF.png")
 
# CFNET 객체 생성(CFIO 모듈 제어로직 객체)
cfnet = CFNET()
 
# 메인 윈도우 클래스 정의
class MyWindow(QMainWindow, form_class):
    def __init__(self):
        super().__init__()      
        self.setupUi(self)      
        #타이머 설정
        self.timer = QTimer(self)
        self.timer.setInterval(300)
        self.timer.timeout.connect(self.update_value)
        self.timer.start()
        #초기 cfdio 상태
        self.outport_state = False
        self.inport_state = False
        self.port_OUT_0.clicked.connect(self.CFDO_0_click)
 
    # 입력 업데이트 (INPUT LAMP)           
    def update_value(self):
        ###### !! CFNET CFDI 모듈 입력상태 읽기 !!######
        self.inport_state = cfnet.digitalRead(0, Pin=0)  
        ###############################################
        if self.inport_state == False:
            self.lamp_IN_0.setPixmap(QPixmap(OFF_IMG))
        else :
            self.lamp_IN_0.setPixmap(QPixmap(ON_IMG))
 
    # 출력 버튼 클릭 이벤트                
    def CFDO_0_click(self):
        self.outport_state = not self.outport_state
        ###### !!     CFNET CFDO port 0 쓰기   !!######
        cfnet.digitalWrite(0, pin =0, on_off= self.outport_state)
        ###############################################
        if self.outport_state == True:
            self.lamp_OUT_0.setPixmap(QPixmap(ON_IMG))
        else:
            self.lamp_OUT_0.setPixmap(QPixmap(OFF_IMG))
 
if __name__ == "__main__":
    print("Start Application")
    app = QApplication(sys.argv)       
    mywindow = MyWindow()              
    mywindow.show()                    
    app.exec_()

한단계 위로