페이지

2016년 3월 16일 수요일

pvdevelop 프로젝트 처음 만든 후 작동 테스트

1. 신규 pvserver 프로젝트 생성

 메뉴에서 new pvserver 아이콘을 누르면 그림 1과 같은 새로운 pvserver 생성용 창이 열린다. 이 창에서 새로운 pvsever의 이름, 홈 디렉토리, 프로그래밍 언어를 선택하면 새로운 pvserver 프로젝트가 생성된다.

그림 1. 신규 pvserver 생성 창

그림 2. 신규 pvserver 프로그래밍 언어 선택

pvsever에서 사용할 수 있는 프로그래밍 언어는 C/C++, Lua, Python이며, 기본은 C/C++이 선택된다.
  • C/C++
  • Lua
    Scripting Language for embedding
    공식 홈페이지 단순 명료하게 강력하고, 빠르면서 가볍고, 임베딩이 가능한 스크립 언어라고 설명되어 있다. (한번도 사용해 보지 않아서 모르겠다.)
    이 언어는 매우 작은 라이브러리를 사용하기 때문에 임베디드 시스템에 유리하며, 추가적인 C/C++ 개발툴이 필요없다고 언급되어 있다. 추가적으로 스크립트 언어이기 때문에 서버가 운전 중에도 수정이 가능하다고 한다.
  • Python
    아직은 실험단계인 것 같다.
신규 pvserver 생성창에서 프로젝트가 저장될 폴더를 선택한 후, pvserver 명을 넣어준 후 OK 버튼을 누르면 신규 서버 프로젝트가 생성된다.

Directory : G:/..../test100
Name : pvs-test
Language : C/C++

그림 3. 신규 프로젝트 디자이너 모드 창
신규 프로젝트가 생성되면서 pvserver IDE 창은 디자이너 모드로 변경되어 위젯 입력 대기 상태로 전환된다.

그림 4. 신규 프로젝트 폴더
신규로 생성된 프로젝트의 폴더 내용을 살펴보면 그림 4와 같다. ***.pro, ***.pvproject 파일이외에는 다른 프로젝트들과 동일한 파일들이 사용되므로, 프로젝트를 새로 만들때 마다 항상 새로운 디렉토리를 설정해 주어야 한다.

아주 간단해 보이지만 신규 pvserver 프로젝트가 만들어 졌다. 이 상태로는 바로 사용할 수 없기 때문에 추가적으로 소스 Make & Compile을 수행하여 pvserver용 실행파일을 만들어 보자.

2. 신규 프로젝트 Make

 신규 프로젝트를 만든 후 Make 하자. Make는 에디터 모드에서 활성화 되므로 에디터 아이콘을 눌러 에디터 모드로 빠져 나온다.

그림 5. 신규 프로젝트 에디터 모드
에디터 모드에서 Action->Make 를 선택하면 그림 6과 같은 도스 창이 나타난다.

그림 6.Make 도스 창
도스창 맨 처음 라인을 보면 Qt 가 설치된 위치에 따라 다르겠지만 다음의 순서로 진행된다.
  1. qmake 파일을 이용하여 *.pro 파일 Make
  2. g++ 을 이용한 main.cpp, mask1.cpp, ... 오브젝트 파일 생성
  3. g++ 을 이용한 오브젝트 파일 링크

만약 이단계에서 경고 나 에러가 발생하면 메시지가 표시되므로 이 창의 내용을 꼭 확인하여야 한다. 에러가 발생하면 에러가 발생한 위치를 확인하고 소스 코드를 수정하여 다시 이 단계를 수행하여야 한다.
 도스창에서 아무키나 누르면 도스창이 사라진다.

3. Start Server

 에디터 모드에서 Action->Start Server 를 선택하면 그림 7과 같은 도스창이 나타난다.

