697 lines
24 KiB
C++
697 lines
24 KiB
C++
|
#include "XNWeightBalanceInterface.hpp"
|
||
|
|
||
|
namespace XNSim
|
||
|
{
|
||
|
namespace ATA04
|
||
|
{
|
||
|
WeightBalance_input_Interface::WeightBalance_input_Interface()
|
||
|
{
|
||
|
getDataFunction["l_04_i_wbcomac_theta_deg_f8"] = [this](const QString &varName) {
|
||
|
if (input.l_04_i_wbcomac_theta_deg_f8()) {
|
||
|
return QString::number(input.l_04_i_wbcomac_theta_deg_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_i_wbcomac_gear_mode_l1"] = [this](const QString &varName) {
|
||
|
if (input.l_04_i_wbcomac_gear_mode_l1()) {
|
||
|
return QString::number(input.l_04_i_wbcomac_gear_mode_l1().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_i_wbcomac_acset_gw_f8"] = [this](const QString &varName) {
|
||
|
if (input.l_04_i_wbcomac_acset_gw_f8()) {
|
||
|
return QString::number(input.l_04_i_wbcomac_acset_gw_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_i_wbcomac_acset_cg_f8"] = [this](const QString &varName) {
|
||
|
if (input.l_04_i_wbcomac_acset_cg_f8()) {
|
||
|
return QString::number(input.l_04_i_wbcomac_acset_cg_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_i_wbcomac_acset_tankfuel_f4"] = [this](const QString &varName) {
|
||
|
if (input.l_04_i_wbcomac_acset_tankfuel_f4()) {
|
||
|
QStringList list;
|
||
|
for (int i = 0; i < 20; i++) {
|
||
|
list.append(
|
||
|
QString::number(input.l_04_i_wbcomac_acset_tankfuel_f4().value()[i]));
|
||
|
}
|
||
|
return list.join(",");
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_i_wbcomac_acset_totfuel_f8"] = [this](const QString &varName) {
|
||
|
if (input.l_04_i_wbcomac_acset_totfuel_f8()) {
|
||
|
return QString::number(input.l_04_i_wbcomac_acset_totfuel_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_i_wbcomac_acset_zfw_f8"] = [this](const QString &varName) {
|
||
|
if (input.l_04_i_wbcomac_acset_zfw_f8()) {
|
||
|
return QString::number(input.l_04_i_wbcomac_acset_zfw_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_i_wbcomac_acset_zfwcg_f8"] = [this](const QString &varName) {
|
||
|
if (input.l_04_i_wbcomac_acset_zfwcg_f8()) {
|
||
|
return QString::number(input.l_04_i_wbcomac_acset_zfwcg_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_i_wbcomac_eng_efsep_l1"] = [this](const QString &varName) {
|
||
|
if (input.l_04_i_wbcomac_eng_efsep_l1()) {
|
||
|
QStringList list;
|
||
|
for (int i = 0; i < 4; i++) {
|
||
|
list.append(QString::number(input.l_04_i_wbcomac_eng_efsep_l1().value()[i]));
|
||
|
}
|
||
|
return list.join(",");
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_i_wbcomac_fuel_f8"] = [this](const QString &varName) {
|
||
|
if (input.l_04_i_wbcomac_fuel_f8()) {
|
||
|
QStringList list;
|
||
|
for (int i = 0; i < 20; i++) {
|
||
|
list.append(QString::number(input.l_04_i_wbcomac_fuel_f8().value()[i]));
|
||
|
}
|
||
|
return list.join(",");
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_i_wbcomac_gear_avg_f8"] = [this](const QString &varName) {
|
||
|
if (input.l_04_i_wbcomac_gear_avg_f8()) {
|
||
|
return QString::number(input.l_04_i_wbcomac_gear_avg_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_i_wbcomac_kice_f8"] = [this](const QString &varName) {
|
||
|
if (input.l_04_i_wbcomac_kice_f8()) {
|
||
|
QStringList list;
|
||
|
for (int i = 0; i < 20; i++) {
|
||
|
list.append(QString::number(input.l_04_i_wbcomac_kice_f8().value()[i]));
|
||
|
}
|
||
|
return list.join(",");
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_i_wbcomac_bycglim_l1"] = [this](const QString &varName) {
|
||
|
if (input.l_04_i_wbcomac_bycglim_l1()) {
|
||
|
return QString::number(input.l_04_i_wbcomac_bycglim_l1().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_i_wbcomac_bygwlim_l1"] = [this](const QString &varName) {
|
||
|
if (input.l_04_i_wbcomac_bygwlim_l1()) {
|
||
|
return QString::number(input.l_04_i_wbcomac_bygwlim_l1().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_i_wbcomac_frz_l1"] = [this](const QString &varName) {
|
||
|
if (input.l_04_i_wbcomac_frz_l1()) {
|
||
|
return QString::number(input.l_04_i_wbcomac_frz_l1().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_i_wbcomac_zcgfrz_l1"] = [this](const QString &varName) {
|
||
|
if (input.l_04_i_wbcomac_zcgfrz_l1()) {
|
||
|
return QString::number(input.l_04_i_wbcomac_zcgfrz_l1().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_i_wbcomac_zcgfrz_grfx_l1"] = [this](const QString &varName) {
|
||
|
if (input.l_04_i_wbcomac_zcgfrz_grfx_l1()) {
|
||
|
return QString::number(input.l_04_i_wbcomac_zcgfrz_grfx_l1().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_i_wbcomac_ycgfrz_l1"] = [this](const QString &varName) {
|
||
|
if (input.l_04_i_wbcomac_ycgfrz_l1()) {
|
||
|
return QString::number(input.l_04_i_wbcomac_ycgfrz_l1().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_i_wbcomac_inertfrz_l1"] = [this](const QString &varName) {
|
||
|
if (input.l_04_i_wbcomac_inertfrz_l1()) {
|
||
|
return QString::number(input.l_04_i_wbcomac_inertfrz_l1().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_i_wbcomac_potreq_gw_f8"] = [this](const QString &varName) {
|
||
|
if (input.l_04_i_wbcomac_potreq_gw_f8()) {
|
||
|
return QString::number(input.l_04_i_wbcomac_potreq_gw_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_i_wbcomac_potreq_gwcg_f8"] = [this](const QString &varName) {
|
||
|
if (input.l_04_i_wbcomac_potreq_gwcg_f8()) {
|
||
|
return QString::number(input.l_04_i_wbcomac_potreq_gwcg_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_i_wbcomac_phi_deg_f8"] = [this](const QString &varName) {
|
||
|
if (input.l_04_i_wbcomac_phi_deg_f8()) {
|
||
|
return QString::number(input.l_04_i_wbcomac_phi_deg_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_i_wbcomac_psi_deg_f8"] = [this](const QString &varName) {
|
||
|
if (input.l_04_i_wbcomac_psi_deg_f8()) {
|
||
|
return QString::number(input.l_04_i_wbcomac_psi_deg_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
}
|
||
|
|
||
|
WeightBalance_input_Interface::~WeightBalance_input_Interface()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
QString WeightBalance_input_Interface::getData(const QString &varName)
|
||
|
{
|
||
|
int index1 = -1;
|
||
|
int index2 = -1;
|
||
|
QString trueVarName = varName;
|
||
|
// 检查变量名中是否存在数组标记
|
||
|
if (varName.contains('[')) {
|
||
|
// 解析数组索引
|
||
|
int startPos = varName.indexOf('[');
|
||
|
int midPos = varName.indexOf("][");
|
||
|
int endPos = varName.lastIndexOf(']');
|
||
|
|
||
|
// 如果是二维数组 (格式: name[index1][index2])
|
||
|
if (midPos != -1) {
|
||
|
bool ok1 = false, ok2 = false;
|
||
|
index1 = varName.mid(startPos + 1, midPos - startPos - 1).toInt(&ok1);
|
||
|
index2 = varName.mid(midPos + 2, endPos - midPos - 2).toInt(&ok2);
|
||
|
|
||
|
if (!ok1 || !ok2) {
|
||
|
qWarning() << "无法解析数组索引:" << varName;
|
||
|
index1 = 0;
|
||
|
index2 = 0;
|
||
|
}
|
||
|
}
|
||
|
// 如果是一维数组 (格式: name[index1])
|
||
|
else if (startPos != -1 && endPos != -1) {
|
||
|
bool ok = false;
|
||
|
index1 = varName.mid(startPos + 1, endPos - startPos - 1).toInt(&ok);
|
||
|
|
||
|
if (!ok) {
|
||
|
qWarning() << "无法解析数组索引:" << varName;
|
||
|
index1 = 0;
|
||
|
}
|
||
|
}
|
||
|
trueVarName = varName.left(startPos);
|
||
|
}
|
||
|
auto it = getDataFunction.find(trueVarName);
|
||
|
if (it == getDataFunction.end()) {
|
||
|
return QString(); // 返回空字符串表示未找到
|
||
|
}
|
||
|
if (index1 < 0) {
|
||
|
QMutexLocker locker(&mutex);
|
||
|
return it.value()(trueVarName);
|
||
|
} else if (index2 < 0) {
|
||
|
QMutexLocker locker(&mutex);
|
||
|
QStringList list = it.value()(trueVarName).split(",");
|
||
|
if (index1 >= list.size()) {
|
||
|
qWarning() << "数组索引超出范围:" << varName;
|
||
|
return QString();
|
||
|
}
|
||
|
return list[index1];
|
||
|
} else {
|
||
|
QMutexLocker locker(&mutex);
|
||
|
QStringList list = it.value()(trueVarName).split(",");
|
||
|
if (index1 >= list.size()) {
|
||
|
qWarning() << "数组索引超出范围:" << varName;
|
||
|
return QString();
|
||
|
}
|
||
|
QStringList list2 = list[index1].split(" ");
|
||
|
if (index2 >= list2.size()) {
|
||
|
qWarning() << "数组索引超出范围:" << varName;
|
||
|
return QString();
|
||
|
}
|
||
|
return list2[index2];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void
|
||
|
WeightBalance_input_Interface::inputDataListener(const XNSim::ATA04::WeightBalance_input &input)
|
||
|
{
|
||
|
QMutexLocker locker(&mutex);
|
||
|
this->input = input;
|
||
|
}
|
||
|
|
||
|
WeightBalance_output_Interface::WeightBalance_output_Interface()
|
||
|
{
|
||
|
getDataFunction["l_04_o_wbcomac_frz_l1"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_frz_l1()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_frz_l1().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_zcgfrz_l1"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_zcgfrz_l1()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_zcgfrz_l1().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_zcgfrz_grfx_l1"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_zcgfrz_grfx_l1()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_zcgfrz_grfx_l1().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_ycgfrz_l1"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_ycgfrz_l1()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_ycgfrz_l1().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_inertfrz_l1"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_inertfrz_l1()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_inertfrz_l1().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_gw_f4"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_gw_f4()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_gw_f4().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_cg_f4"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_cg_f4()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_cg_f4().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_blcg_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_blcg_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_blcg_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_bscg_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_bscg_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_bscg_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_wlcg_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_wlcg_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_wlcg_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_xcg_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_xcg_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_xcg_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_ixx_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_ixx_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_ixx_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_ixy_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_ixy_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_ixy_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_ixz_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_ixz_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_ixz_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_iyy_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_iyy_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_iyy_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_iyz_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_iyz_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_iyz_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_izz_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_izz_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_izz_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_zfw_f4"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_zfw_f4()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_zfw_f4().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_zfwcg_f4"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_zfwcg_f4()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_zfwcg_f4().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_zfw_blcg_f4"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_zfw_blcg_f4()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_zfw_blcg_f4().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_zfw_wlcg_f4"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_zfw_wlcg_f4()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_zfw_wlcg_f4().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_fuel_cmd_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_fuel_cmd_f8()) {
|
||
|
QStringList list;
|
||
|
for (int i = 0; i < 20; i++) {
|
||
|
list.append(QString::number(output.l_04_o_wbcomac_fuel_cmd_f8().value()[i]));
|
||
|
}
|
||
|
return list.join(",");
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_fuel_mode_i4"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_fuel_mode_i4()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_fuel_mode_i4().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_fuel_ixx_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_fuel_ixx_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_fuel_ixx_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_fuel_ixy_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_fuel_ixy_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_fuel_ixy_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_fuel_ixz_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_fuel_ixz_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_fuel_ixz_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_fuel_iyy_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_fuel_iyy_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_fuel_iyy_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_fuel_iyz_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_fuel_iyz_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_fuel_iyz_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_fuel_izz_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_fuel_izz_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_fuel_izz_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_l_wt_fuel_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_l_wt_fuel_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_l_wt_fuel_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_ice_airframe_total_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_ice_airframe_total_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_ice_airframe_total_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_ice_eng_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_ice_eng_f8()) {
|
||
|
QStringList list;
|
||
|
for (int i = 0; i < 4; i++) {
|
||
|
list.append(QString::number(output.l_04_o_wbcomac_ice_eng_f8().value()[i]));
|
||
|
}
|
||
|
return list.join(",");
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_ice_eng_total_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_ice_eng_total_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_ice_eng_total_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_ice_fuselage_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_ice_fuselage_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_ice_fuselage_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_ice_stab_left_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_ice_stab_left_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_ice_stab_left_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_ice_stab_right_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_ice_stab_right_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_ice_stab_right_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_ice_stab_total_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_ice_stab_total_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_ice_stab_total_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_ice_total_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_ice_total_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_ice_total_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_ice_total_frac_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_ice_total_frac_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_ice_total_frac_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_ice_vert_tail_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_ice_vert_tail_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_ice_vert_tail_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_ice_wing_left_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_ice_wing_left_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_ice_wing_left_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_ice_wing_right_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_ice_wing_right_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_ice_wing_right_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_ice_wing_total_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_ice_wing_total_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_ice_wing_total_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_init_l1"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_init_l1()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_init_l1().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_potmin_gw_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_potmin_gw_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_potmin_gw_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_potmax_gw_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_potmax_gw_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_potmax_gw_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_potmin_gwcg_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_potmin_gwcg_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_potmin_gwcg_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_potmax_gwcg_f8"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_potmax_gwcg_f8()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_potmax_gwcg_f8().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_min_cg_f4"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_min_cg_f4()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_min_cg_f4().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_min_gw_f4"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_min_gw_f4()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_min_gw_f4().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_min_zfw_f4"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_min_zfw_f4()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_min_zfw_f4().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_min_zfwcg_f4"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_min_zfwcg_f4()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_min_zfwcg_f4().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_max_cg_f4"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_max_cg_f4()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_max_cg_f4().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_max_gw_f4"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_max_gw_f4()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_max_gw_f4().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_max_zfw_f4"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_max_zfw_f4()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_max_zfw_f4().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
getDataFunction["l_04_o_wbcomac_max_zfwcg_f4"] = [this](const QString &varName) {
|
||
|
if (output.l_04_o_wbcomac_max_zfwcg_f4()) {
|
||
|
return QString::number(output.l_04_o_wbcomac_max_zfwcg_f4().value());
|
||
|
}
|
||
|
return QString();
|
||
|
};
|
||
|
}
|
||
|
|
||
|
WeightBalance_output_Interface::~WeightBalance_output_Interface()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
QString WeightBalance_output_Interface::getData(const QString &varName)
|
||
|
{
|
||
|
int index1 = -1;
|
||
|
int index2 = -1;
|
||
|
QString trueVarName = varName;
|
||
|
// 检查变量名中是否存在数组标记
|
||
|
if (varName.contains('[')) {
|
||
|
// 解析数组索引
|
||
|
int startPos = varName.indexOf('[');
|
||
|
int midPos = varName.indexOf("][");
|
||
|
int endPos = varName.lastIndexOf(']');
|
||
|
|
||
|
// 如果是二维数组 (格式: name[index1][index2])
|
||
|
if (midPos != -1) {
|
||
|
bool ok1 = false, ok2 = false;
|
||
|
index1 = varName.mid(startPos + 1, midPos - startPos - 1).toInt(&ok1);
|
||
|
index2 = varName.mid(midPos + 2, endPos - midPos - 2).toInt(&ok2);
|
||
|
|
||
|
if (!ok1 || !ok2) {
|
||
|
qWarning() << "无法解析数组索引:" << varName;
|
||
|
index1 = 0;
|
||
|
index2 = 0;
|
||
|
}
|
||
|
}
|
||
|
// 如果是一维数组 (格式: name[index1])
|
||
|
else if (startPos != -1 && endPos != -1) {
|
||
|
bool ok = false;
|
||
|
index1 = varName.mid(startPos + 1, endPos - startPos - 1).toInt(&ok);
|
||
|
|
||
|
if (!ok) {
|
||
|
qWarning() << "无法解析数组索引:" << varName;
|
||
|
index1 = 0;
|
||
|
}
|
||
|
}
|
||
|
trueVarName = varName.left(startPos);
|
||
|
}
|
||
|
QMutexLocker locker(&mutex);
|
||
|
auto it = getDataFunction.find(trueVarName);
|
||
|
if (it == getDataFunction.end()) {
|
||
|
return QString(); // 返回空字符串表示未找到
|
||
|
}
|
||
|
if (index1 < 0) {
|
||
|
return it.value()(varName);
|
||
|
} else if (index2 < 0) {
|
||
|
QStringList list = it.value()(trueVarName).split(",");
|
||
|
if (index1 >= list.size()) {
|
||
|
qWarning() << "数组索引超出范围:" << varName;
|
||
|
return QString();
|
||
|
}
|
||
|
return list[index1];
|
||
|
} else {
|
||
|
QStringList list = it.value()(trueVarName).split(",");
|
||
|
if (index1 >= list.size()) {
|
||
|
qWarning() << "数组索引超出范围:" << varName;
|
||
|
return QString();
|
||
|
}
|
||
|
QStringList list2 = list[index1].split(" ");
|
||
|
if (index2 >= list2.size()) {
|
||
|
qWarning() << "数组索引超出范围:" << varName;
|
||
|
return QString();
|
||
|
}
|
||
|
return list2[index2];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void WeightBalance_output_Interface::outputDataListener(
|
||
|
const XNSim::ATA04::WeightBalance_output &output)
|
||
|
{
|
||
|
QMutexLocker locker(&mutex);
|
||
|
this->output = output;
|
||
|
}
|
||
|
|
||
|
WeightBalance_heartbeat_Interface::WeightBalance_heartbeat_Interface()
|
||
|
{
|
||
|
getDataFunction["weightbody_model_heartbeat"] = [this](const QString &varName) {
|
||
|
return QString::number(heartbeat.weightbody_model_heartbeat());
|
||
|
};
|
||
|
}
|
||
|
|
||
|
WeightBalance_heartbeat_Interface::~WeightBalance_heartbeat_Interface()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
QString WeightBalance_heartbeat_Interface::getData(const QString &varName)
|
||
|
{
|
||
|
QMutexLocker locker(&mutex);
|
||
|
auto it = getDataFunction.find(varName);
|
||
|
if (it == getDataFunction.end()) {
|
||
|
return QString(); // 返回空字符串表示未找到
|
||
|
}
|
||
|
return it.value()(varName);
|
||
|
}
|
||
|
|
||
|
void WeightBalance_heartbeat_Interface::heartbeatListener(
|
||
|
const XNSim::ATA04::WeightBalance_heartbeat &heartbeat)
|
||
|
{
|
||
|
QMutexLocker locker(&mutex);
|
||
|
this->heartbeat = heartbeat;
|
||
|
}
|
||
|
} // namespace ATA04
|
||
|
} // namespace XNSim
|