地操模型已经成功运行,还需测试服务功能

This commit is contained in:
jinchao 2025-05-22 09:20:04 +08:00
parent 1cb2ae1419
commit c126518b3b
9 changed files with 31 additions and 70 deletions

View File

@ -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>

View File

@ -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
View 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>

Binary file not shown.

View File

@ -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!");

View File

@ -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();

View File

@ -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);
// 如果设置日志级别失败

View File

@ -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
*/

View File

@ -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!"