그림 7. Start Sever 도스 창
재미있는 것은 Make와 동일한 단계가 다시 수행된 후 서버 프로그램이 로드된다. 따라서 소스를 수정한 후 바로 이 단계를 수행하여도 된다. 주의 할 것은 이 창을 닫으면 서버 프로그램이 종료된다. background로 서버 프로그램을 실행하기 위해서는 다른 방법이 있다.(Linux는 쉬운 것 같은 데, 윈도우는 다소... 아직 이해를 못해서 그런지 매우, 매우 복잡하다.)


프로 그램이 실행되면 방화벽 관련 경고창이 나타나는데 그냥 허용을 선택하면 된다.

이단계에서 서버프로그램이 메모리에 올라와서 실행되고 있는지 확인해 보자. 윈도우 작업관리자를 실행하자(CTRL+SHIFT+ESC)

그림 8. 서버프로그램 동작확인

프로세스 메뉴의 이미지 이름에 보면 pvs-test-exe가 실행되고 있는 것을 확인 할 수 있다.
자, 이 단계까지 오면 외부 클라이언트(pvbrowser)에서 요청하는 작업을 수행할 수 있다.
그러면 pvbrowser를 실행하여 보자.

4.pvbrowser 실행

 pvdevelop와 함께 설치(혹은 단독 설치)된 pvbrowser를 실행하자.
 Action->pvbrowser를 선택하여도 된다.

그림 9.pvbrowser 접속화면
그림 9는 pvserver 프로그램이 실행되는 컴퓨터에서 pvbrowser를  이용하여 서버에 접속한 화면이다. url 입력창에 접속주소가 localhost로 나타나는 것을 알 수 있다. pvbrowser의 옵션에서 접속주소를 변경하지 않은 경우, 기본 주소는 localhost이다. 만약 다른 컴퓨터에서 실행되는 서버에 접속하고자 하는 경우, 접속하고자 하는 컴퓨터의 IP 주소를 넣어주면 된다.

status bar 좌측 하단에 현재 접속한 UI 명이 나타난다. 현재 mask1에 접속된 상태이다. 만약 접속이 실패하면 status bar 가 붉은색으로 변하며 접속에러 메시지가 나타난다.

그림 10.서버 도스창

start server 도스창을 다시 한번 살펴보자.
"Info: going to accept on port 5050" 이후 추가적인 것들이 아래와 같은 것들이 나타난 것을 알 수 있다.



간단히 요약하면127.0.0.1 (localhost)에서 화면 해상도 2560x1440 인 pvbrowser가 접속해서 mask1을 보여주었다... 이런 뜻인 것 같은데, 여하튼 pvbrowser에 나타나는 UI 위젯에 마우스 혹은 키보드로 조작을 하면 이 창에 모든 내용이 나타난다.
서버 프로그램을 작성, 디버깅 할때 printf를 이용한 메시지도 이 창에서 확인이 가능하다.

이상으로 간략하게 pvserver, pvbrowser 를 실행해 보았다.
C/C++ 을 조금만 알면 쉽게(통신용 GUI 프로그램을 직접 맨 땅에 해딩하면서 작성하는 것보다..) HMI 더 나아가 SCADA 시스템을 만들 수 있다.

쉽게 만들 수 있다는 말을 믿지는 마라. 기존의 상용 HMI, SCADA 프로그램들을 생각한다면 매우 원시적(?)이다. 상용 프로그램의 경우 GUI 화면을 구성하면 속성 지정용 다이얼로그창들이 나타나, 이 창에 있는 옵션들을 ON/OFF 시키면 아주 간단하게 사용할 수 있지만 pvserser의 경우, 위젯의 속성 창을 기대하지 마라. 모든 것은 slot 프로그램에서 직접 코드를 집어 넣어야 한다. 이 방식의 장점은 프로그래머가 원하는 대로 작동하게 만들 수 있다는 장점이 있을 수 있지만 IDE를 완전히 지원하지 않는 pvdevelop 프로그램의 경우 서버 프로그램이 커지면 관리하기가 매우 힘들어 질 수 있다.


댓글 없음:

댓글 쓰기