#ifndef _YUYING_DEFINITION_H_ #define _YUYING_DEFINITION_H_ #pragma pack(push) #pragma pack(1) /** * \brief 获取图像函数指针签名 * \param 指针,指向图像数据的内存地址 * 用户需要保证快速将图像取走,不能在回调函数中做与保存图像无关的操作 * \return */ typedef bool(_stdcall *ImageReadyCallbackFunc)(const char* pImage,unsigned long ImageSize); /** * \brief 错误码,用于用户了解当前出错原因 */ enum SystemErrorCode { /*Test code*/ SEC_For_Test = -1, /*No Problem*/ SEC_Succeed = 0, /*FPD问题*/ SEC_FPD_Busy = 1, // 平板探测器正忙 SEC_FPD_FeedBack_Timeout, // 平板探测器反馈命令超时 SEC_FPD_FeedBack_Process_Error, // 平板探测器未正常处理此命令 SEC_FPD_Not_Support_Current_Mode, // 探测器不支持此模式 SEC_FPD_FeedBack_Parameter_Error, // 探测器反馈参数存在非法值 SEC_FPD_Function_Not_Support_In_Current_Mode, //当前模式不支持此功能 /*SDK问题*/ SEC_SDK_Not_Init = 100, // 软件未初始化 SEC_SDK_Repeated_init, // 软件重复初始化 SEC_SDK_DeviceID_Not_Exist, // 设备标识ID输入错误 SEC_SDK_No_Available_Device_Ctx, // 未获取可用的设备上下文 /*通讯问题*/ SEC_CMD_Timing_Error = 200, // 时序问题,如果收到此信息请尝试重新发送上一条命令 SEC_CMD_Send_Error = 201, // 发送命令失败 SEC_CMD_Checksum_Error = 202, // 命令校验码错误 /*其他设备问题*/ SEC_DEVICE_Network_Error = 300, // 网线断开或者IP设置错误 SEC_DEVICE_Sock_Error = 301, // socket初始化失败,ip或者port被占用 /*其他问题*/ SEC_Path_Error = 1000, // 保存或者读取时如果路径不对,提示此code SEC_Input_Parameter_Error, // 函数的输入参数非法 SEC_Read_Info_Failed, // 读取信息失败 SEC_Open_File_Failed, // 打开文件失败 SEC_Unknown, // 未知错误 }; enum SystemInfoCode { SIC_NOT_READY,//探测器对X射线未就绪,可以下达caputreimage命令,激活探测器 SIC_WAIT_EXP , //探测器对X射线就绪,等待曝光 SIC_IN_EXP, //曝光中 SIC_ROIC_BUSY, //曝光结束,ROIC读出中 SIC_ROIC_DONE, //ROIC读出结束,可以网络传输,此状态探测器无法再曝光或取新图,需要使用freebuffer或是auto_delete=1 SIC_TEMPERTURE=0x100, //对应的参数内容是:温度 SIC_HUMIDITY, //对应的参数内容是:湿度 SIC_BATTERY, //对应的参数内容是:电池电量百分比 }; /** * \brief 获取系统状态信息的指针签名,用户获取到状态信息后按照自己的需求处理 * \param iCodeIndex 系统状态ID * \param sContent 提示信息 */ typedef bool(_stdcall *SystemInfoCallbackFunc)(SystemInfoCode iCodeIndex, const char* sContent); /** * \brief 平板探测器与模式无关的通用配置项 * \ r 表示只读, r/w表示可读写,un 表示预留配置,当前未使用 */ struct YIConfigInfo_Common { char arrProductInitSN[16]; // 产品sn码 r char arrFPGAVerMain[4]; // FPGA 版本号 | r char arrMCUVerMain[4]; // MCU版本号 | r char arrWIFIVerMain[4]; // WIFI 版本号 | r unsigned short usLocalUDPPort; // 平板探测器网络端口号 | r char arrLocalIPAddress[4]; // 平板探测器网络IP地址 | r char arrLocalMACAddr[6]; // 平板探测器网络MAC地址 | r unsigned short usDestUDPPort; // 平板探测器控制设备的网络端口号 | r char arrDestIPAddress[4]; // 平板探测器控制设备的网络IP地址 | r char arrDestMACAddress[6]; // 平板探测器控制设备的MAC地址 | r char arrFPGADNA[16]; // FPGA DNA | un char arrProductUserSN[16]; // 用户自定义sn码 | r/w unsigned short usCBLocalUDPPort; // 控制盒网络端口号 | un char arrCBLocalIPAddress[4]; // 控制盒网络IP地址 | un char arrCBLocalMACAddress[6]; // 控制盒网络MAC地址 | un unsigned short usCBDestUDPPort; // 控制盒控制设备的网络端口号 | un char arrCBDestIPAddress[4]; // 控制盒控制设备的网络IP地址 | un char arrCBDestMACAddress[6]; // 控制盒控制设备的网络MAC地址 | un char arrCBSN[16]; // 控制盒的sn码 | un char cDefaultMode; // 平板探测器默认模式 | un char cDefaultSpeedMode; // 默认速度模式 | un unsigned short usPkgGapTime; // 包间间隔时间 | r/w char cFluoroPhotospot; // 透视-点片关联 | un char cRoicSleepEnable; // ROIC休眠使能 | r/w char cPenalPitch; // 平板探测器分辨率 | r char cStaticDynamicSwicth; // 是否可以动态静态切换 | r char cPreoffsetEnable; // 预清空使能 | r/w char cAEDEnable; // 是否有AED功能 | r }; /** * \brief 枚举变量,用于1417平板探测器,YIConfigInfo_SyncOut结构体中的cBinningMode项 */ enum BinningMode1417 { FullSize_1417_1X1 = 0x00, //全尺寸1*1,3072*3072 FullSize_1417_2X2, //全尺寸2*2,2048*2048 FullSize_1417_4X4, //全尺寸4*4,1024*1024 MiddleSize_1417_1X1 = 0x04,//中尺寸1*1,2048*2048 MiddleSize_1417_2X2, //中尺寸2*2,1024*1024 SmallSize_1417_1X1, //小尺寸1*1,1024*1024 }; /** * \brief 枚举变量,用于1717平板探测器,YIConfigInfo_SyncOut结构体中的cBinningMode项 */ enum BinningMode1717 { FullSize_1717_1X1 = 0x00, //全尺寸1*1,2560*3072 FullSize_1717_2X2, //全尺寸2*2,1280*1536 FullSize_1717_4X4, //全尺寸4*4,640*768 MiddleSize_1717_1X1 = 0x04, //中尺寸1*1,2048*2048 MiddleSize_1717_2X2, //中尺寸2*2,1024*1024 SmallSize_1717_1X1 //小尺寸1*1,1024*1024 }; struct YIConfigInfo_SyncOut { unsigned short usTubePrepare; // 球管准备时间 | r/w unsigned short usSampleNum; // 采集数量 | un char cPreOffsetNum; // 收到开始采集指令后清空次数 | r/w unsigned short usOffsetTimeGap; // Preoffset时间间隔,单位:毫秒ms | r/w unsigned short usExposureWindow; // 曝光窗口时间,单位:毫秒ms | r/w unsigned short usExposureTimeOut; // 曝光超时时间,单位:毫秒ms | un unsigned short usStartRow; // 起始行号 | r/w unsigned short usEndRow; // 结束行号 | r/w unsigned short usStartColumn; // 起始列号 | r/w unsigned short usEndColumn; // 结束列号 | r/w char cBinningMode; // Binning模式,0表示1*1,1表示2*2,2表示4*4 | (动态平板)r/w | (静态平板) r char cMaxFrameRate; // 最大帧率 | un char cCapacitor; // 灵敏度 | r/w char cRefTFT; // 参考电平 | r/w char cOffsetOn; // 平板探测器Offset使能,1 表示使能, 0 表示不使能 | r/w char cCorrectOn; // 平板探测器Gain使能,1 表示使能,0 表示不使能 | r/w char cReserve; // 预留项 | un unsigned short usLineTime; // 行扫描时间 | r/w }; /** * \brief 用于设置要做什么校正 */ enum DoCorrectType { Do_Nothing = 0x00, Do_Gain = 0x01, Do_Offset = 0x02, Do_Defect = 0x04, Do_AedOffset = 0x08, }; /** * \brief 做defect校正模板时,用来标识输入的图像是亮场还是暗场图像 */ enum DefectDataType { Light = 0, Dark }; struct csi_ext_trig_param { unsigned long trig_delay; unsigned long trig_timeout; }; struct csi_ball_trig_param { unsigned long out_trig_delay; unsigned long out_trig_width; }; struct csi_sensor_trig_param { unsigned long sensor_thd; unsigned long trig_delay; unsigned long trig_timeout; }; typedef struct __FpdMode { unsigned char workMode; unsigned char trigType; union { struct csi_ext_trig_param ext_trig; struct csi_ball_trig_param ball_trig; struct csi_sensor_trig_param sensor_trig; }param; } FpdMode; /** * \brief 平板探测器的工作模式 */ enum ModeType { Idle = 0x00, Normal_Mode = 0x01, NormalCompress_Mode = 0x02, Continuous_Mode = 0x03, ContinuousCompress_Mode = 0x04, Invalid_Mode }; enum TrigType { DARK_TRIG_MODE = 0, SOFT_TRIG_MODE = 1, EXT_TRIG_MODE = 2, TRIG_EXT_MODE = 3, SENSOR_TRIG_MODE = 4, SOFT_AED_MODE = 5, TRIG_MODE_MAX }; struct ProgressInfo { int value; // 当前进度 char sInfo[300]; // 输出提示信息 }; /** * \brief 获取执行进度的函数指针 */ typedef bool(_stdcall *ProgressCallbackFunc)(ProgressInfo* pProgress); // Extension definition #define FPD_TYPE_STATIC 0 #define FPD_TYPE_DYNAMIC 1 #pragma pack(pop) #endif