-1

如何在 OpenRTI 中使 rti 发送回调?例如,保留一个带有reserveObjectInstanceName

_rtiAmbassador->reserveObjectInstanceName(name);

错误:

在抛出 'rti1516e::ObjectInstanceNameNotReserved' 的实例后调用终止

4

2 回答 2

0

每次调用 RTI 后,要获得回调,您需要调用 evokeCallback()

于 2019-09-26T13:46:37.867 回答
0

如果您在调用时使用 HLA 1516e API(而不是 HLA 1516 或 HLA 1.3),则connect可以指定 a CallbackModelwhich is SYNCHRONOUSor 或ASYNCHRONOUS. 在同步回调模型中,联邦必须调用该方法evokeCallback以触发 RTI 发送排队的任何内容。在异步中,回调是自动发送的。

在这种情况下你应该做的是有这样的事情:

_rtiAmbassador->reserveObjectInstanceName(std::wstring(L"MyObject"));
_rtiAmbassador->evokeMultipleCallbacks();
MyFederateAmbassador::objectInstanceNameReservationSucceeded(std::wstring const & name){
    _rtiAmbassador->registerObjectInstance(handle, std::wstring(L"MyObject"));
}
于 2019-10-24T15:22:07.557 回答