이 학습에서는 MyTopic 토픽 요소에 데이터를 공개하도록
동일한 코드를 추가합니다.
이 학습에서는 MyPublisher::publishMyDataWriter를 사용하여 MyTopic에 데이터를 공개합니다.
데이터를 공개하려면 MyTopicStruct 인스턴스를 초기화하고 해당 속성을 완료해야 합니다.
구조체 초기화와 관련이 있으며 값을 추가하는 코드는 표준 DDS API 코드가 아닙니다.
이는 이 학습서의 소프트웨어 요구사항인 RTI Data Distribution Service 4.4d 또는 4.5d에
특정적입니다. 사용자 코드는 DDSMyTopicStructLib.idl 파일에서
생성된 코드를 기반으로 합니다.
사용자 토픽에 데이터를 공개하도록 코드를 추가하려면
다음을 수행하십시오.
- MyPublisher 공개자에 대해 publishData 오퍼레이션을 추가하십시오.
- MyPublisher를 마우스 오른쪽 단추로 클릭하고 을 선택하십시오.
- 오퍼레이션의 기능 창을 열고 publishData로 이름을 지정하십시오.
- 구현 탭에서 다음 코드를 입력하고 확인을 클릭하십시오.
주: 이 학습서 주제에 맞추기 위해 다음 코드 샘플에서는 백슬래시 문자(\)가 if (!RTICdrType_ line
means that the next segment of code is part of the if (!RTICdrType_ 행의
끝에 사용되었습니다.
char buff[32];
for (int i = 1; i <= 10; ++i)
{
Sleep(1000);
MyTopicStruct myTopicStruct;
MyTopicStruct_initialize(&myTopicStruct);
myTopicStruct.myKeyAttribute = i;
myTopicStruct.myLongAttribute = i;
myTopicStruct.myBooleanAttribute = (i % 2);
myTopicStruct.myDoubleAttribute = 1./i;
//Initializing myStringAttribute
sprintf(buff, "message number %d", i);
unsigned int length = strlen(buff);
if (!RTICdrType_copyString(myTopicStruct.myStringAttribute, buff, \
length + 1))
{
return;
}
//Initializing myLongSequence
const signed int ar[3] = {i, i+1, i+2};
if (!myTopicStruct.myLongSequenceAttribute.from_array(ar, 3))
{
return;
}
//publish myTopicStruct
publishMyDataWriter(myTopicStruct);
MyTopicStruct_finalize(&myTopicStruct);
}
MyTopicStructLib 도메인 참가자 폴더 아래 DefaultConfig 폴더에서(예를 들어,
<Rational® Rhapsody®
설치 폴더>\DDSProject3\MyTopicStructLib\DefaultConfig) 데이터로
MyTopicStruct를 초기화하는 방법을 이해하려면 문서 편집기를 사용하여
DDSMyTopicStructLib.cxx 및 DDSMyTopicStructLib.h
파일을 여십시오. 이러한 파일은 MyTopicStructLib를 빌드하는 중에
DDSMyTopicStructLib.idl 파일에서 생성되었습니다.
DDSMyTopicStructLib.h 파일을 검토하여 MyTopicStruct 인스턴스를 초기화하고
완료하기 위해 샘플 코드에서 사용되는 MyTopicStruct_initialize 및
MyTopicStruct_finalize 함수를 찾을 수 있습니다.
DDSMyTopicStructLib.h 파일에서 myLongSequenceAttribute
유형인 DDS_LongSeq 정의에 대한 몇 가지 조사를 실행한 후 배열에서
myLongSequenceAttribute를 초기화하는 from_array
함수가 발견되었습니다. DDSMyTopicStructLib.cxx 파일에 있는
MyTopicStruct_copy 함수를 보면 myStringAttribute
속성을 초기화하기 위해 샘플 코드에서 사용한 RTICdrType_copyString
함수에 대한 호출을 찾을 수 있습니다.
- Win32 API 함수 Sleep을 사용하려면 MyPublisher 공개자의 기능 창을
여십시오. 특성 탭에서 CPP_CG::Class::ImpIncludes
특성을 <windows.h>로 설정한 후 확인을 클릭하십시오.
- MyPublisher 공개자에 publishData 오퍼레이션을 추가한 후 이를 호출하는
코드를 입력하십시오.
- MyPublishingApplication 도메인 참가자 아래 DefaultConfig 구성의
기능 창을 여십시오.
- 초기화 탭의 초기화 코드 필드에서
다음 코드를 추가하십시오.
p_MyPublisher->publishData();
- 확인을 클릭하십시오.
- MyPublishingApplication 도메인 참가자에 대한 코드를 생성한 후 빌드하십시오.
- 코드를 생성하려면 를
선택하십시오. 다시 로드할 것인지를 묻는 메시지가 표시되면 예를 클릭하십시오.
- 애플리케이션을 빌드하려면 를 선택하십시오.