地操模型已经成功运行,还需测试服务功能
This commit is contained in:
parent
1cb2ae1419
commit
c126518b3b
@ -1,25 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scenario>
|
||||
<Environment
|
||||
OSName="Debian"
|
||||
Version="11"
|
||||
RTXVersion="preempt-rt"
|
||||
CPUAffinity="0,1"
|
||||
BaseFrequency="120"
|
||||
WorkPath="/home/jin/Myprj/XNSim/Release/"
|
||||
ModelsPath="Models/"
|
||||
ServicesPath="Services/"
|
||||
DomainID="10"
|
||||
/>
|
||||
<ConsoleOutput Debug="1" Info="1" Error="1" Warning="1" />
|
||||
<Log Debug="0" Info="1" Error="1" Warning="1" />
|
||||
<ModelGroup Name="本体模型组" FreqGroup="0" Priority="99" CPUAff="0">
|
||||
<Model Name="ATA04气动模型" ClassName="XNAerodynamics" />
|
||||
<Model Name="ATA04地面操纵模型" ClassName="XNGroundHandling" />
|
||||
<Model Name="ATA04质量模型" ClassName="XNWeightBalance" />
|
||||
<Model Name="ATA04数据处理模型" ClassName="XNATA04DataProcessor" />
|
||||
</ModelGroup>
|
||||
<ServicesList>
|
||||
<Service Name="UDP通信服务" ClassName="XNUDPService" />
|
||||
</ServicesList>
|
||||
</Scenario>
|
@ -1,22 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scenario>
|
||||
<Environment
|
||||
OSName="Debian"
|
||||
Version="11"
|
||||
RTXVersion="preempt-rt"
|
||||
CPUAffinity="0,1"
|
||||
BaseFrequency="120"
|
||||
WorkPath="/home/jin/Myprj/XNSim/Release/"
|
||||
ModelsPath="Models/"
|
||||
ServicesPath="Services/"
|
||||
DomainID="10"
|
||||
/>
|
||||
<ConsoleOutput Debug="1" Info="1" Error="1" Warning="1" />
|
||||
<Log Debug="0" Info="1" Error="1" Warning="1" />
|
||||
<ModelGroup Name="新模型组" FreqGroup="0" Priority="99" CPUAff="0">
|
||||
<!-- 这里添加模型 -->
|
||||
</ModelGroup>
|
||||
<ServicesList>
|
||||
<!-- 这里添加服务 -->
|
||||
</ServicesList>
|
||||
</Scenario>
|
9
Release/Scenario/testGRD.xml
Executable file
9
Release/Scenario/testGRD.xml
Executable file
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scenario>
|
||||
<Environment OSName="Debian" Version="11" RTXVersion="preempt-rt" CPUAffinity="0,1" WorkPath="/home/jin/MyCode/XNSim/Release/" ModelsPath="Models/" ServicesPath="Services/" DomainID="10"/>
|
||||
<ConsoleOutput Debug="1" Info="1" Error="1" Warning="1"/>
|
||||
<Log Debug="0" Info="1" Error="1" Warning="1"/>
|
||||
<ModelGroup Name="本体模型组" Freq="120" Priority="99" CPUAff="0">
|
||||
<Model Name="ATA04地面操纵模型" ClassName="XNGroundHandling"/>
|
||||
</ModelGroup>
|
||||
</Scenario>
|
BIN
Release/XNEngine
BIN
Release/XNEngine
Binary file not shown.
@ -21,13 +21,6 @@ XNFramework::XNFramework() : XNObject(new XNFrameworkPrivate())
|
||||
d->modelManager = std::make_shared<XNModelManager>();
|
||||
d->serviceManager = std::make_shared<XNServiceManager>();
|
||||
d->eventManager = std::make_shared<XNEventManager>();
|
||||
d->ddsManager->SetFramework(XN_THISPTR);
|
||||
d->timeManager->SetFramework(XN_THISPTR);
|
||||
d->threadManager->SetFramework(XN_THISPTR);
|
||||
d->scenarioManager->SetFramework(XN_THISPTR);
|
||||
d->modelManager->SetFramework(XN_THISPTR);
|
||||
d->serviceManager->SetFramework(XN_THISPTR);
|
||||
d->eventManager->SetFramework(XN_THISPTR);
|
||||
}
|
||||
|
||||
XNFramework::XNFramework(PrivateType *p) : XNObject(p)
|
||||
@ -90,6 +83,13 @@ bool XNFramework::Initialize(uint32_t initialType)
|
||||
{
|
||||
T_D();
|
||||
LOG_INFO("XNFramework Initialize ...");
|
||||
d->ddsManager->SetFramework(XN_THISPTR);
|
||||
d->timeManager->SetFramework(XN_THISPTR);
|
||||
d->threadManager->SetFramework(XN_THISPTR);
|
||||
d->scenarioManager->SetFramework(XN_THISPTR);
|
||||
d->modelManager->SetFramework(XN_THISPTR);
|
||||
d->serviceManager->SetFramework(XN_THISPTR);
|
||||
d->eventManager->SetFramework(XN_THISPTR);
|
||||
bool ret = d->eventManager->Initialize();
|
||||
if (!ret) {
|
||||
LOG_ERROR("XNFramework Initialize Failed!");
|
||||
|
@ -177,6 +177,7 @@ uint32_t XNThreadManager::AddThreadPool(std::string name, double freq, uint32_t
|
||||
// 创建线程对象
|
||||
XNThreadPtr thread = std::make_shared<XNThread>(name, freq, priority, CPUAff);
|
||||
thread->SetThreadID(AllocateThreadID());
|
||||
thread->SetFramework(GetFramework());
|
||||
LOG_INFO("Add Thread Success, Frequency: %1 Hz, Interval: %2 ns.", freq, 1.0e9 / freq);
|
||||
d->threadList[thread->GetThreadID()] = thread;
|
||||
return thread->GetThreadID();
|
||||
|
@ -21,7 +21,7 @@
|
||||
XNEngine::XNEngine()
|
||||
{
|
||||
// 创建框架对象
|
||||
framework = new XNFramework();
|
||||
framework = std::make_shared<XNFramework>();
|
||||
// 引擎状态写入器
|
||||
engineStatusWriter = nullptr;
|
||||
// 测试模式
|
||||
@ -38,6 +38,9 @@ XNEngine::~XNEngine()
|
||||
// 仿真控制监听器
|
||||
void XNEngine::SimControlListener(const XNSim::XNSimControl::XNRuntimeControl &cmd)
|
||||
{
|
||||
if (!framework) {
|
||||
return;
|
||||
}
|
||||
if (cmd.XNSimCmd() == 1) {
|
||||
// 如果命令是暂停
|
||||
framework->SimControl(0, SimControlCmd::Suspend);
|
||||
@ -72,10 +75,9 @@ bool XNEngine::SetLogLevel(const std::string &XmlPath)
|
||||
return false;
|
||||
}
|
||||
// 获取根元素
|
||||
tinyxml2::XMLElement *root = doc.FirstChildElement("RuntimeEnvironment");
|
||||
tinyxml2::XMLElement *root = doc.FirstChildElement("Scenario");
|
||||
if (!root) {
|
||||
std::cerr << "0x1005 Failed to find RuntimeEnvironment element in configuration file!"
|
||||
<< std::endl;
|
||||
std::cerr << "0x1005 Failed to find Scenario element in configuration file!" << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -232,6 +234,9 @@ bool XNEngine::SetLogLevel(const std::string &XmlPath)
|
||||
// 发布引擎状态
|
||||
void XNEngine::PublishEngineStatus()
|
||||
{
|
||||
if (!framework) {
|
||||
return;
|
||||
}
|
||||
// 如果引擎状态写入器存在
|
||||
if (engineStatusWriter) {
|
||||
// 创建引擎状态对象
|
||||
@ -334,6 +339,9 @@ void XNEngine::PublishEngineStatus()
|
||||
// 运行引擎
|
||||
bool XNEngine::Run(const std::string &XmlPath)
|
||||
{
|
||||
if (!framework) {
|
||||
return false;
|
||||
}
|
||||
// 设置日志级别
|
||||
bool isReady = SetLogLevel(XmlPath);
|
||||
// 如果设置日志级别失败
|
||||
|
@ -34,16 +34,6 @@ public:
|
||||
void SimControlListener(const XNSim::XNSimControl::XNRuntimeControl &cmd);
|
||||
|
||||
public:
|
||||
/**
|
||||
* @brief 初始化成功槽函数
|
||||
* @param isSuccess 是否成功
|
||||
*/
|
||||
void OnInitializeSuccess(bool isSuccess);
|
||||
/**
|
||||
* @brief 准备执行成功槽函数
|
||||
* @param isSuccess 是否成功
|
||||
*/
|
||||
void OnPrepareforExecuteSuccess(bool isSuccess);
|
||||
/**
|
||||
* @brief 运行引擎
|
||||
* @param XmlPath 场景XML路径
|
||||
@ -86,7 +76,7 @@ private:
|
||||
/**
|
||||
* @brief 主框架
|
||||
*/
|
||||
XNFramework *framework;
|
||||
XNFrameworkPtr framework;
|
||||
/**
|
||||
* @brief 主框架状态
|
||||
*/
|
||||
|
@ -71,7 +71,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
//检查是否同时包含-f和-id参数
|
||||
if (!hasConfigPath || !hasConfigId) {
|
||||
if (hasConfigPath && hasConfigId) {
|
||||
std::cerr
|
||||
<< "0x1006 Please specify either -f <config_file> or -id <config_id>, but not both. "
|
||||
"The engine will exit!"
|
||||
|
Loading…
x
Reference in New Issue
Block a user