EnergySpectrumMeasureService/3rdlib/DeviceManage/include/DeviceManage.h
2026-04-14 10:16:36 +08:00

372 lines
10 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include "UAVrtp.h"
// #ifdef DEVICEMANAGE_EXPORTS
// #include "UserConfigInfo.h"
// #include "OneChannelConfigInfo.h"
// #include "OneDeviceComptonSuppressSetting.h"
// #endif
#ifdef DEVICEMANAGE_EXPORTS
#define DEVICEMANAGE_API(type) extern "C" _declspec(dllexport) type _stdcall
#else
#define DEVICEMANAGE_API(type) extern "C" _declspec(dllexport) type _stdcall
#endif
// #include "OneComptonResultDataExport.h"
#ifdef __cplusplus
extern "C" {
#endif
enum eMCSystemType
{
eReserve,
eHPGEDEFAULE = 1,
eCombineDevice = 2,
eProxyDevice = 3,
eRoundMC = 10,
eRoundMCV1 = 11, // 第二通道计数
eRoundMCHightThroughtput = 12, // 圆筒多道高计数率
eFP5XMC = 13,
eDMCA2023 = 14,
eHPGEMC = 30,
eMulParamMC = 50,
eDP3402PLUSMC = 51,
eMulParam863MC = 60,
eNeutronCount = 70,
eAnalogMC = 80,
eAnalogDigtalMC = 81,
eHightThroughtMC=90,
eHightThroughtMCCh2 = 91,
eGeneralMC = 92,
eAlphaMC = 93,
eHVDevice = 100,
};
// 添加新的采样率后需要注意在DeviceInfo.cpp中添加对应的索引
// 添加新的采样率后需要注意在DeviceInfo.h 中修改SampleRateInMbpsToSampleRate修改
enum eSampleRate
{
eNone,
e80M,
e250M,
e500M,
e50M,
e200M,
e1G,
e125M,
};
#pragma pack(push,1)
struct sDeviceInfo
{
char GUID[64];
char SystemVersion[16];
char CommVersion[16];
eMCSystemType type;
char MacAddr[32];
char FilePath[MAX_PATH];
unsigned char reserve[60];
};
class ChannelOpInfo
{
public:
BOOL canop;
double adcperiod;
eSampleRate samplerate;
double lmperiod;
int adcmaxvalue;
double adcvoltageinmv;
};
typedef struct sDeviceDataPtr
{
int totalNum;
void *pData[64];
}sDeviceDataPtr;
class DeviceData
{
public:
int len = 1024*1024;
BYTE pdata[1024*1024];
};
enum eDeviceManageOperate
{
eAddDevice,
eRemoveDevice,
};
enum eDeviceType
{
// 硬件设备
eHardwareDevice,
// 回放设备
eReplayDevice,
// 文件设备
eFileDevice,
// 硬件组合设备
eHardwareCombineDevice,
// 回放组合设备
eReplayCombineDevice,
// 代理设备
eDTProxyDevice,
};
enum eSprtOptType
{
eAdd,
eDec,
};
enum eDisplaSprtInfoType;
typedef struct sOneSprtOptInfo
{
void *pdev;
int bdidx;
int chidx;
eSprtOptType opttype;
eDisplaSprtInfoType sprttype;
}sOneSprtOptInfo;
class OneNeutronData
{
public:
int chnum;
__int64 measuretime;
__int64 lowercount;
__int64 betweencount;
__int64 ttlcount;
unsigned char reserve[32];
};
#ifndef DEVICEMANAGE_EXPORTS
#define ALIAS_NALE_LEN 64
enum eTransferMode
{
eSpecturmMode,
eFormWaveMode,
eADCMode,
eListMode,
eABMode,
};
enum eAutoSteadyStatus
{
a, // 未开启,
b, // 稳谱中,
c, // 稳谱完成,
d, // 不支持,
e, // 校准中,
f, // 稳谱失败,
g, // 校准失败,
h, // 等待中,
};
typedef struct sAutoSteadyParam
{
BOOL bEnable;
eAutoSteadyStatus status;
float offset; // 10
float a;
float b;
float c;
unsigned short maxchanneldivfactor;
unsigned short peakchannel; // 26
unsigned short steadyPeriodInSec; // 28
unsigned short peakhalfwidth; // 30
double dc;
}sAutoSteadyParam;
class UserConfigInfo
{
public:
char m_cAliasName[ALIAS_NALE_LEN];
char _strMCName[32];
int _iBDNum;
int _iChNum;
BOOL _bDisplayOrgCptSprt;
BOOL _bDisplayComptonCptSprt;
BOOL _bDisplayAntiComptonCptSprt;
BOOL _bDisplayLMSprt;
BOOL _bDisplayRiseTimeSprt;
BOOL _bDisplayFallTimeSprt;
__int64 _i64AdjustTickCount;
__int64 _i64MinAllowTickCount;
__int64 _i64MaxAllowTickCount;
BOOL _bDisplayConfig;
BOOL _bSaveLMData;
BOOL _bWork;
sAutoSteadyParam asp;
char m_cReserve[16];
};
class OneChannelConfigInfo
{
public:
void *__vfp;
/// <summary>
/// 数据传输模式
/// </summary>
eTransferMode m_eTransferModel = eSpecturmMode;
/// <summary>
/// 硬件增益
/// </summary>
int m_iDeviceGain = 1;
/// <summary>
/// 硬件增益
/// </summary>
int m_iDeviceGainSelectIndex = 1;
/// <summary>
/// 软件增益
/// </summary>
int m_iSoftGain = 3000;
/// <summary>
/// 时间常数
/// </summary>
double m_dConstTime = 45;
/// <summary>
/// 成形时间
/// </summary>
int m_iFormTime = 3;
/// <summary>
/// 快通道触发阈值
/// </summary>
double m_iFastChannelTrigerValue = 10;
/// <summary>
/// 多道分辨率
/// </summary>
int m_iChannelNum = 1024;
int m_iHighVoltage = 0;
// sParamConfig ParamConfig;
/// <summary>
/// 输入12V信号衰减控制1个ASCii字符表示0表示关闭1表示启用衰减偏移量2
/// </summary>
int m_iInputVoltageDesc = 0;
/// <summary>
/// CR微分模式启用1个ASCii字符表示0表示关闭1表示启用CR微分偏移量3。对于复位型前放其输出的为阶梯信号此时应启用CR微分否则可不启用
/// </summary>
int m_iCRDivMode = 0;
/// <summary>
/// 输入信号正负极性选择1个ASCii字符表示0表示负信号1表示正信号偏移量4
/// </summary>
int m_iInputSignalPostive = 0;
/// <summary>
/// 第一位为符号位后四位为数值以mV为单位,譬如’+0200表示直流偏移200mV, 地址偏移量5-9
/// </summary>
int m_iCurrentOffset = 0;
/// <summary>
/// 最大能量范围以keV为单位5个ASCII字符 譬如04000表示最大能量范围为4MeV。设置为全零00000则表示关闭自动稳谱功能。
/// </summary>
int m_iMaxEnergy = 0;
/// <summary>
/// Am峰面积寻峰法的面积比例 例如15表示截取峰顶高度15%的面积用于面积法寻峰
/// </summary>
int m_iAMPeakDiv = 0;
/// <summary>
/// K-40与Am-241的峰位校正系数 例如24513表示K-40与Am-241的峰位换算系数为24.513
/// </summary>
short m_iHVDelt = 0;
short m_iHVCtrl = 0;
int m_iGetSpecturmPeirod = 1;
__int64 m_iTotalMeasureTime = 10;
int m_iTotalMeasureCount = 1;
int m_iTrapeTopShitBit = 0;
int m_iRiseTime = 2;
int m_iTopTime = 2;
BOOL m_bICRCorrect = FALSE;
int m_iCRZAValue = 0;
int m_iZAEnable = 30;
BYTE reserve[128];
UserConfigInfo m_pUserConfigInfo;
};
#endif
typedef void(__stdcall *ONFINDDEVICEFINISHED)(int ret, sDeviceList* pDeviceList);
typedef void(__stdcall *ONUPDATEONEDEVICEBOARDDATA)(void* pHandle, sDeviceDataPtr *pdata);
typedef void(__stdcall *ONUPDATEONEDEVICECOMPTOMSUPRESSDATA)(void* pHandle,void *pComptonSet, sDeviceDataPtr *pdata);
typedef void(__stdcall *ONDEVICEMANAGECHANGED)(eDeviceManageOperate op, int ret, sDeviceList *pDeviceList);
typedef void(__stdcall *ONUPDATE_NEUTRONDATA)(void* pHandle, int ret, OneNeutronData* pData, int iLen);
typedef void(__stdcall *ONUPDATE_DEVICE_CONFIG)(void* pHandle, int bdnum,int chnum, void* pData, int iLen,void *pData2, int iLen2);
typedef void(__stdcall *ONUPDATE_PRESENT_CONFIG)(void* pHandle, int bdnum, int chnum);
// 更新设备配置结构信息
typedef void(__stdcall *ONUPDATE_DEVICE_STRUCT)(void* pHandle,void *pParent,int maxParentNum,void *pChild,int MaxChildNum, void *reserve);
DEVICEMANAGE_API(int) FindDeviceAsync(sFindDeviceConfig *fdc, ONFINDDEVICEFINISHED OnFindFinished);
DEVICEMANAGE_API(int) GetDeviceInfo(void *pHandle, sDeviceInfo *spDi, int budnum, int chnum);
DEVICEMANAGE_API(int) GetDeviceBoardTotalNum(void *pHandle);
DEVICEMANAGE_API(int) GetDeviceChTotalNum(void *pHandle, int bdidx);
DEVICEMANAGE_API(int) GetDeviceUserInfo(void *pHandle, UserConfigInfo *pUCI);
DEVICEMANAGE_API(int) SetDeviceUserInfo(void *pHandle, UserConfigInfo *pUCI);
DEVICEMANAGE_API(int) GetDeviceBoardUserInfo(void *pHandle, UserConfigInfo *pUCI, int bdidx);
DEVICEMANAGE_API(int) GetDeviceBoardChannelUserInfo(void *pHandle, UserConfigInfo *pUCI, int bdidx, int chidx);
DEVICEMANAGE_API(int) SetDeviceBoardChannelUserInfo(void *pHandle, UserConfigInfo *pUCI, int bdidx, int chidx);
DEVICEMANAGE_API(int) GetDeviceBoardChannelConfiginfo(void *pHandle, OneChannelConfigInfo *pUCI, int bdidx, int chidx);
DEVICEMANAGE_API(int) DBCSetHightVoltage(void *pHandle, OneChannelConfigInfo *pUCI, int bdidx, int chidx);
DEVICEMANAGE_API(int) DBCSoftParamConfig(void *pHandle, OneChannelConfigInfo *pUCI, int bdidx, int chidx);
DEVICEMANAGE_API(int) DBCHardDeviceParamConfig(void *pHandle, OneChannelConfigInfo *pUCI, int bdidx, int chidx);
DEVICEMANAGE_API(int) DBCStartMeasure(void *pHandle, int bdidx, int chidx);
DEVICEMANAGE_API(int) DBCStopMeasure(void *pHandle, int bdidx, int chidx);
DEVICEMANAGE_API(int) DBCGetData(void *pHandle, int totalnum, DeviceData *pDevData, int bdidx, int chidx);
DEVICEMANAGE_API(int) DBCCombineGetData(void *pHandle, int totalnum, DeviceData *pDevData, int bdidx, int chidx);
DEVICEMANAGE_API(int) DBCSetUpdateDeviceBoardDataCallBack(void *pHandle, ONUPDATEONEDEVICEBOARDDATA d);
DEVICEMANAGE_API(int) DBCSetUpdateDeviceBoardLMPointDataCallBack(void *pHandle, ONUPDATEONEDEVICEBOARDDATA d);
DEVICEMANAGE_API(int) DBCClearData(void *pHandle, int bdidx, int chidx);
DEVICEMANAGE_API(int) DBCSaveConfig(void *pHandle);
// DEVICEMANAGE_API(int) DBCSetUpdateDeviceComptonSupressResultCallBack(void *pHandle, ONUPDATEONEDEVICECOMPTOMSUPRESSDATA d);
// DEVICEMANAGE_API(int) DBCGetDeviceAntiComptonSetting(void *pHandle, OneDeviceComptonSuppressSetting *pDevSet);
// DEVICEMANAGE_API(int) DBCGetDeviceOneMainAntiComptonSetting(void *pHandle, OneComptonSuppressSetting *pOneSet, int mainidx);
// DEVICEMANAGE_API(int) DBCGetDeviceOneSubAntiComptonSetting(void *pHandle, OneComptonSuppressSetting *pOneSet, int mainidx, int subidx);
// DEVICEMANAGE_API(int) DBCSetDeviceOneMainAntiComptonSetting(void *pHandle, OneComptonSuppressSetting *pOneSet, int mainidx);
// DEVICEMANAGE_API(int) DBCSetDeviceOneSubAntiComptonSetting(void *pHandle, OneComptonSuppressSetting *pOneSet, int mainidx, int subidx);
DEVICEMANAGE_API(void) DM_Con_Flushout();
DEVICEMANAGE_API(void) DM_Con_KeyPressEvent(char c, int codetype);
DEVICEMANAGE_API(void) DM_Con_Init(char *pStdOutBuff, int pStdOutBuffLen, char *pStdErrBuff, int pStdErrBuffLen);
DEVICEMANAGE_API(void) DM_Con_Exit();
DEVICEMANAGE_API(void) DM_Con_Run();
DEVICEMANAGE_API(void) DM_Con_Free(void *buf);
DEVICEMANAGE_API(int) CloseDevice(void *pHandle);
// 获取板卡通道对应的设备
DEVICEMANAGE_API(void*) DMGetOperateDevice(void *pHandle, int bdidx, int chidx);
// 设置查询保存lmaa格式
// set 参数为FALSE表示读取当前信息如果为TRUE表示设置信息
// DEVICEMANAGE_API(int) DBCSaveAntiLMDataToFile(void *pHandle, int bdidx, int chidx, BOOL set, BOOL *bEnable, char *filename);
#pragma pack(pop)
#ifdef __cplusplus
}
#endif