노트이러한 맥락에서 EK80 프로세서 유닛을 "서버"라고 부르고, EK80 프로그램을 "서버 응용 프로그램"이라고 부를 수 있습니다.
그리고 로컬 컴퓨터에서 실행할 목적으로 직접 개발한 프로그램을 "클라이언트 응용 프로그램"이라고 일컫습니다.
이용할 수 있는 메소드 및 명령은 아래와 같습니다.
모든 명령을 실행할 때는 로컬 컴퓨터의 클라이언트 응용 프로그램에서 프로세서 유닛으로 Request 메시지를 전송해야 합니다. 다음 섹션에서는 Request의 Request 필드 내용에 대해서만 살펴보겠습니다.
모든 명령을 실행할 때는 프로세서 유닛에서 클라이언트 응용 프로그램으로 Response 메시지를 전송해야 합니다. 다음 섹션에서는 Response의 Reponse 필드 내용에 대해서만 살펴보겠습니다.
데이터 구독 생성
요청 메시지에서 메소드 영역은 Subscribe로 설정합니다. Subscribe 메소드는 다음 입력 파라미터로 정의됩니다.
|
• |
RequestedPort: 데이터를 수신해야 하는 클라이언트 응용 프로그램의 로컬 포트 |
RemoteDataServer에 대한 Subscribe 명령의 Request 필드 내용은 예를 들면 아래와 같습니다.
<request>
<clientInfo>
<cid>1</cid>
<rid>1</rid>
</clientInfo>
<type>invokeMethod</type>
<targetComponent>RemoteDataServer</targetComponent>
<method>
<Subscribe>
<requestedPort>12345</requestedPort>
<dataRequest>BottomDetection</dataRequest>
</Subscribe>
</method>
</request>
서버 응용 프로그램이 Response 메시지로 응답합니다. Subscribe 메소드의 출력 파라미터는 아래와 같습니다.
|
• |
SubscriptionID: 이 파라미터는 현재 구독 ID입니다. 동일한 포트에서 다수의 구독을 서로 구별하는 데 사용됩니다. |
RemoteDataServer에 대한 Subscribe 명령의 Response 필드 내용은 예를 들면 아래와 같습니다.
<response>
<clientInfo>
<cid dt=”3”>1</cid>
<rid dt=”3”>1</rid>
</clientInfo>
<fault>
<detail>
<errorcode dt=”3”>0</errorcode>
</detail>
</fault>
<SubscribeResponse>
<subscriptionID dt=”3”></subscriptionID>
</SubscribeResponse>
</response>
데이터 처리
RemoteDataServer의 데이터는 ProcessedData 구조로 래핑됩니다.
struct ProcessedData
{
char Header[4]; // ”PRD\0”
long SeqNo; // Sequence number of the current UDP message
long SubscriptionID; // Identification of the current data
unsigned short CurrentMsg; // Current message number
unsigned short TotalMsg; // Total number of UDP messages
unsigned short NoOfBytes; // Number of bytes in the following data field
unsigned short Data[]; // Actual data
};
데이터 양이 UDP 메시지 1개의 최대 용량을 초과하면 데이터가 여러 UDP 메시지로 분할됩니다. TotalMsg 필드에는 현재 데이터의 UDP 메시지 수가 입력됩니다. 1보다 큰 수로 식별됩니다.
CurrentMsg 필드에는 현재 메시지 수 / 전체 메시지 수가 입력됩니다.
Data 필드는 데이터 구독 유형섹션에 설명한 것처럼 구독에서 지정한 출력 구조에 따라 디코딩됩니다.
데이터 구독 변경
요청 메시지에서 메소드 영역은 ChangeSubscription으로 설정합니다. ChangeSubscription 메소드의 파라미터는 아래와 같습니다.
|
• |
subscriptionID: 변경할 구독 ID |
|
• |
dataRequest: 실제 구독 명세 이 파라미터에 대한 자세한 내용은 데이터 구독 유형섹션에서 다루겠습니다.
|
RemoteDataServer에 대한 ChangeSubscription 명령의 Request 필드 내용은 예를 들면 아래와 같습니다.
<request>
<clientInfo>
<cid>1</cid>
<rid>1</rid>
</clientInfo>
<type>invokeMethod</type>
<targetComponent>RemoteDataServer</targetComponent>
<method>
<ChangeSubscription>
<subscriptionID>1</subscriptionID>
<dataRequest>BottomDetection</dataRequest>
</ChangeSubscription>
</method>
</request>
서버 응용 프로그램이 Response 메시지로 응답합니다. ChangeSubscription 메소드는 출력 파라미터가 없습니다.
RemoteDataServer에 대한 ChangeSubscription 명령의 Response 필드 내용은 예를 들면 아래와 같습니다.
<response>
<clientInfo>
<cid dt=”3”>1</cid>
<rid dt=”3”>1</rid>
</clientInfo>
<fault>
<detail>
<errorcode dt=”3”>0</errorcode>
</detail>
</fault>
<ChangeSubscriptionResponse></ChangeSusbcriptionResponse>
</response>
데이터 구독 해제
요청 메시지에서 메소드 영역은 Unsubscribe로 설정합니다. Unsubscribe 메소드의 파라미터는 아래와 같습니다.
|
• |
subscriptionID: 해제할 구독 ID |
RemoteDataServer에 대한 Unsubscribe 명령의 szRequest 필드 내용은 예를 들면 아래와 같습니다.
<request>
<clientInfo>
<cid>1</cid>
<rid>1</rid>
</clientInfo>
<type>invokeMethod</type>
<targetComponent>RemoteDataServer</targetComponent>
<method>
<Unsubscribe>
<subscriptionID>1</subscriptionID>
</Unsubscribe>
</method>
</request>
서버 응용 프로그램이 ResponseDef 메시지로 응답합니다. Unsubscribe 메소드는 출력 파라미터가 없습니다.
RemoteDataServer에 대한 Unsubscribe 명령의 Response 필드 내용은 예를 들면 아래와 같습니다.
<response>
<clientInfo>
<cid dt=”3”>1</cid>
<rid dt=”3”>1</rid>
</clientInfo>
<fault>
<detail>
<errorcode dt=”3”>0</errorcode>
</detail>
</fault>
<UnsubscribeResponse></UnsubscribeResponse>
</response>