2.7. IBase를 통한 HR-RPC 서비스 호출
2.7. IBase를 통한 HR-RPC 서비스 호출
IBase는 HR-RPC 서비스를 호출하는 기본 함수를 포함하고 있습니다. 이 절차는 HR-RPC 서비스를 아래와 같이 호출합니다. 정확한 입력, 출력 파라미터 및 서비스 번호의 리스트를 알아야만 합니다.
p_base->InitParam( ); // get ready to insert input parameters p_base->PutData( input param. 1 ); p_base->PutData( input param. 2 ); … HRESULT hr = p_base->DoProcSysc( service number ); // call the service (blocked) if(FAILED(hr) { // failure // error handling.. return; } p_base->GetData( output param. 1 ); // extract output parameters p_base->GetData( output param. 2 ); |
에러를 다루기 위해서는 반환된 HRESULT 값을 확인해야 합니다. HResMsg.cpp 샘플 소스 코드는 이를 수행하기 위한 helper 함수를 담고 있습니다. hr==BASE_E_SERVICE이면, Hi5/Hi5a 로봇 컨트롤러가 일부 서비스 에러 코드를 반환하였다는 의미입니다. IBase:: GetSvcErrCode() 함수를 활용하여 코드를 확인할 수 있습니다. 일부 서비스 에러의 경우, IBase::errcode2msg()와ErrCodeRef.h 안에 있는 서비스 에러 리스트를 이용할 수 있습니다.