목록MSRDS (41)
CHOU
이전에 RunForm 객체를 등록 시키는 방법이 아니라 WinFormsServicePort에서 제공하는 특정한 메소드들을 사용하여, WinForm 안에 등록되어 있는 메소드들을 호출하는 방법을 알아보려 합니다. 오늘도 역시 MSRDS 네이버 카페에 김영준 수석님께서 올려주신 예제를 가지고 알아보겠습니다. 이 번 예제는 별도로 추가한 폼의 색상을 변경하는 메소드와 두 개으 숫자값을 더해서 결과를 표시하는 메소드를 별도로 추가한 폼에 생성해 놓은 후, 기존 폼에서 이 메소드들을 호출하는 과정을 알아보겠습니다. 1. 먼저, 프로젝트 참조에 이전과 같이 Ccr.Adapters.Winforms.dll을 기존 Microsoft.Ccr.Core.dll 파일과 같이 추가 합니다. 그림1. 레퍼런스 추가 화면 그림2. ..
일반적으로 CCR은 UI 없이 백그라운드로 처리되는 프로그램에 주로 사용되는데, 직접 로봇을 컨트롤 한다던가 시뮬레이션 과정을 적절히 제어하기 위해서는 UI를 만들어 사용하는데 이때 WinForm을 다루게 됩니다. 오늘은 몇가지 메소드를 이용해서 WinForm을 적절히 사용하는 방법을 알아보겠습니다. 오늘도 역시 네이버 MSRDS 카페에 김영준 수석님께서 올려주신 예제를 수행해 보면서 이해해 보겠습니다. CCR에서 WInForm을 제어하기 위해서는 기존에 참조했던 것에 더해서 새로운 Ccr.Adapters.Winforms.dll을 추가해 주어야 합니다. 아래 그림과 같이 참조 추가를 선택해서 추가해주고 using을 이용하여 선언해 줍니다. 그림1. .NET 레퍼런스 추가화면 그림2. 소스코드 추가화면 1..
Arbiter는 CCR에서 가장 중요한 기능을 담당하는데 크게 3가지의 기능을 제공합니다. 1) 다른 프로시저(핸들러) 형태로 정의되어 있는 부분을 ITask에 매핑시켜서 해당 프로시저가 수행할 수 있도록 합니다. 2) Coordination 기능으로서 특정한 메세지를 해당 핸들러에 매핑시켜서, 해당 메세지가 수신되면 해당 헨들러에 전달하여 해당 핸들러가 수행되도록 합니다. 3) 동시성을 제어하는 기능으로, 특정한 시점에 동시 실행을 허용하던가, 아니면 배타적으로 오직 하나의 작업만 수행다던가 하는 선택 작업을 수행할 수 있습니다. 오늘은 핸들러 형태로 정의되어 있는 프로시저 부분을 ITask로 변환시켜서 해당 핸들러 안에 구현되어 있는 작업들을 실행시키는 예제를 수행하면서 위에 1번의 기능에 대해 알아..
Arbiter.Receive는 특정 포트에 지정된 메세지가 도착하면 해당 핸들러가 실행되도록 하는 기능을 수행 합니다. 즉 특정 메세지를 myStatus라는 클래스로 정의하였을 때, 이 메세지를 수신하는 포트를 myStatusPort라고 정의 합니다. 이 때 myHandler라는 이름의 핸들러의 연결을 아래와 같이 정의할 수 있습니다. ITask myTask = Arbiter.Receive(false, myStatusPort, myHandler); Arbiter.Receive는 결과를 ITask 형식으로 리턴합니다. http://cafe.naver.com/msrskorea 에 김영준 수석님께서 올려주신 예제를 통해 좀 더 알아보겠습니다. 1. 앞선 예제와 마찬가지로 C# 프로젝트를 오픈해서 Microso..
PortSet은 멀티 배열과 같이 여러 형식의 값을 저장할 수 있는데 PortSet에 값을 추가하기 위해서는 Post 메소드를 사용해야 하며, 값을 읽어오기 위해서는 Test 명령을 사용하면 됩니다. PortSet의 기능을 알아보기 위해서 http://cafe.naver.com/msrskorea 에 김영준 수석님께서 올려주신 예제를 구현해 보겠습니다. 1. C# Windows Form Application 프로젝트를 생성합니다. 그림1. 프로젝트 생성화면 2. 레퍼런스에 Microsoft.Ccr.Core.dll 을 추가해 주고 코드 상단에 선언해 줍니다. 그림2. .NET 레퍼런스 창 화면 //add code using Microsoft.Ccr.Core; using Microsoft.Ccr.Core.Ar..