AnalysisSystemForRadionucli.../CplusToJava.h

428 lines
21 KiB
C
Raw Normal View History

2024-06-04 15:27:02 +08:00
#pragma once
#include "jni.h"
#include <QVector>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>java<76><61>sig<69><67>Ӧ
2024-09-11 16:44:40 +08:00
#define SIG_STRING "Ljava/lang/String;"
#define SIG_LIST "Ljava/util/List;"
#define SIG_DOUBLE "D"
#define SIG_INT "I"
#define SIG_LONG "J"
#define SIG_SHORT "S"
#define SIG_BOOL "Z"
#define SIG_LONG_ARRAY "[[J"
2024-06-04 15:27:02 +08:00
enum BindType { BIND_NONE, BIND_STRING, BIND_CHAR, BIND_DOUBLE, BIND_INT };
typedef struct _Read_Result_
{
/* Infomations */
jstring msg_type;
jstring msg_id;
jstring data_type;
/* Header Black */
jstring designator; // designator
jstring site_code; // site code
jstring detector_code; // detector code
jstring system_type; // system type: P for particulate; B for gas with 3-D <20><> - <20><> coincidence detection; and
// G for all other gas systems (high-resolu-tion <20><>-spectrometry or 2-D <20><>-<2D><> coinci-dence detection)
jstring sample_geometry; // sample geometry
jstring spectrum_quantity; // spectrum qualifier: preliminary ( PREL )or full ( FULL)
jstring sample_ref_id; // sample reference identification
jstring measurement_id; // measurement identification
jstring detector_bk_measurement_id; // detector background measurement identification
jstring gas_bk_measurement_id; // gas background measurement identification (memory effect)
jstring transmit_date; // transmit date (yyyy / mm / dd)
jstring transmit_time; // transmit time (hh : mm : ss . s)
/* Comment Block */
jstring comment;
/* Sample Block */
jdouble dimension_1;
jdouble dimension_2;
/* Acquisition Block */
jstring acquisition_start_date; // acquisition start date (yyyy / mm / dd)
jstring acquisition_start_time; // acquisition start time (hh : mm : ss . s)
jdouble acquisition_real_time; // acquisition real time (s)
jdouble acquisition_live_time; // acquisition live time (s)
/* Collection Block */
jstring collection_start_date; // collection start date (yyyy / mm / dd)
jstring collection_start_time; // collection start time (hh : mm : ss . s)
jstring collection_stop_date; // collection stop date (yyyy / mm / dd)
jstring collection_stop_time; // collection stop time (hh : mm : ss . s)
jdouble air_volume; // total air volume sampled (standard cubic meters [scm])
/* Processing Block */
jdouble sample_volume_of_Xe; // sample volume of Xe (cm 3 )
jdouble uncertainty_1; // uncertainty (cm 3 )
jdouble Xe_collection_yield; // Xe collection yield (Xe gas in sample/total Xe gas sampled)
jdouble uncertainty_2; // uncertainty (Xe gas in sample/total Xe gas sampled)
jstring archive_bottle_id; // archive bottle identification
/* Calibration Block */
jstring date_calibration; // date of last calibration (yyyy / mm / dd)
jstring time_calibration; // time of last calibration (hh : mm : ss)
/* g_Energy Block */
jobjectArray g_energy; // <20><> -energy (keV)
jobjectArray g_centroid_channel; // centroid channel
jobjectArray g_uncertainty; // uncertainty (channels)
jint g_record_count;
/* b_Energy Block */
jobjectArray b_electron_energy; // electron energy (keV)
jobjectArray b_decay_mode; // decay mode descriptor: B for <20><>-particle, C for conversion electron (CE)
jobjectArray b_channel; // maximum channel of <20><>-particle distribution or centroid channel of CE (channels)
jobjectArray b_uncertainty; // uncertainty (channels)
jint b_record_count;
/* g_Resolution Block */
jobjectArray g_r_energy; // <20><> -energy (keV)
jobjectArray g_r_FWHM; // FWHM (keV)
jobjectArray g_r_uncertainty; // uncertainty (keV)
jint g_r_record_count;
/* b_Resolution Block */
jobjectArray b_r_electron_energy; // electron energy (keV)
jobjectArray b_r_FWHM; // FWHM (keV)
jobjectArray b_r_uncertainty; // uncertainty (keV)
jint b_r_record_count;
/* g_Efficiency Block */
2024-12-12 16:22:26 +08:00
jobjectArray g_e_nuclide_name; // device name
2024-06-04 15:27:02 +08:00
jobjectArray g_e_energy; // <20><> -energy (keV)
jobjectArray g_e_efficiency; // efficiency (counts in peak/photon emitted)
jobjectArray g_e_uncertainty; // uncertainty (counts in peak/photon emitted)
jint g_e_record_count;
/* ROI_Limits Block */
jobjectArray ROI_number; // ROI number
jobjectArray POI_B_x1; // 2-D ROI <20><>-range start, x 1 (keV)
jobjectArray POI_B_x2; // 2-D ROI <20><>-range stop, x 2 (keV)
jobjectArray POI_G_y1; // 2-D ROI <20><>-range start, y 1 (keV)
jobjectArray POI_G_y2; // 2-D ROI <20><>-range stop, y 2 (keV)
jint roi_record_count;
/* b-gEfficiency Block */
jobjectArray bg_nuclide_name; // nuclide name
jobjectArray bg_ROI_number; // ROI number
jobjectArray bg_efficiency; // <20><>-<2D><> coincidence efficiency (counts in ROI/<2F><>-<2D><> pair emitted)
jobjectArray bg_uncertainty; // uncertainty (counts in ROI/<2F><>-<2D><> pair emitted)
jint bg_record_count;
/* Ratios Block */
jobjectArray ratio_id; // ratio identifier
jobjectArray ROI_num_highter_G_energy_ROI; // ROI number for the higher <20><> -energy ROI
jobjectArray ROI_num_lower_G_energy_ROI; // ROI number for the lower <20><> -energy ROI
jobjectArray count_ratio; // Q_DECLARE_METATYPE(RMSSOHData::HeaderBlock)count ratio(counts in higher <20><> -energy ROI/counts in lower <20><> -energy ROI)
jobjectArray count_ratio_uncertainty; // count ratio uncertainty (percent)
jint ratio_record_count;
/* g_Spectrum Block */
jlong num_g_channel; // number of <20><> channels
jlong g_energy_span; // <20><>-energy span (keV)
jlong g_begin_channel; // begin of channels
jobjectArray g_counts; // count at channel
/* b_Spectrum Block */
jlong num_b_channel; // number of <20><> -channels
jlong b_energy_span; // <20><> -energy span (keV)
jlong b_begin_channel; // begin of channels
jobjectArray b_counts; // counts at channels
/* Histogram Block */
jlong b_channels; // <20><>-channels
jlong g_channels; // <20><>-channels
jlong b_h_energy_span; // <20><>-energy span
jlong g_h_energy_span; // <20><>-energy span
jobjectArray h_counts; // counts at channels
/* Certificate Block */
jdouble total_source_activity = 0; // total source activity (Bq)
jstring assay_date; // assay date (yyyy / mm / dd)
jstring assay_time; // assay time (hh : mm : ss)
jstring units_activity; // units of activity: <20><>B,<2C><> <20><>b<EFBFBD><62> for Bq or <20><>[blank]<5D><>; if nothing, then <20><>B<EFBFBD><42> is assigned
jobjectArray nuclide_name; // nuclide name
jobjectArray half_life_time; // half-life in seconds, hours, days, or years
jobjectArray time_unit; // time unit(Y, D, H, S)
jobjectArray activity_nuclide_time_assay; // activity of nuclide at time of assay
jobjectArray uncertainty; // uncertainty (%)
jobjectArray cer_g_energy; // <20><>-energy (keV)
jobjectArray g_intensity; // <20><>-intensity (percent)
jobjectArray electron_decay_mode; // electron decay mode descriptor: B for <20><> particle or C for conversion electron (CE), 0 for none (that is, <20><>-only source)
jobjectArray maximum_energy; // maximum <20><>-particle energy or CE energy (keV)
jobjectArray intensity_b_particle; // intensity of <20><>-particle (percent)
jint record_count = 0;
/* Totaleff Block */
jobjectArray t_g_energy; // <20><>-energy (keV)
jobjectArray total_efficiency; // total efficiency (counts/photon emitted)
jobjectArray t_uncertainty; // uncertainty (counts/photon emitted)
jint t_record_count;
2024-07-16 09:29:13 +08:00
/*gps block*/
jdouble lon;
jdouble lat;
2024-12-12 16:22:26 +08:00
/* b_Efficiency Block */
jobjectArray b_e_nuclide_name; // nuclide name
jobjectArray b_e_efficiency; // ROI number
jobjectArray b_e_uncertainty; // <20><>-<2D><> coincidence efficiency (counts in ROI/<2F><>-<2D><> 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;
2024-06-04 15:27:02 +08:00
}ReadResult;
typedef struct _Generate_Result_
{
//BgGasGenerate BgGas;
jobjectArray g_ROI_B_Boundary_start;
jobjectArray g_ROI_B_Boundary_stop;
jobjectArray g_ROI_G_Boundary_start;
jobjectArray g_ROI_G_Boundary_stop;
jobjectArray g_roi_cts; //<2F><><EFBFBD><EFBFBD><E5B1BE><EFBFBD>׸<EFBFBD><D7B8><EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
jobjectArray g_deduct_d_cts; //<2F><><EFBFBD><EFBFBD><E5B1BE><EFBFBD>׿۳<D7BF>̽<EFBFBD><CCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
jint g_b_fitting_type;
jint g_g_fitting_type;
jobjectArray g_b_fitting_e_c;
jobjectArray g_g_fitting_e_c;
jobjectArray g_b_fitting_c_e;
jobjectArray g_g_fitting_c_e;
//BgSampleGenerate BgSample;
//BgBoundary s_boungdary;
jobjectArray s_ROI_B_Boundary_start;
jobjectArray s_ROI_B_Boundary_stop;
jobjectArray s_ROI_G_Boundary_start;
jobjectArray s_ROI_G_Boundary_stop;
jobjectArray s_roi_cts; //<2F><>Ʒ<EFBFBD>ո<EFBFBD><D5B8><EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
jobjectArray s_deduct_d_cts; //<2F><>Ʒ<EFBFBD>׿۳<D7BF>̽<EFBFBD><CCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
jint s_b_fitting_type;
jint s_g_fitting_type;
jobjectArray s_b_fitting_e_c;
jobjectArray s_g_fitting_e_c;
jobjectArray s_b_fitting_c_e;
jobjectArray s_g_fitting_c_e;
jstring s_collection_time; //<2F>ɼ<EFBFBD>ʱ<EFBFBD><CAB1>
//BgOtherGenerate BgOther;
jobjectArray ROI_net_coutns; //<2F><><EFBFBD><EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
jobjectArray ROI_net_err;
jobjectArray ROI_con_uncer; //<2F><><EFBFBD><EFBFBD>Ȥ<EFBFBD><C8A4>Ũ<EFBFBD>ȺͲ<C8BA>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD> [n..0]Ũ<><C5A8> [n..1]<5D><>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>
jobjectArray ROI_con_counts_factor; //<2F><><EFBFBD><EFBFBD>Ȥ<EFBFBD><C8A4>Ũ<EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>ϵ<EFBFBD><CFB5> [n..0]ϵ<><CFB5>
//enum XeType{both,_131m,_133m,none};
jstring XeType;
jdouble LC_Xe135; //LC XE135
jdouble LC_Xe131m; //LC XE131m
jdouble LC_Xe133m; //LC XE133m
jdouble LC_Xe133; //LC XE133
jobjectArray LC;
jobjectArray LC_CTS;
jdouble MDC_Xe135; //MDC XE135
jdouble MDC_Xe131m; //MDC XE131m
jdouble MDC_Xe133m; //MDC XE133m
jdouble MDC_Xe133; //MDC XE133
jobjectArray MDC;
jobjectArray MDC_CTS;
jdouble Xe135_con; //135<33><35>Ũ<EFBFBD><C5A8>
jdouble Xe135_uncer; //135<33><35>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>
jdouble Xe131m_con;
jdouble Xe131m_uncer;
jdouble Xe133m_con;
jdouble Xe133m_uncer;
jdouble Xe133_con;
jdouble Xe133_uncer;
jobjectArray ROI_B_Boundary_start;
jobjectArray ROI_B_Boundary_stop;
jobjectArray ROI_G_Boundary_start;
jobjectArray ROI_G_Boundary_stop;
jobjectArray d_roi_cts; //̽<><CCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׸<EFBFBD><D7B8><EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>Ϻ<EFBFBD>ֵ
jint b_fitting_type;
jint g_fitting_type;
jobjectArray b_fitting_e_c;
jobjectArray g_fitting_e_c;
jobjectArray b_fitting_c_e;
jobjectArray g_fitting_c_e;
//BgDetbgrGenerate BgDetbgr;
jobjectArray d_ROI_B_Boundary_start;
jobjectArray d_ROI_B_Boundary_stop;
jobjectArray d_ROI_G_Boundary_start;
jobjectArray d_ROI_G_Boundary_stop;
jobjectArray d_d_roi_cts; //̽<><CCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׸<EFBFBD><D7B8><EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
jint d_b_fitting_type;
jint d_g_fitting_type;
jobjectArray d_b_fitting_e_c;
jobjectArray d_g_fitting_e_c;
jobjectArray d_b_fitting_c_e;
jobjectArray d_g_fitting_c_e;
}GenerateResult;
typedef struct _SOHFile_Result_
{
/* Header block */
jstring station_code; // station code
jstring detector_code; // detector code or NA if 1) there is more than one detector or 2) data are from the sam-pling site of a split station
jstring start_date; // SOH data sampling period start date (yyyy/mm/dd)
jstring start_time; // SOH data sampling period start time (hh:mm:ss)
jstring designator; // designator
jstring end_date; // SOH data sampling period end date (yyyy/mm/dd)
jstring end_time; // SOH data sampling period end time (hh:mm:ss)
jstring transmit_date; // transmit date (yyyy/mm/dd)
jstring transmit_time; // transmit time (hh:mm:ss)
/* Air Sampler Flow block */
jobjectArray average_flow_rate; // average flow rate (standard cubic metersper hour (scm/h))
jobjectArray flow_rate_standard_deviation; // flow rate standard deviation (scm/h)
jobjectArray af_start_date; // SOH data sampling interval start date (yyyy/mm/dd)
jobjectArray af_start_time; // SOH data sampling interval start time (hh:mm:ss)
jobjectArray af_interval_duration; // SOH data sampling interval duration (s)
jint af_record_count;
/* Air Sampler Env block */
jobjectArray temperature; // average air temperature after filter (<28><>C)
jobjectArray pressure; // average static air pressure after filter (hPa)
jobjectArray ae_date; // date (yyyy/mm/dd)
jobjectArray ae_time; // time (hh:mm:ss)
jobjectArray ae_interval_duration; // SOH data sampling interval duration (s)
jint ae_record_count;
/* Det Env block */
jobjectArray room_temperature; // average room temperature (<28><>C)
jobjectArray detector_shield_status; // detector shield status (OPEN or CLOSED)
jobjectArray humidity; // average room humidity (in percent relative humidity)
jobjectArray d_voltage; // detector high voltage (V)
jobjectArray crystal_temperature; // average crystal temperature (<28><>C)
jobjectArray electric_cooler_status; // electric cooler status (ON or OFF)
jobjectArray fill_fraction; // liquid nitrogen fill-fraction
jobjectArray leakage; // detector leakage current (nanoamperes [nA])
jobjectArray d_date; // date (yyyy/mm/dd)
jobjectArray d_time; // time (hh:mm:ss)
jobjectArray d_interval_duration; // SOH data sampling interval duration (s)
jint d_record_count;
/* NIMBIN block */
jobjectArray flag; // +/-
jobjectArray n_voltage; // average NIMBIN voltage (V)
jobjectArray n_date; // date (yyyy/mm/dd)
jobjectArray n_time; // time (hh:mm:ss)
jobjectArray n_interval_duration; // SOH data sampling interval duration (s)
jint n_record_count;
/* Power Supply block */
jobjectArray MAIN; // MAIN (for MAIN power supply)
jobjectArray main_power_status; // status of main power supply (ON/OFF)
jobjectArray AUX; // AUX (for AUXiliary power supply)
jobjectArray aux_power_status; // status of auxiliary power supply (ON/OFF)
jobjectArray UPS; // UPS (for Uninterrupted Power Supply)
jobjectArray ups_status; // status of uninterruptedly power supply (ON/ OFF)
jobjectArray p_date; // date (yyyy/mm/dd)
jobjectArray p_time; // time (hh:mm:ss)
jobjectArray p_interval_duration; // SOH data sampling interval duration (s)
jint p_record_count;
/* Equip Status block */
jobjectArray C_value; // status of sampling system (ON/OFF) or the SRID of the sample being collected
jobjectArray P_value; // status of sample preparation, processing, or decay (ON/OFF) or the SRID of the sample being processed or decayed
jobjectArray A_value; // status of detector system (ON/OFF) or the SRID of the sample being counted
jobjectArray e_date; // date (yyyy/mm/dd)
jobjectArray e_time; // time (hh:mm:ss)
jobjectArray e_interval_duration; // SOH data sampling interval duration (s)
jint e_record_count;
/* Tamper Env block */
jobjectArray tamper_sensor_name; // tamper sensor name
jobjectArray tamper_sensor_status; // tamper sensor status (OPEN or CLOSED)
jobjectArray t_date; // date (yyyy/mm/dd)
jobjectArray t_time; // time (hh:mm:ss)
jobjectArray t_interval_duration; // SOH data sampling interval duration (s)
jint t_record_count;
/* Process Sensors block */
jobjectArray sensor_type; // sensor type (TEMP, PRESSURE,PROCESSFLOW, VOLTAGE, COUN-TRATES, DEWPOINT, CO2VOLUME)
jobjectArray sensor_name; // tamper sensor status (OPEN or CLOSED)
jobjectArray sensor_reading; // sensor reading (TEMP in <20><>C, PRESSURE in Pa, PROCESSFLOW in m3/h, VOLT-AGE in V, COUNTRATE in counts/s, DEWPOINT in <20><>C, CO2VOLUME in cm3)
jobjectArray ps_date; // date (yyyy/mm/dd)
jobjectArray ps_time; // time (hh:mm:ss)
jobjectArray ps_duration; // SOH duration (s)
jint ps_record_count;
/* Chromatogram block */
jstring srid; // the SRID of the sample being counted
jobjectArray interval_number; // interval number (starts at 1)
jobjectArray interval_start_channel; // interval start channel
jobjectArray c_duration; // duration between chromatogram readings (in seconds [s])
jint interval_record_count;
jlong total_number; // total number of chromatogram readings
jobjectArray detector_response; // detector response
}SOHFileResult;
2024-12-12 16:22:26 +08:00
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;
2024-06-04 15:27:02 +08:00
class CplusToJava
{
public:
static jobjectArray GetjobjectArray(JNIEnv* env, jclass jcls, jobject jstruct, std::string var);
//<2F><>QVector<double>ת<><D7AA>ΪjobjectArray
static jobjectArray QVectorD2jobjectArray(QVector<double> vec, JNIEnv* env);
//<2F><>QVector<QString>ת<><D7AA>ΪjobjectArray
static jobjectArray QVectorQS2jobjectArray(QVector<QString> vec, JNIEnv* env);
//<2F><>QVector<long>ת<><D7AA>ΪjobjectArray
static jobjectArray QVectorL2jobjectArray(QVector<long> vec, JNIEnv* env);
//<2F><>QVector<long>ת<><D7AA>ΪjobjectArray
static jobjectArray QVectorLL2jobjectArray(QVector<long long> vec, JNIEnv* env);
//<2F><>QVector<int>ת<><D7AA>ΪjobjectArray
static jobjectArray QVectorI2jobjectArray(QVector<int> vec, JNIEnv* env);
//<2F><>QVector<short>ת<><D7AA>ΪjobjectArray
static jobjectArray QVectorS2jobjectArray(QVector<short> vec, JNIEnv* env);
//<2F><><EFBFBD><EFBFBD>jobject
static jobject Createjobject(JNIEnv* env, jint esize, jobjectArray array);
2024-09-11 16:44:40 +08:00
//<2F><><EFBFBD><EFBFBD>2djobject
static jobject Create2Djobject(JNIEnv* env, jint esize, jobjectArray array, jint row, jint col);
2024-06-04 15:27:02 +08:00
//jobjectת<74><D7AA>ΪjobjectArray
static jobjectArray jobject2jobjectArray(JNIEnv* env, jobject array);
//<2F><>jobjectArrayת<79><D7AA>ΪQVector<double>
static QVector<double> jobjectArray2QVectorD(JNIEnv* env, jobjectArray listValue);
//<2F><>jstringת<67><D7AA>ΪQString
static QString jstring2QString(JNIEnv* env, jstring jstr);
//<2F><EFBFBD><E1B9B9><EFBFBD><EFBFBD>ȡ
static QString getStructString(JNIEnv* env, jclass jcls, jobject jstruct, const char* name);
//-999<39>ж<EFBFBD>
static double DoubleLimit(const double& _data);
static double DoubleLimit(const QString& _data);
static QVector<QString> DoubleLimit(QVector<QString>& data);
static QVector<QString> DoubleLimit(QVector<double> _data);
static QString GetSqlBy(const QVector<QString>& _data, bool bSFlag);
};