Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
modularpi:python:pyhmiprogramming:index [2026/02/15 02:35] – [HMI 동작 방식 및 구성] adminmodularpi:python:pyhmiprogramming:index [2026/02/15 03:35] (current) – [Python 프로그램 로직 (백엔드)] admin
Line 26: Line 26:
 또한, 하드웨어 입·출력 제어는 CFRASP.py 라이브러리를 통해 Python(main.py) 코드에서 처리되며 CFNET I/O 모듈(CFDI, CFDO 등)에 전달됩니다.\\ 또한, 하드웨어 입·출력 제어는 CFRASP.py 라이브러리를 통해 Python(main.py) 코드에서 처리되며 CFNET I/O 모듈(CFDI, CFDO 등)에 전달됩니다.\\
 즉, **UI(.ui 파일) 동작 ↔ Python 프로그램(main.py) 로직 <-> CFNET I/O 제어(CFRASP.py)**로 연결되는 구조로 HMI 시스템이 동작합니다.\\ 즉, **UI(.ui 파일) 동작 ↔ Python 프로그램(main.py) 로직 <-> CFNET I/O 제어(CFRASP.py)**로 연결되는 구조로 HMI 시스템이 동작합니다.\\
- 
-\\ 
- 
- 
- 
- 
  
  
Line 39: Line 33:
 ===2.) 위젯 객체 이름 정의=== ===2.) 위젯 객체 이름 정의===
 버튼(Button), 라벨(Label/램프 이미지), 텍스트(Text) 등 UI 요소는 사용자가 지정한 객체 이름(Object Name) 으로 .ui 파일에 저장됩니다. 버튼(Button), 라벨(Label/램프 이미지), 텍스트(Text) 등 UI 요소는 사용자가 지정한 객체 이름(Object Name) 으로 .ui 파일에 저장됩니다.
-{{ :modularpi:uipyqtsetting:ui위젯_객체.png?nolink |}} 
  
 +{{ :modularpi:python:pyhmiprogramming:widget_object.png?nolink |}}
 =====Python 프로그램 로직 (백엔드)===== =====Python 프로그램 로직 (백엔드)=====
 HMI 프로젝트를 구성할 때에는 **'main.py', 'UI 파일(.ui)', 'CFRASP.py'**의 총 3개 파일이 Modular Pi의 프로젝트 폴더에 포함되어 있어야 합니다.\\ HMI 프로젝트를 구성할 때에는 **'main.py', 'UI 파일(.ui)', 'CFRASP.py'**의 총 3개 파일이 Modular Pi의 프로젝트 폴더에 포함되어 있어야 합니다.\\
 main.py 프로그램 로직은 QTimer를 사용하여 **300ms 주기**로 CFDI의 0번 포트 입력 값을 읽어 UI에 반영하며, 사용자가 버튼을 눌렀을 때는 CFDO의 0번 포트에 ON/OFF 출력 신호를 전송하는 역할을 합니다.\\ main.py 프로그램 로직은 QTimer를 사용하여 **300ms 주기**로 CFDI의 0번 포트 입력 값을 읽어 UI에 반영하며, 사용자가 버튼을 눌렀을 때는 CFDO의 0번 포트에 ON/OFF 출력 신호를 전송하는 역할을 합니다.\\
 \\ \\
-☞ [[modularpi:pyhmiprogramming:uimain_code|[main.py 전체 코드 보기]]]\\+☞ [[modularpi:pyhmiprogramming:uimain_code:|[main.py 전체 코드 보기]]]\\ 
 +☞ [[modularpi:python:pyhmiprogramming:uimain_code:|[main.py 전체 코드 보기]]]\\
  
 ===1.) main.py 코드 구조 === ===1.) main.py 코드 구조 ===
 HMI 프로그램의 기본 환경을 설정하며, 프로그램의 실행 경로를 기준으로 UI 파일(.ui)과 이미지 파일을 불러오고, PyQt UI 구성을 위한 클래스(form_class)를 생성하는 역할을 합니다.\\ 또한, CFNET I/O 제어 라이브러리를 사용할 수 있도록 준비합니다. HMI 프로그램의 기본 환경을 설정하며, 프로그램의 실행 경로를 기준으로 UI 파일(.ui)과 이미지 파일을 불러오고, PyQt UI 구성을 위한 클래스(form_class)를 생성하는 역할을 합니다.\\ 또한, CFNET I/O 제어 라이브러리를 사용할 수 있도록 준비합니다.
-{{ :modularpi:uipyqtsetting:hmi_main_.png?nolink |}}+ 
 +{{ :modularpi:python:pyhmiprogramming:hmi_main_1.png?nolink |}}
  
 ===2.) 메인 UI폼 클래스 구조 및 처리로직(MyWindow 클래스) === ===2.) 메인 UI폼 클래스 구조 및 처리로직(MyWindow 클래스) ===
Line 58: Line 54:
   * QTimer를 통해 읽어온 입력 상태에 따라 **램프 이미지를 갱신하는 등, 변경된 하드웨어 상태를 UI에 실시간으로 반영**하는 역할을 합니다.   * QTimer를 통해 읽어온 입력 상태에 따라 **램프 이미지를 갱신하는 등, 변경된 하드웨어 상태를 UI에 실시간으로 반영**하는 역할을 합니다.
  
-{{ :modularpi:uipyqtsetting:ui_class.png?nolink |}}+{{ :modularpi:python:pyhmiprogramming:ui_class.png?nolink |}}
  
 [[..:index|Python을 이용한 CFNET I/O 개발]] [[..:index|Python을 이용한 CFNET I/O 개발]]