Lesson 15_3 ini파일(or설정파일) 사용하기-파일읽기
안녕하세요. 오늘은 이번 글 주제의 마지막으로 설정파일을 이용해서 프로그램을 짜 보겠습니다.
기존대로 경로컨트롤러를 추가합니다. 하지만 이번에는 2개의 숫자 인디게이터(Offset_value, True_value)와 숫자형 컨트롤러(Sansor)를 추가합니다.
숫자형 컨트롤러 왼쪽에 디지털 디스플레이를 추가해서 쉽게 변화량을 확인할수 있도록 해 줍니다.
이제 ini파일을 읽거나 생성해야 합니다. 그림4,5번은 ini파일이 존재할시 사용하는 케이스 입니다. 현재 읽을 ini파일의 데이터 속성은 숫자이기 때문에 그림5에서 배정도로 변경을 해 줍니다.
만약 ini파일이 존재하지 않을시(그림6) ini파일을 생성하고 데이터는 0으로 저장합니다.
이제 while루프의 내부코딩에 들어가야 합니다. Offset_value는 아까 ini파일에서 읽거나 새로 생성한 값이 들어가 있습니다. 이 값은 변하기 전까지는 계속 유지가 됩니다. 그리고 sensor 컨트롤과 더해서 True_value값을 구할수가 있습니다. 이때 Offset_value값에 따라 True_value값이 변하게 됩니다.
하지만 현재는 1번 ini파일에서 Offset_value값을 읽으면 프로그램을 끄지 않는 이상 바꿀방법이 없습니다. 따라서 다음은 사용자가 원할때 실시간으로 바꿀수 있도록 알려드리겠습니다.
이번에도 숫자형 컨트롤(SetValue)과 버튼(SetOffset)을 프론트 패널에 만들어 줍니다.
이때 버튼은 래치로 변경해 줍니다.
위 그림12,13에서 사용자가 버튼을 누르면 케이스문이 '참'이 되면서 ini파일을 업데이트 하게 됩니다. 버튼은 래치 상태이기 때문에 누르고 바로 off가 되서 케이스문은 1번만 참이 됩니다.
ini파일에 offset값을 기록함과 동시에 시프트레지스터 쪽으로 데이터를 전달됩니다.
위 글들을 볼때 Offset값이 1개일때 만 코딩을 하였지만 실제 현장에서는 수십개 혹은 수백개까지 설정값을 저장 수정하는 경우가 많습니다. 또한 소스에 이렇한 설정값을 지정하게 되면 향후 유지 보수할때 항상 프로그래머가 가서 소스에서 수정해야 하는 일이 많습니다.
따라서 필요한 부분외의 부분은 text 또는 ini파일에 넣어서 실행하는 것을 추천드립니다.
![]() |
그림1) 파일경로 컨트롤 추가 |
![]() |
그림2)인디게이터 및 컨트롤(숫자) 추가 |
![]() |
그림3) 디지털 디스플레이 추가 |
숫자형 컨트롤러 왼쪽에 디지털 디스플레이를 추가해서 쉽게 변화량을 확인할수 있도록 해 줍니다.
![]() |
그림4) ini파일이 존재할시 데이터 읽기 |
![]() |
그림5) 읽을 ini파일의 데이터는 배정도로 셋팅 |
![]() |
그림6) ini파일이 존재하지 않을시 생성 |
이제 ini파일을 읽거나 생성해야 합니다. 그림4,5번은 ini파일이 존재할시 사용하는 케이스 입니다. 현재 읽을 ini파일의 데이터 속성은 숫자이기 때문에 그림5에서 배정도로 변경을 해 줍니다.
만약 ini파일이 존재하지 않을시(그림6) ini파일을 생성하고 데이터는 0으로 저장합니다.
![]() |
그림7) while루프 생성후 코딩 |
![]() |
그림8) 내부코딩1 |
![]() |
그림9) 내부코딩2 |
하지만 현재는 1번 ini파일에서 Offset_value값을 읽으면 프로그램을 끄지 않는 이상 바꿀방법이 없습니다. 따라서 다음은 사용자가 원할때 실시간으로 바꿀수 있도록 알려드리겠습니다.
![]() |
그림10) Offset셑팅값 저장 GUI |
이번에도 숫자형 컨트롤(SetValue)과 버튼(SetOffset)을 프론트 패널에 만들어 줍니다.
![]() |
그림11) 버튼을 놓을때 래치로 변경 |
이때 버튼은 래치로 변경해 줍니다.
![]() |
그림12) 셋팅버튼이 거짓일때 Offset값 통과 |
![]() |
그림13) 셋팅버튼이 참일때 Offset값 기록 |
위 그림12,13에서 사용자가 버튼을 누르면 케이스문이 '참'이 되면서 ini파일을 업데이트 하게 됩니다. 버튼은 래치 상태이기 때문에 누르고 바로 off가 되서 케이스문은 1번만 참이 됩니다.
ini파일에 offset값을 기록함과 동시에 시프트레지스터 쪽으로 데이터를 전달됩니다.
![]() |
그림14) ini파일 불러오기 |
![]() |
그림15) 초기 화면 |
![]() |
그림16) Offset이 0일때 True_Value값 |
![]() |
그림17) 새로운 Offest값 기입 |
![]() |
그림18) 버튼클릭후 True_Value변화 |
![]() |
그림19) ini파일도 동시에 수정 |
위 글들을 볼때 Offset값이 1개일때 만 코딩을 하였지만 실제 현장에서는 수십개 혹은 수백개까지 설정값을 저장 수정하는 경우가 많습니다. 또한 소스에 이렇한 설정값을 지정하게 되면 향후 유지 보수할때 항상 프로그래머가 가서 소스에서 수정해야 하는 일이 많습니다.
따라서 필요한 부분외의 부분은 text 또는 ini파일에 넣어서 실행하는 것을 추천드립니다.
댓글
댓글 쓰기