添加获取新的块
This commit is contained in:
parent
263ad7c526
commit
f20695daee
|
@ -23,6 +23,8 @@ AbstractSpectrumDataMessage::AbstractSpectrumDataMessage()
|
|||
data_types.append( "ALERT_SYSTEM" ); // [11]
|
||||
data_types.append( "ALERT_TEMP" ); // [12]
|
||||
data_types.append( "ALERT_UPS" ); // [13]
|
||||
data_types.append( "RMSDOS" ); // [14]
|
||||
data_types.append( "ALERT_PRESSURE" ); // [15]
|
||||
|
||||
msg.verify_srid = false;
|
||||
}
|
||||
|
@ -86,6 +88,7 @@ bool AbstractSpectrumDataMessage::AnalyseFile(QString file_name)
|
|||
}
|
||||
|
||||
QTextStream content(&file);
|
||||
content.setCodec("UTF-8");
|
||||
if (content.atEnd())
|
||||
{
|
||||
file.close();
|
||||
|
|
|
@ -40,7 +40,8 @@ bool AlertMessage::AnalyseMessgeBody(QTextStream &content)
|
|||
if ( QLatin1String("ALERT_FLOW") != msg.data_type &&
|
||||
QLatin1String("ALERT_SYSTEM") != msg.data_type &&
|
||||
QLatin1String("ALERT_TEMP") != msg.data_type &&
|
||||
QLatin1String("ALERT_UPS") != msg.data_type )
|
||||
QLatin1String("ALERT_UPS") != msg.data_type &&
|
||||
QLatin1String("ALERT_PRESSURE") != msg.data_type)
|
||||
{
|
||||
return bIsValid = false;
|
||||
}
|
||||
|
|
|
@ -94,7 +94,7 @@ typedef struct _Read_Result_
|
|||
jint b_r_record_count;
|
||||
|
||||
/* g_Efficiency Block */
|
||||
jobjectArray g_e_nuclide; // device name
|
||||
jobjectArray g_e_nuclide_name; // device name
|
||||
jobjectArray g_e_energy; // ¦Ã -energy (keV)
|
||||
jobjectArray g_e_efficiency; // efficiency (counts in peak/photon emitted)
|
||||
jobjectArray g_e_uncertainty; // uncertainty (counts in peak/photon emitted)
|
||||
|
@ -168,6 +168,22 @@ typedef struct _Read_Result_
|
|||
/*gps block*/
|
||||
jdouble lon;
|
||||
jdouble lat;
|
||||
|
||||
/* b_Efficiency Block */
|
||||
jobjectArray b_e_nuclide_name; // nuclide name
|
||||
jobjectArray b_e_efficiency; // ROI number
|
||||
jobjectArray b_e_uncertainty; // ¦Â-¦Ã coincidence efficiency (counts in ROI/¦Â-¦Ã pair emitted)
|
||||
jint b_efficiency_record_count;
|
||||
|
||||
/*b_self_Attenuation block*/
|
||||
jobjectArray b_s_a_nuclide_name;
|
||||
jobjectArray b_s_a_coeff1;
|
||||
jobjectArray b_s_a_coeff2;
|
||||
jobjectArray b_s_a_coeff3;
|
||||
jobjectArray b_s_a_coeff4;
|
||||
jobjectArray b_s_a_coeff5;
|
||||
jobjectArray b_s_a_coeff6;
|
||||
|
||||
}ReadResult;
|
||||
|
||||
typedef struct _Generate_Result_
|
||||
|
@ -354,6 +370,22 @@ typedef struct _SOHFile_Result_
|
|||
jobjectArray detector_response; // detector response
|
||||
}SOHFileResult;
|
||||
|
||||
typedef struct _DOS_Result_{
|
||||
/* Header Black */
|
||||
jstring site_code; // site code
|
||||
jstring detector_code; // detector code
|
||||
jstring sample_start_date;
|
||||
jstring sample_start_time;
|
||||
|
||||
jobjectArray dose_rate;
|
||||
jobjectArray uncertainty;
|
||||
jobjectArray dr_start_date;
|
||||
jobjectArray dr_start_time;
|
||||
jobjectArray dr_interval_duration;
|
||||
|
||||
jint record_count;
|
||||
}DOSResult;
|
||||
|
||||
class CplusToJava
|
||||
{
|
||||
public:
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
#define ORDER_GPS QLatin1String("#GPS")
|
||||
#define ORDER_BSELF QLatin1String("#b_self_Attenuation")
|
||||
#define ORDER_NB_GEFFICIENCY QLatin1String("#b_Efficiency")
|
||||
#define DOSERATE QLatin1String("#DoseRate")
|
||||
#define ORDER_STOP QLatin1String("STOP")
|
||||
#define ORDER_BEGIN QLatin1String("BEGIN")
|
||||
#define DATATYPE_QCPHD QLatin1String("QCPHD")
|
||||
|
@ -286,6 +287,23 @@ namespace RadionuclideData
|
|||
}
|
||||
HeaderBlock, *PtHeaderBlock;
|
||||
|
||||
typedef struct _Dos_Header_Block_
|
||||
{
|
||||
/* Header Black */
|
||||
QString site_code; // site code
|
||||
QString detector_code; // detector code
|
||||
|
||||
QString sample_start_date;
|
||||
QString sample_start_time;
|
||||
|
||||
QString sample_end_date;
|
||||
QString sample_end_time;
|
||||
|
||||
QString send_date;
|
||||
QString send_time;
|
||||
}
|
||||
DosHeaderBlock, *PtDosHeaderBlock;
|
||||
|
||||
typedef struct _Acquisition_Block_
|
||||
{
|
||||
/* Acquisition Block */
|
||||
|
@ -519,6 +537,18 @@ namespace RadionuclideData
|
|||
}
|
||||
NBG_EfficiencyBlock, *PtNBG_EfficiencyBlock;
|
||||
|
||||
typedef struct _DoseRate_Block_
|
||||
{
|
||||
/* b-gEfficiency Block */
|
||||
QVector<double> rate; // 剂量率
|
||||
QVector<double> uncertainty; // 计量不确定性
|
||||
QVector<QString> date; // 日期
|
||||
QVector<QString> time; //时间
|
||||
QVector<long> interval_duration; //与上次间隔时间
|
||||
int record_count;
|
||||
}
|
||||
DoseRateBlock, *PtDoseRateBlock;
|
||||
|
||||
typedef struct _b_self_Attenuation_block_
|
||||
{
|
||||
/* b_self_Attenuation Block */
|
||||
|
@ -540,6 +570,7 @@ namespace RadionuclideData
|
|||
|
||||
}
|
||||
Q_DECLARE_METATYPE(RadionuclideData::HeaderBlock)
|
||||
Q_DECLARE_METATYPE(RadionuclideData::DosHeaderBlock)
|
||||
Q_DECLARE_METATYPE(RadionuclideData::AcquisitionBlock)
|
||||
Q_DECLARE_METATYPE(RadionuclideData::CollectionBlock)
|
||||
Q_DECLARE_METATYPE(RadionuclideData::ProcessingBlock)
|
||||
|
@ -562,6 +593,7 @@ Q_DECLARE_METATYPE(RadionuclideData::NBG_EfficiencyBlock)
|
|||
Q_DECLARE_METATYPE(RadionuclideData::BSelfAttenuationBlock)
|
||||
Q_DECLARE_METATYPE(RadionuclideData::n_G_EfficiencyBlock)
|
||||
Q_DECLARE_METATYPE(RadionuclideData::GpsBlock)
|
||||
Q_DECLARE_METATYPE(RadionuclideData::DoseRateBlock)
|
||||
|
||||
namespace MetData
|
||||
{
|
||||
|
|
|
@ -116,9 +116,10 @@ void RadionuclideMessage::InitBlockFlagInfo()
|
|||
block_flag.append(QLatin1String("STOP")); // [ STOP ]
|
||||
block_flag.append(QLatin1String("BEGIN")); // [ BEGIN ]
|
||||
block_flag.append(QLatin1String("#Spectrum")); // [ 22 ]
|
||||
block_flag.append(QLatin1String("#GPS")); // [ 23 ]
|
||||
block_flag.append(QLatin1String("#GPS")); // [ 23 ]
|
||||
block_flag.append(QLatin1String("#b_self_Attenuation")); // [ 24 ]
|
||||
block_flag.append(QLatin1String("#b_Efficiency")); // [ 25 ]
|
||||
block_flag.append(QLatin1String("#b_Efficiency")); // [ 25 ]
|
||||
block_flag.append(QLatin1String("#DoseRate")); // [ 26 ]
|
||||
}
|
||||
|
||||
bool RadionuclideMessage::AnalyseMessgeBody(QTextStream &content)
|
||||
|
@ -131,7 +132,8 @@ bool RadionuclideMessage::AnalyseMessgeBody(QTextStream &content)
|
|||
QLatin1String("BLANKPHD") != msg.data_type &&
|
||||
QLatin1String("DETBKPHD") != msg.data_type &&
|
||||
QLatin1String("QCPHD") != msg.data_type &&
|
||||
QLatin1String("CALIBPHD") != msg.data_type )
|
||||
QLatin1String("CALIBPHD") != msg.data_type &&
|
||||
QLatin1String("RMSDOS") != msg.data_type)
|
||||
{
|
||||
return bIsValid = false;
|
||||
}
|
||||
|
@ -235,6 +237,10 @@ bool RadionuclideMessage::AnalyseMessgeBody(QTextStream &content)
|
|||
{
|
||||
bRet &= Analyse_b_Efficiency_Block(content, line);
|
||||
}
|
||||
else if ( 0==line.compare(block_flag.at(26)) && bRet)
|
||||
{
|
||||
bRet &= Analyse_DoseRate_Block(content, line);
|
||||
}
|
||||
else
|
||||
{ // 数据错误,数据有效
|
||||
bIsValid = false;
|
||||
|
@ -264,6 +270,21 @@ bool RadionuclideMessage::AnalyseMessgeBody(QTextStream &content)
|
|||
|
||||
bool RadionuclideMessage::Analyse_Header_Block(QTextStream& content, QString& nextBlock)
|
||||
{
|
||||
const MessageInfo& msg = AbstractSpectrumDataMessage::GetMessageInfo();
|
||||
if(msg.data_type == QStringLiteral("RMSDOS"))
|
||||
{
|
||||
DosHeaderBlock dheader;
|
||||
content >> dheader.site_code >> dheader.detector_code >> dheader.sample_start_date >> dheader.sample_start_time
|
||||
>> dheader.sample_end_date >> dheader.sample_end_time >> dheader.send_date >> dheader.send_time;
|
||||
|
||||
radionuclide_msg_data.insert(block_flag.at(0), QVariant::fromValue(dheader));
|
||||
|
||||
content >> nextBlock;
|
||||
content.readLine(); //该处的读取行内容操作仅将文件光标移至下一行开头
|
||||
|
||||
return (content.status()==QTextStream::Ok)?true:false;
|
||||
|
||||
}
|
||||
HeaderBlock Header;
|
||||
QString &line = nextBlock;
|
||||
Header.designator = line.mid(8);
|
||||
|
@ -272,7 +293,6 @@ bool RadionuclideMessage::Analyse_Header_Block(QTextStream& content, QString& ne
|
|||
content.readLine();
|
||||
|
||||
m_system_type = Header.system_type;
|
||||
const MessageInfo& msg = AbstractSpectrumDataMessage::GetMessageInfo();
|
||||
if ( msg.verify_srid )
|
||||
{
|
||||
bool bRet = Verity_SampleReferenceId( Header.sample_ref_id );
|
||||
|
@ -882,7 +902,6 @@ bool RadionuclideMessage::Analyse_Histogram_Block(QTextStream& content, QString&
|
|||
{
|
||||
Histogram.b_channels = Histogram.counts.count()/row;
|
||||
}
|
||||
|
||||
#if 0
|
||||
long& row_size = Histogram.b_channels;
|
||||
long& column_size = Histogram.g_channels;
|
||||
|
@ -1065,6 +1084,40 @@ bool RadionuclideMessage::Analyse_b_Efficiency_Block(QTextStream &content, QStri
|
|||
return (content.status()==QTextStream::Ok)?true:false;
|
||||
}
|
||||
|
||||
bool RadionuclideMessage::Analyse_DoseRate_Block(QTextStream &content, QString &nextBlock)
|
||||
{
|
||||
DoseRateBlock dosr;
|
||||
int row_count = 0;
|
||||
nextBlock = content.readLine();
|
||||
QString temp_line = nextBlock.simplified();
|
||||
while (!block_flag.contains(temp_line) && !content.atEnd())
|
||||
{
|
||||
double rate, uncertainty;
|
||||
QString date, time;
|
||||
long interval_duration;
|
||||
QTextStream line_content(&nextBlock);
|
||||
line_content >> rate >> uncertainty >> date >> time >> interval_duration;
|
||||
|
||||
dosr.rate.push_back(rate);
|
||||
dosr.uncertainty.push_back(uncertainty);
|
||||
dosr.date.push_back(date);
|
||||
dosr.time.push_back(time);
|
||||
dosr.interval_duration.push_back(interval_duration);
|
||||
|
||||
++ row_count;
|
||||
nextBlock = content.readLine();
|
||||
temp_line = nextBlock.simplified();
|
||||
|
||||
if (line_content.status()==QTextStream::ReadCorruptData)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
dosr.record_count = row_count;
|
||||
radionuclide_msg_data.insert(block_flag.at(26), QVariant::fromValue(dosr));
|
||||
return (content.status()==QTextStream::Ok)?true:false;
|
||||
}
|
||||
|
||||
bool RadionuclideMessage::Verity_SampleReferenceId(QString srid)
|
||||
{
|
||||
bool bRet = true;
|
||||
|
|
|
@ -48,6 +48,7 @@ private:
|
|||
bool Analyse_Gps_Block(QTextStream& content, QString& nextBlock);
|
||||
bool Analyse_b_self_Attenuation_Block(QTextStream& content, QString& nextBlock);
|
||||
bool Analyse_b_Efficiency_Block(QTextStream& content, QString& nextBlock);
|
||||
bool Analyse_DoseRate_Block(QTextStream& content, QString& nextBlock);
|
||||
bool Verity_SampleReferenceId(QString srid);
|
||||
|
||||
private:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE QtCreatorProject>
|
||||
<!-- Written by QtCreator 4.9.1, 2024-09-29T15:10:42. -->
|
||||
<!-- Written by QtCreator 4.9.1, 2024-12-12T16:21:19. -->
|
||||
<qtcreator>
|
||||
<data>
|
||||
<variable>EnvironmentId</variable>
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include <QJsonDocument>
|
||||
#include <QJsonArray>
|
||||
#include <QJsonObject>
|
||||
#include <QTextCodec>
|
||||
|
||||
JNIEXPORT jobject JNICALL Java_org_jeecg_modules_native_1jni_EnergySpectrumHandler_getSourceData(JNIEnv* env, jclass obj, jstring PHDfile)
|
||||
{
|
||||
|
@ -63,6 +64,7 @@ JNIEXPORT jobject JNICALL Java_org_jeecg_modules_native_1jni_EnergySpectrumHandl
|
|||
bool Histogramflag = true;
|
||||
bool totalflag = true;
|
||||
bool gpsflag = true;
|
||||
bool b_efficiencyflag = true;
|
||||
|
||||
QString order;
|
||||
QVariant variant;
|
||||
|
@ -308,8 +310,8 @@ JNIEXPORT jobject JNICALL Java_org_jeecg_modules_native_1jni_EnergySpectrumHandl
|
|||
cresult.g_e_efficiency = CplusToJava::QVectorD2jobjectArray(ngeff.efficiency, env);
|
||||
allSize["g_e_uncertainty"] = ngeff.uncertainty.size();
|
||||
cresult.g_e_uncertainty = CplusToJava::QVectorD2jobjectArray(ngeff.uncertainty, env);
|
||||
allSize["g_e_nuclide"] = ngeff.dev_name.size();
|
||||
cresult.g_e_nuclide = CplusToJava::QVectorQS2jobjectArray(ngeff.dev_name, env);
|
||||
allSize["g_e_nuclide_name"] = ngeff.dev_name.size();
|
||||
cresult.g_e_nuclide_name = CplusToJava::QVectorQS2jobjectArray(ngeff.dev_name, env);
|
||||
cresult.g_e_record_count = ngeff.record_count;
|
||||
}
|
||||
else {
|
||||
|
@ -539,6 +541,30 @@ JNIEXPORT jobject JNICALL Java_org_jeecg_modules_native_1jni_EnergySpectrumHandl
|
|||
cresult.lon = gps.lon;
|
||||
}
|
||||
|
||||
//b_efficiency block内容获取
|
||||
order = ORDER_NB_GEFFICIENCY;
|
||||
variant = message.GetBlockData(order);
|
||||
if (!variant.isValid())
|
||||
{
|
||||
// printf((order.toStdString() + " get failed\n").c_str());
|
||||
b_efficiencyflag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
RadionuclideData::NBG_EfficiencyBlock beff = variant.value<RadionuclideData::NBG_EfficiencyBlock>();
|
||||
cresult.b_e_nuclide_name = CplusToJava::QVectorQS2jobjectArray(beff.nuclide_name, env);
|
||||
allSize["b_e_nuclide_name"] = beff.nuclide_name.size();
|
||||
|
||||
cresult.b_e_efficiency = CplusToJava::QVectorD2jobjectArray(beff.bg_efficiency, env);
|
||||
allSize["b_e_efficiency"] = beff.bg_efficiency.size();
|
||||
// printf("b eff ciency size : %d\n", beff.bg_efficiency.size());
|
||||
|
||||
cresult.b_e_uncertainty = CplusToJava::QVectorD2jobjectArray(beff.uncertainty, env);
|
||||
allSize["b_e_uncertainty"] = beff.uncertainty.size();
|
||||
// printf("b eff uncertainty size : %d\n", beff.uncertainty.size());
|
||||
cresult.b_efficiency_record_count = beff.record_count;
|
||||
}
|
||||
|
||||
if ((!headerflag) || (!commentflag) || (!sampleflag) || (!certificateflag) || (!acquisitionflag) || (!collectionflag) || (!processflag)
|
||||
|| (!calibrationflag) || (!g_energyflag) || (!b_energyflag) || (!g_Resolutionflag) || (!b_Resolutionflag) || (!g_Efficiencyflag)
|
||||
|| (!roi_limitsflag) || (!b_gEfficiencyflag) || (!ratiosflag) || (!g_Spectrumflag) || (!b_Spectrumflag) || (!Histogramflag)
|
||||
|
@ -811,8 +837,8 @@ JNIEXPORT jobject JNICALL Java_org_jeecg_modules_native_1jni_EnergySpectrumHandl
|
|||
if (g_Efficiencyflag)
|
||||
{
|
||||
//设置成员变量g_e_name的值
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "g_e_nuclide", SIG_LIST);
|
||||
fieldJobject = CplusToJava::Createjobject(env, allSize["g_e_nuclide"], cresult.g_e_nuclide);
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "g_e_nuclide_name", SIG_LIST);
|
||||
fieldJobject = CplusToJava::Createjobject(env, allSize["g_e_nuclide_name"], cresult.g_e_nuclide_name);
|
||||
env->SetObjectField(result, fieldID, fieldJobject);
|
||||
|
||||
//设置成员变量g_e_energy的值
|
||||
|
@ -985,14 +1011,14 @@ JNIEXPORT jobject JNICALL Java_org_jeecg_modules_native_1jni_EnergySpectrumHandl
|
|||
env->SetLongField(result, fieldID, cresult.g_h_energy_span);
|
||||
|
||||
//设置成员变量h_counts的值
|
||||
// fieldID = env->GetFieldID(energySpectrumStructClass, "h_counts", SIG_LIST);
|
||||
// fieldJobject = CplusToJava::Createjobject(env, allSize["h_counts"], cresult.h_counts);
|
||||
// env->SetObjectField(result, fieldID, fieldJobject);
|
||||
|
||||
//设置成员变量h_counts_arr的值
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "h_count_arr", SIG_LONG_ARRAY);
|
||||
fieldJobject = CplusToJava::Create2Djobject(env, allSize["g_counts"], cresult.h_counts,cresult.g_channels, cresult.b_channels);
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "h_counts", SIG_LIST);
|
||||
fieldJobject = CplusToJava::Createjobject(env, allSize["h_counts"], cresult.h_counts);
|
||||
env->SetObjectField(result, fieldID, fieldJobject);
|
||||
|
||||
// //设置成员变量h_counts_arr的值
|
||||
// fieldID = env->GetFieldID(energySpectrumStructClass, "h_count_arr", SIG_LONG_ARRAY);
|
||||
// fieldJobject = CplusToJava::Create2Djobject(env, allSize["g_counts"], cresult.h_counts,cresult.g_channels, cresult.b_channels);
|
||||
// env->SetObjectField(result, fieldID, fieldJobject);
|
||||
}
|
||||
|
||||
if (certificateflag)
|
||||
|
@ -1100,6 +1126,24 @@ JNIEXPORT jobject JNICALL Java_org_jeecg_modules_native_1jni_EnergySpectrumHandl
|
|||
env->SetDoubleField(result, fieldID, cresult.lat);
|
||||
}
|
||||
|
||||
if(b_efficiencyflag)
|
||||
{
|
||||
//设置成员变量bg_nuclide_name的值
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "b_e_nuclide_name", SIG_LIST);
|
||||
fieldJobject = CplusToJava::Createjobject(env, allSize["b_e_nuclide_name"], cresult.b_e_nuclide_name);
|
||||
env->SetObjectField(result, fieldID, fieldJobject);
|
||||
|
||||
//设置成员变量bg_nuclide_name的值
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "b_e_efficiency", SIG_LIST);
|
||||
fieldJobject = CplusToJava::Createjobject(env, allSize["b_e_efficiency"], cresult.b_e_efficiency);
|
||||
env->SetObjectField(result, fieldID, fieldJobject);
|
||||
|
||||
//设置成员变量bg_nuclide_name的值
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "b_e_uncertainty", SIG_LIST);
|
||||
fieldJobject = CplusToJava::Createjobject(env, allSize["b_e_uncertainty"], cresult.b_e_uncertainty);
|
||||
env->SetObjectField(result, fieldID, fieldJobject);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -1154,6 +1198,8 @@ JNIEXPORT jobject JNICALL Java_org_jeecg_modules_native_1jni_EnergySpectrumHandl
|
|||
bool Histogramflag = true;
|
||||
bool totalflag = true;
|
||||
bool gpsflag = true;
|
||||
bool b_efficiencyflag = true;
|
||||
bool b_self_Attenuation = true;
|
||||
|
||||
QString order;
|
||||
QVariant variant;
|
||||
|
@ -1398,8 +1444,8 @@ JNIEXPORT jobject JNICALL Java_org_jeecg_modules_native_1jni_EnergySpectrumHandl
|
|||
cresult.g_e_efficiency = CplusToJava::QVectorD2jobjectArray(ngeff.efficiency, env);
|
||||
allSize["g_e_uncertainty"] = ngeff.uncertainty.size();
|
||||
cresult.g_e_uncertainty = CplusToJava::QVectorD2jobjectArray(ngeff.uncertainty, env);
|
||||
allSize["g_e_nuclide"] = ngeff.dev_name.size();
|
||||
cresult.g_e_nuclide = CplusToJava::QVectorQS2jobjectArray(ngeff.dev_name, env);
|
||||
allSize["g_e_nuclide_name"] = ngeff.dev_name.size();
|
||||
cresult.g_e_nuclide_name = CplusToJava::QVectorQS2jobjectArray(ngeff.dev_name, env);
|
||||
cresult.g_e_record_count = ngeff.record_count;
|
||||
}
|
||||
else {
|
||||
|
@ -1629,6 +1675,108 @@ JNIEXPORT jobject JNICALL Java_org_jeecg_modules_native_1jni_EnergySpectrumHandl
|
|||
cresult.lon = gps.lon;
|
||||
}
|
||||
|
||||
//b_efficiency block内容获取
|
||||
order = ORDER_NB_GEFFICIENCY;
|
||||
variant = message.GetBlockData(order);
|
||||
if (!variant.isValid())
|
||||
{
|
||||
// printf((order.toStdString() + " get failed\n").c_str());
|
||||
b_efficiencyflag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
RadionuclideData::NBG_EfficiencyBlock beff = variant.value<RadionuclideData::NBG_EfficiencyBlock>();
|
||||
cresult.b_e_nuclide_name = CplusToJava::QVectorQS2jobjectArray(beff.nuclide_name, env);
|
||||
allSize["b_e_nuclide_name"] = beff.nuclide_name.size();
|
||||
|
||||
cresult.b_e_efficiency = CplusToJava::QVectorD2jobjectArray(beff.bg_efficiency, env);
|
||||
allSize["b_e_efficiency"] = beff.bg_efficiency.size();
|
||||
|
||||
cresult.b_e_uncertainty = CplusToJava::QVectorD2jobjectArray(beff.uncertainty, env);
|
||||
allSize["b_e_uncertainty"] = beff.uncertainty.size();
|
||||
cresult.b_efficiency_record_count = beff.record_count;
|
||||
}
|
||||
|
||||
//b_efficiency block内容获取
|
||||
order = ORDER_NB_GEFFICIENCY;
|
||||
variant = message.GetBlockData(order);
|
||||
if (!variant.isValid())
|
||||
{
|
||||
// printf((order.toStdString() + " get failed\n").c_str());
|
||||
b_efficiencyflag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
RadionuclideData::NBG_EfficiencyBlock beff = variant.value<RadionuclideData::NBG_EfficiencyBlock>();
|
||||
cresult.b_e_nuclide_name = CplusToJava::QVectorQS2jobjectArray(beff.nuclide_name, env);
|
||||
allSize["b_e_nuclide_name"] = beff.nuclide_name.size();
|
||||
|
||||
cresult.b_e_efficiency = CplusToJava::QVectorD2jobjectArray(beff.bg_efficiency, env);
|
||||
allSize["b_e_efficiency"] = beff.bg_efficiency.size();
|
||||
|
||||
cresult.b_e_uncertainty = CplusToJava::QVectorD2jobjectArray(beff.uncertainty, env);
|
||||
allSize["b_e_uncertainty"] = beff.uncertainty.size();
|
||||
cresult.b_efficiency_record_count = beff.record_count;
|
||||
}
|
||||
|
||||
RadionuclideData::BSelfAttenuationBlock bsel;
|
||||
order = ORDER_BSELF;
|
||||
variant = message.GetBlockData(order);
|
||||
if (!variant.isValid())
|
||||
{
|
||||
b_self_Attenuation = false;
|
||||
}
|
||||
else {
|
||||
bsel = variant.value<RadionuclideData::BSelfAttenuationBlock>();
|
||||
cresult.b_s_a_nuclide_name = CplusToJava::QVectorQS2jobjectArray(bsel.devNames, env);
|
||||
allSize["b_s_a_nuclide_name"] = bsel.devNames.size();
|
||||
|
||||
int offset = 0;
|
||||
auto stdarrar2qvector = [&offset](QVector<std::array<double, 3>> data1, QVector<std::array<double, 3>> data2)->QVector<double>{
|
||||
QVector<double> buf1;
|
||||
for(int i = 0; i < 4; i++)
|
||||
{
|
||||
if(offset > 2)
|
||||
{
|
||||
buf1.append(data2[i][offset - 3]);
|
||||
}
|
||||
else {
|
||||
buf1.append(data1[i][offset]);
|
||||
}
|
||||
}
|
||||
offset++;
|
||||
return buf1;
|
||||
};
|
||||
|
||||
QVector<double> buf;
|
||||
|
||||
buf = stdarrar2qvector(bsel.xenon,bsel.nitrogen);
|
||||
cresult.b_s_a_coeff1 = CplusToJava::QVectorD2jobjectArray(buf, env);
|
||||
allSize["b_s_a_coeff1"] = buf.size();
|
||||
|
||||
buf = stdarrar2qvector(bsel.xenon,bsel.nitrogen);
|
||||
cresult.b_s_a_coeff2 = CplusToJava::QVectorD2jobjectArray(buf, env);
|
||||
allSize["b_s_a_coeff2"] = buf.size();
|
||||
|
||||
buf = stdarrar2qvector(bsel.xenon,bsel.nitrogen);
|
||||
cresult.b_s_a_coeff3 = CplusToJava::QVectorD2jobjectArray(buf, env);
|
||||
allSize["b_s_a_coeff3"] = buf.size();
|
||||
|
||||
buf = stdarrar2qvector(bsel.xenon,bsel.nitrogen);
|
||||
cresult.b_s_a_coeff4 = CplusToJava::QVectorD2jobjectArray(buf, env);
|
||||
allSize["b_s_a_coeff4"] = buf.size();
|
||||
|
||||
buf = stdarrar2qvector(bsel.xenon,bsel.nitrogen);
|
||||
cresult.b_s_a_coeff5 = CplusToJava::QVectorD2jobjectArray(buf, env);
|
||||
allSize["b_s_a_coeff5"] = buf.size();
|
||||
|
||||
buf = stdarrar2qvector(bsel.xenon,bsel.nitrogen);
|
||||
cresult.b_s_a_coeff6 = CplusToJava::QVectorD2jobjectArray(buf, env);
|
||||
allSize["b_s_a_coeff6"] = buf.size();
|
||||
|
||||
|
||||
}
|
||||
|
||||
if ((!headerflag) || (!commentflag) || (!sampleflag) || (!certificateflag) || (!acquisitionflag) || (!collectionflag) || (!processflag)
|
||||
|| (!calibrationflag) || (!g_energyflag) || (!b_energyflag) || (!g_Resolutionflag) || (!b_Resolutionflag) || (!g_Efficiencyflag)
|
||||
|| (!roi_limitsflag) || (!b_gEfficiencyflag) || (!ratiosflag) || (!g_Spectrumflag) || (!b_Spectrumflag) || (!Histogramflag)
|
||||
|
@ -1903,8 +2051,8 @@ JNIEXPORT jobject JNICALL Java_org_jeecg_modules_native_1jni_EnergySpectrumHandl
|
|||
if (g_Efficiencyflag)
|
||||
{
|
||||
//设置成员变量g_e_name的值
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "g_e_nuclide", SIG_LIST);
|
||||
fieldJobject = CplusToJava::Createjobject(env, allSize["g_e_nuclide"], cresult.g_e_nuclide);
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "g_e_nuclide_name", SIG_LIST);
|
||||
fieldJobject = CplusToJava::Createjobject(env, allSize["g_e_nuclide_name"], cresult.g_e_nuclide_name);
|
||||
env->SetObjectField(result, fieldID, fieldJobject);
|
||||
|
||||
//设置成员变量g_e_energy的值
|
||||
|
@ -2189,6 +2337,63 @@ JNIEXPORT jobject JNICALL Java_org_jeecg_modules_native_1jni_EnergySpectrumHandl
|
|||
fieldID = env->GetFieldID(energySpectrumStructClass, "lat", SIG_DOUBLE);
|
||||
env->SetDoubleField(result, fieldID, cresult.lat);
|
||||
}
|
||||
|
||||
if(b_efficiencyflag)
|
||||
{
|
||||
//设置成员变量bg_nuclide_name的值
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "b_e_nuclide_name", SIG_LIST);
|
||||
fieldJobject = CplusToJava::Createjobject(env, allSize["b_e_nuclide_name"], cresult.b_e_nuclide_name);
|
||||
env->SetObjectField(result, fieldID, fieldJobject);
|
||||
|
||||
//设置成员变量bg_nuclide_name的值
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "b_e_efficiency", SIG_LIST);
|
||||
fieldJobject = CplusToJava::Createjobject(env, allSize["b_e_efficiency"], cresult.b_e_efficiency);
|
||||
env->SetObjectField(result, fieldID, fieldJobject);
|
||||
|
||||
//设置成员变量bg_nuclide_name的值
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "b_e_uncertainty", SIG_LIST);
|
||||
fieldJobject = CplusToJava::Createjobject(env, allSize["b_e_uncertainty"], cresult.b_e_uncertainty);
|
||||
env->SetObjectField(result, fieldID, fieldJobject);
|
||||
}
|
||||
|
||||
if(b_self_Attenuation)
|
||||
{
|
||||
//设置成员变量b_s_a_nuclide_name的值
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "b_s_a_nuclide_name", SIG_LIST);
|
||||
fieldJobject = CplusToJava::Createjobject(env, allSize["b_s_a_nuclide_name"], cresult.b_s_a_nuclide_name);
|
||||
env->SetObjectField(result, fieldID, fieldJobject);
|
||||
|
||||
//设置成员变量b_s_a_coeff1的值
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "b_s_a_coeff1", SIG_LIST);
|
||||
fieldJobject = CplusToJava::Createjobject(env, allSize["b_s_a_coeff1"], cresult.b_s_a_coeff1);
|
||||
env->SetObjectField(result, fieldID, fieldJobject);
|
||||
|
||||
//设置成员变量b_s_a_coeff2的值
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "b_s_a_coeff2", SIG_LIST);
|
||||
fieldJobject = CplusToJava::Createjobject(env, allSize["b_s_a_coeff2"], cresult.b_s_a_coeff2);
|
||||
env->SetObjectField(result, fieldID, fieldJobject);
|
||||
|
||||
//设置成员变量b_s_a_coeff3的值
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "b_s_a_coeff3", SIG_LIST);
|
||||
fieldJobject = CplusToJava::Createjobject(env, allSize["b_s_a_coeff3"], cresult.b_s_a_coeff3);
|
||||
env->SetObjectField(result, fieldID, fieldJobject);
|
||||
|
||||
//设置成员变量b_s_a_coeff4的值
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "b_s_a_coeff4", SIG_LIST);
|
||||
fieldJobject = CplusToJava::Createjobject(env, allSize["b_s_a_coeff4"], cresult.b_s_a_coeff4);
|
||||
env->SetObjectField(result, fieldID, fieldJobject);
|
||||
|
||||
//设置成员变量b_s_a_coeff5的值
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "b_s_a_coeff5", SIG_LIST);
|
||||
fieldJobject = CplusToJava::Createjobject(env, allSize["b_s_a_coeff5"], cresult.b_s_a_coeff5);
|
||||
env->SetObjectField(result, fieldID, fieldJobject);
|
||||
|
||||
//设置成员变量b_s_a_coeff1的值
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "b_s_a_coeff6", SIG_LIST);
|
||||
fieldJobject = CplusToJava::Createjobject(env, allSize["b_s_a_coeff6"], cresult.b_s_a_coeff6);
|
||||
env->SetObjectField(result, fieldID, fieldJobject);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -5057,3 +5262,126 @@ jstring Java_org_jeecg_modules_native_1jni_EnergySpectrumHandler_selfBgAnalyse(J
|
|||
jstring jresult = env->NewStringUTF(simpjson_str.toStdString().c_str());
|
||||
return jresult;
|
||||
}
|
||||
|
||||
jobject Java_org_jeecg_modules_native_1jni_EnergySpectrumHandler_getDOSSourceData(JNIEnv *env, jclass obj, jstring PHDfile)
|
||||
{
|
||||
//创建结构体对象并填充内容
|
||||
DOSResult cresult;
|
||||
memset(&cresult,0 ,sizeof(cresult));
|
||||
|
||||
//文件名转换
|
||||
QString qfilename = CplusToJava::jstring2QString(env, PHDfile);
|
||||
printf("phd file %s\n", qfilename.toStdString().c_str());
|
||||
|
||||
//文件解析
|
||||
RadionuclideMessage message;
|
||||
bool readflag = message.AnalysePHD_File(qfilename);
|
||||
if (!readflag)
|
||||
{
|
||||
// **************** printf("THE PHDfile get failed:");
|
||||
// printf(qfilename.toStdString().c_str());
|
||||
// **************** printf("\n");
|
||||
}
|
||||
|
||||
bool headerflag = true;
|
||||
bool doseRateflag = true;
|
||||
|
||||
QString order;
|
||||
QVariant variant;
|
||||
|
||||
//header内容获取
|
||||
RadionuclideData::DosHeaderBlock headerBlock;
|
||||
order = ORDER_HEADER;
|
||||
variant = message.GetBlockData(order);
|
||||
if (!variant.isValid())
|
||||
{
|
||||
// printf((order.toStdString() + " get failed\n").c_str());
|
||||
headerflag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
headerBlock = variant.value<RadionuclideData::DosHeaderBlock>();
|
||||
cresult.site_code = env->NewStringUTF(headerBlock.site_code.toStdString().c_str());
|
||||
cresult.detector_code = env->NewStringUTF(headerBlock.detector_code.toStdString().c_str());
|
||||
cresult.sample_start_date = env->NewStringUTF(headerBlock.sample_start_date.toStdString().c_str());
|
||||
cresult.sample_start_time = env->NewStringUTF(headerBlock.sample_start_time.toStdString().c_str());
|
||||
}
|
||||
|
||||
//DoseRate内容获取
|
||||
RadionuclideData::DoseRateBlock doseRateBlock;
|
||||
order = DOSERATE;
|
||||
variant = message.GetBlockData(order);
|
||||
if (!variant.isValid())
|
||||
{
|
||||
// printf((order.toStdString() + " get failed\n").c_str());
|
||||
doseRateflag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
doseRateBlock = variant.value<RadionuclideData::DoseRateBlock>();
|
||||
cresult.dose_rate = CplusToJava::QVectorD2jobjectArray(doseRateBlock.rate, env);
|
||||
cresult.uncertainty = CplusToJava::QVectorD2jobjectArray(doseRateBlock.uncertainty, env);
|
||||
cresult.dr_start_date = CplusToJava::QVectorQS2jobjectArray(doseRateBlock.date, env);
|
||||
cresult.dr_start_time = CplusToJava::QVectorQS2jobjectArray(doseRateBlock.time, env);
|
||||
cresult.dr_interval_duration = CplusToJava::QVectorL2jobjectArray(doseRateBlock.interval_duration, env);
|
||||
cresult.record_count = doseRateBlock.record_count;
|
||||
}
|
||||
|
||||
// if(headerflag && doseRareflag)
|
||||
// {
|
||||
|
||||
// }
|
||||
|
||||
//获取Java中的EnergySpectrumStruct类
|
||||
jclass energySpectrumStructClass = env->FindClass("Lorg/jeecg/modules/native_jni/struct/DOSSpectrumStruct;");
|
||||
|
||||
// 创建Java中的EnergySpectrumStruct对象
|
||||
jmethodID constructorID = env->GetMethodID(energySpectrumStructClass, "<init>", "()V");
|
||||
jobject result = env->NewObject(energySpectrumStructClass, constructorID);
|
||||
|
||||
jobject fieldJobject;
|
||||
jfieldID fieldID;
|
||||
|
||||
if (headerflag)
|
||||
{
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "station_code", SIG_STRING);
|
||||
env->SetObjectField(result, fieldID, cresult.site_code);
|
||||
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "detector_code", SIG_STRING);
|
||||
env->SetObjectField(result, fieldID, cresult.detector_code);
|
||||
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "start_date", SIG_STRING);
|
||||
env->SetObjectField(result, fieldID, cresult.sample_start_date);
|
||||
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "start_time", SIG_STRING);
|
||||
env->SetObjectField(result, fieldID, cresult.sample_start_time);
|
||||
}
|
||||
|
||||
if(doseRateflag)
|
||||
{
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "dose_rate", SIG_LIST);
|
||||
fieldJobject = CplusToJava::Createjobject(env, cresult.record_count, cresult.dose_rate);
|
||||
env->SetObjectField(result, fieldID, fieldJobject);
|
||||
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "uncertainty", SIG_LIST);
|
||||
fieldJobject = CplusToJava::Createjobject(env, cresult.record_count, cresult.uncertainty);
|
||||
env->SetObjectField(result, fieldID, fieldJobject);
|
||||
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "dr_start_date", SIG_LIST);
|
||||
fieldJobject = CplusToJava::Createjobject(env, cresult.record_count, cresult.dr_start_date);
|
||||
env->SetObjectField(result, fieldID, fieldJobject);
|
||||
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "dr_start_time", SIG_LIST);
|
||||
fieldJobject = CplusToJava::Createjobject(env, cresult.record_count, cresult.dr_start_time);
|
||||
env->SetObjectField(result, fieldID, fieldJobject);
|
||||
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "dr_interval_duration", SIG_LIST);
|
||||
fieldJobject = CplusToJava::Createjobject(env, cresult.record_count, cresult.dr_interval_duration);
|
||||
env->SetObjectField(result, fieldID, fieldJobject);
|
||||
|
||||
fieldID = env->GetFieldID(energySpectrumStructClass, "dr_record_count", SIG_INT);
|
||||
env->SetIntField(result, fieldID, cresult.record_count);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
|
@ -21,10 +21,18 @@ extern "C" {
|
|||
|
||||
/*
|
||||
* Class: org_jeecg_modules_native_jni_EnergySpectrumHandler
|
||||
* Method: getSourceData_test
|
||||
* Method: getSourceDataNotHis
|
||||
* Signature: (Ljava/lang/String;)Ljava/lang/String;
|
||||
*/
|
||||
JNIEXPORT jobject JNICALL Java_org_jeecg_modules_native_1jni_EnergySpectrumHandler_getSourceDataNotHis
|
||||
(JNIEnv* env, jclass obj, jstring PHDfile);
|
||||
|
||||
/*
|
||||
* Class: org_jeecg_modules_native_jni_EnergySpectrumHandler
|
||||
* Method: getDOSSourceData
|
||||
* Signature: (Ljava/lang/String;)Ljava/lang/String;
|
||||
*/
|
||||
JNIEXPORT jobject JNICALL Java_org_jeecg_modules_native_1jni_EnergySpectrumHandler_getDOSSourceData
|
||||
(JNIEnv* env, jclass obj, jstring PHDfile);
|
||||
/*
|
||||
* Class: org_jeecg_modules_native_jni_EnergySpectrumHandler
|
||||
|
|
Loading…
Reference in New Issue
Block a user