#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; /// /// 数据传输模式 /// eTransferMode m_eTransferModel = eSpecturmMode; /// /// 硬件增益 /// int m_iDeviceGain = 1; /// /// 硬件增益 /// int m_iDeviceGainSelectIndex = 1; /// /// 软件增益 /// int m_iSoftGain = 3000; /// /// 时间常数 /// double m_dConstTime = 45; /// /// 成形时间 /// int m_iFormTime = 3; /// /// 快通道触发阈值 /// double m_iFastChannelTrigerValue = 10; /// /// 多道分辨率 /// int m_iChannelNum = 1024; int m_iHighVoltage = 0; // sParamConfig ParamConfig; /// /// 输入12V信号衰减控制(1个ASCii字符表示)。‘0’表示关闭,‘1’表示启用衰减,偏移量2 /// int m_iInputVoltageDesc = 0; /// /// CR微分模式启用(1个ASCii字符表示)。‘0’表示关闭,‘1’表示启用CR微分,偏移量3。对于复位型前放其输出的为阶梯信号,此时应启用CR微分,否则可不启用 /// int m_iCRDivMode = 0; /// /// 输入信号正负极性选择(1个ASCii字符表示)。‘0’表示负信号,‘1’表示正信号,偏移量4 /// int m_iInputSignalPostive = 0; /// /// 第一位为符号位,后四位为数值,以mV为单位,譬如’+0200’表示直流偏移200mV, 地址偏移量5-9 /// int m_iCurrentOffset = 0; /// /// 最大能量范围,以keV为单位(5个ASCII字符) 譬如’04000’,表示最大能量范围为4MeV。设置为全零‘00000’则表示关闭自动稳谱功能。 /// int m_iMaxEnergy = 0; /// /// Am峰面积寻峰法的面积比例 例如:‘15’表示截取峰顶高度15%的面积用于面积法寻峰 /// int m_iAMPeakDiv = 0; /// /// K-40与Am-241的峰位校正系数 例如:‘24513’表示K-40与Am-241的峰位换算系数为24.513 /// 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