NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    디자이너 매크로 아두이노의 COM 번호를 옵션으로 제공하는 방법.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 엔지엠 디자이너로 매크로를 제작할 때 플레이어의 옵션처럼 사용자가 설정값을 입력할 수 있게 하고 싶을겁니다. 아두이노의 COM 포트는 사용자 컴퓨터마다 값이 다릅니다. 그래서, 사용자가 직접 자신의 아두이노 포트를 확인하고 입력해서 사용할 수 있게하면 좀 더 전문적인 프로그램처럼 보일겁니다. 이런 작은 편의성들이 고객의 신뢰를 심어주고 마케팅에 도움이 됩니다^^;

    ※ 디자이너는 엔지엠 에디터, 플레이어 엔터프라이즈 1년 구독 라이센스를 구매하신 분들께 무료로 제공됩니다.

     

    기본적으로 엔지엠 디자이너를 어느정도 사용할 수 있다는 가정하에 글을 작성합니다. 엔지엠 디자이너로 나만의 플레이어를 만들려면 아래 글들을 먼저 학습하셔야 합니다. 그리고, 어느정도 디자인이 만들어진 폼을 다운로드하면 아래 그림과 같은 기본적인 기능을 사용할 수 있게 됩니다.

    [ 엔지엠 디자이너를 이용한 매크로 만들기 ]

    Ruta8yu.png

     

     

    먼저 아두이노로 클릭할 수 있는 간단한 스크립트를 하나 만들어 보겠습니다. 엔지엠 에디터를 실행하고 새로운 스크립트를 하나 추가하세요.

    cnOuw3h.gif

     

     

    아두이노는 시리얼 통신입니다. [ 연결 ] 액션을 추가하세요.

    y6HsFHx.png

     

     

    [ 마우스 클릭 ] 액션도 하나 추가하세요. 그리고, 바탕화면의 내문서를 클릭하도록 좌표를 설정 했습니다.

    5FUmlg8.png

     

     

    아래 그림을 참고해서 아두이노 연결 액션의 속성을 설정하세요. 이동 거리는 63이고, 이동 속도는 7입니다. 그리고, 시리얼 포트(COM 포트)는 COM4입니다. 이 값들은 사용자의 컴퓨터 상황에 맞게 조정해야 합니다. 이동 거리와 이동 속도는 동작에 큰 영향은 없지만, 시리얼 포트는 아두이노와 연결하는 인터페이스이므로 정확하게 선택해야 합니다. COM 포트는 장치 관리자의 아두이노에서 확인할 수 있습니다.

    5biDFrY.png

     

     

    매크로를 실행 해보면 내문서를 클릭하는걸 확인할 수 있습니다. 시리얼 포트 COM4로 잘 동작합니다.

     

     

    디자이너에서 COM 포트를 변경하고 정상 동작하는지 체크해야 하기 때문에 스크립트는 COM1로 변경하고 저장합니다. 이제 Visual Studio를 실행하고, 디자이너 소스를 여세요. 아래 그림과 같이 Form1의 디자인은 아두이노 관련 내용이 없습니다. 이 내용을 추가해야겠죠?

    zNImrdR.png

     

     

    텍스트 박스는 아두이노 시리얼 포트를 입력 받는 곳입니다. 사용자는 여기에 사용할 COM 포트를 입력해야 합니다. ②Upload 버튼은 실제 아두이노에 엔지엠 인터페이스 코드를 업로드하는 기능입니다. 아두이노 업로드가 궁금하신 분들은 아래 글을 참고하세요.

    [ 아두이노 업로드 ]

    hiqnrsN.png

     

     

    아두이노를 업로드하려면 엔지엠 매크로와 인터페이스할 수 있는 코드가 필요합니다. 이 코드는 [ 관리자에게 문의 ]하여 별도로 받아야 합니다. 파일을 받았으면 아래 그림과 같이 프로젝트에 External 폴더를 만들고 그 안에 넣어주세요. NAI.ino.hex파일의 속성은 실행새 버전이면 복사로 설정하세요. 자세한 내용은 C#의 빌드 설정을 참고하시면 됩니다. 파일을 우클릭하면 해당 내용들을 확인할 수 있습니다.

    yHqw5vT.png

     

     

    업로드 버튼의 이벤트 핸들러에 아래와 같이 코드를 작성하세요. 엔지엠 매크로의 편의 기능들은 대부분 NGM.Utility 네임스페이스 아래에 존재합니다. 개발자라면 인텔리센스를 통해 어떤 기능들이 있는지 쉽게 유추할 수 있습니다. 하지만, 일반인분들은 용어조차 생소할텐데요. 어쩔수없이 관리자에게 교육을 신청하여 도움을 받아야 합니다. 교육 신청은 아래 게시판에 작성 해주세요. 교육은 원격+전화로 진행되며 1시간에 10만원입니다.

    [ 제작 의뢰 및 교육 신청 ]

            private void metroButton1_Click(object sender, EventArgs e)
            {
                NGM.Utility.ArduinoManager.Manager.Upload(this, textBox1.Text.Trim());
            }

     

    아두이노 업로드 기능을 수행하려면 아래 패키지가 설치되어 있어야 합니다.

    Frk52Jk.png

     

     

    이제 스크립트를 실행할 때 아두이노 포트를 사용자가 설정한 값으로 변경하도록 코드를 작성해야 합니다. 엔지엠 디자이너/프레임워크는 매크로가 실행될 때 각각의 액션에 대해 실행전, 실행후 이벤트를 제공합니다. 아래와 같이 매크로 실행 버튼에 이벤트 핸들러를 추가하세요.

            private void playButton1_Click(object sender, EventArgs e)
            {
                playButton1.Enabled = false;
                stopButton1.Enabled = true;
                metroLabel2.Text = "Status: Running...";
    
                this.script1.Player.BeforeCurrentAction += Player_BeforeCurrentAction;
                this.script1.Player.AfterCurrentAction += Player_AfterCurrentAction;
            }

     

    이벤트 처리기는 아래와 같습니다.

            private void Player_AfterCurrentAction(object sender, NGM.Events.TreeNodeActionArgs e)
            {
                
            }
    
            private void Player_BeforeCurrentAction(object sender, NGM.Events.TreeNodeActionArgs e)
            {
                
            }

     

    우리는 매크로가 실행될 때 COM 포트를 사용자가 설정한 값으로 변경할겁니다. 그래서, BeforeCurrentAction만 처리하면 됩니다. 이벤트 핸들러는 2개의 인자(Argument)를 받습니다. 첫번째 인자는 자신을 나타내는 sender고, 두번째 인자는 액션입니다. 액션은 TreeNode 형식으로 제공되며, TreeNode의 Tag는 액션 모델입니다. 아래 코드에서 e.ActionItem.Text는 액션의 이름을 나타냅니다. 따라서 "연결" 액션이라면 내부 코드를 실행 해줍니다.

            private void Player_BeforeCurrentAction(object sender, NGM.Events.TreeNodeActionArgs e)
            {
                if (e.ActionItem.Text.StartsWith("연결"))
                {
                    var model = e.ActionItem.Tag as NGM.Models.SerialCommunication.SerialConnectionModel;
    
                    if (model != null)
                        model.SerialPortName = this.textBox1.Text.Trim();
                }
            }

     

     

    아래 코드가 핵심 내용입니다. 연결 액션이 맞으면 모델의 시리얼 포트 이름을 변경해주라는 뜻입니다. 사용자가 텍스트박스에 입력한 내용으로요.

                    if (model != null)
                        model.SerialPortName = this.textBox1.Text.Trim();

     

    위에서 만든 ①스크립트를 디자이너에서 여세요. 그리고, ②텍스트박스에 COM4를 입력하고 ③실행하세요.

    G10558q.png

     

     

    e.ActionItem.Text의 값이 "연결"인걸 확인할 수 있습니다. 그래서, 87라인을 무사히 통과하고 89라인으로 이동합니다.

    haN0mgv.png

     

     

    액션 아이템의 태그가 SerialConnectionModel인걸 확인할 수 있습니다. 시리얼 연결 모델인걸 알 수 있죠? as 명령으로 형 변환을 시도합니다. 그러면, model의 지역 변수에 모델이 저장됩니다. 이렇게하는 이유는 실제 모델의 속성을 이용하기 위함입니다.

    9PDuK11.png

     

     

    위에서 디자이너의 설정이 정상적으로 반영되는지 확인하기 위해 정상적인 시리얼 포트가 아닌 동작하지 않는 시리얼 포트를 선택하고 저장했습니다. 그 값이 COM1이었는데요. 아래 그림과 같이 COM1이 저장되어 있는걸 확인할 수 있습니다. 등호(=)를 기준으로 우항에 사용자로부터 입력 받는 시리얼 포트 값을 대입해줍니다.

    7S7vj4c.png

     

     

    model.SerialPortName의 값은 COM1이지만, 사용자가 입력한 텍스트박스의 시리얼 포트 값은 COM4입니다. 우측 값을 좌측에 넣어줍니다.

    24sRzQv.png

     

     

    정상적으로 동작하는지 확인이 되었다면 중단점(BreakPoints)을 모두 삭제하고, 실행 해보세요. 아래 동영상처럼 시리얼 포트가 설정되고 아두이노가 정상적으로 연결됩니다.

     

     

    엔지엠 디자이너/프레임워크는 업무 자동화 RPA 매크로를 제작하기 위한 수많은 기능들을 제공합니다. Function, Utility, Action, Event등등... 자동화를 위한 모든 기능들을 사용할 수 있습니다. 좀 더 자유로운 제작 환경을 원하시면 프레임워크로 사용해야 하고, 제한적이지만 쉽고 빠르게 매크로 플레이어 프로그램을 제작하려면 디자이너를 사용하세요. 자신의 환경에 맞게 선택적으로 사용할 수 있습니다. 엔지엠 디자이너/프레임워크의 라이센스는 엔지엠소프트웨어에 있습니다. 다른 용도로 사용하는 경우 문제가 될 수 있습니다.

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.