#ifndef _YUYING_DEFINITION_H_ #define _YUYING_DEFINITION_H_ /** * \brief 获取图像函数指针签名 * \param 指针,指向图像数据的内存地址 * 用户需要保证快速将图像取走,不能在回调函数中做与保存图像无关的操作 * \return */ typedef bool(_stdcall *ImageReadyCallbackFunc)(const char* pImage,int iFlag); typedef bool(_stdcall *ImageReadyCallbackFuncEx)(const char* pImage, int iFlag, const char* pSn); /** * \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, //当前模式不支持此功能 SEC_FPD_Expired, // 平板过期 /*SDK问题*/ SEC_SDK_Not_Init = 100, // 软件未初始化 SEC_SDK_Repeated_init, // 软件重复初始化 SEC_SDK_DeviceID_Not_Exist, // 设备标识ID输入错误 /*通讯问题*/ 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初始化失败 1 有线平板,ip或者port被占用。 2 无线平板,检查pc WiFi是否与平板连接,检查平板是否启动 /*其他问题*/ SEC_Path_Error = 1000, // 保存或者读取时如果路径不对,提示此code SEC_Input_Parameter_Error, // 函数的输入参数非法 SEC_Read_Info_Failed, // 读取信息失败 SEC_Open_File_Failed, // 打开文件失败 SEC_Unknown, // 未知错误 }; /* SIC_Device_Heart_Beat - 参数格式(<>内表示格式):<字符:数值|>, - T表示温度,H表示湿度,V表示电压,E表示电量,P表示供电方式(1电池供电,2电源供电),S表示无线信号强度(范围0 - 100,100表示信号最强) - 例如收到字符串 “T:35|H:30|V:11.0|E:80|P:1|S:90”,表示当前温度是35摄氏度,湿度是30,电压11.0伏,电量百分之八十,电池供电,信号强度90,表示信号极佳 */ enum SystemInfoCode { SIC_Exposure_Window_Open = 0x01, //曝光窗口打开 SIC_Exposure_Winodw_Closed, //曝光窗口关闭 SIC_Exposure_Window_Timeout, //曝光超时 SIC_Device_Heart_Beat , SIC_Physical_Connection_State, //对应的参数内容是:1表示正常,0表示异常 SIC_Upload_Tmp_File_Begin, //上传校正模板开始 SIC_Upload_Tmp_File_End, //上传校正模板结束,结束不一定是上传成功,是否上传成功要查看回调函数中进度信息是否达到百分之百 SIC_TCP_Connection_State, //平板探测器的socket程序状态,1表示客户端与服务器链接成功, 0表示失败 SIC_Power_Low, //提示电量低 SIC_Power_Down_Soon, //提示即将关闭 SIC_FPD_Sleep_State, //无线平板是否休眠,0表示休眠,1表示正常 SIC_FPD_MultiFrame_Index, //多帧采集图像的序号 SIC_FPD_IndustryMode_Prepare_Rready, //工业模式下prepare准备好了 SIC_FPD_MFM_Prepare_Ready, //多帧叠加模式下prepare准备好了 }; /** * \brief 获取系统状态信息的指针签名,用户获取到状态信息后按照自己的需求处理 * \param iCodeIndex 系统状态ID * \param sContent 提示信息 */ typedef bool(_stdcall *SystemInfoCallbackFunc)(SystemInfoCode iCodeIndex, const char* sContent); typedef bool(_stdcall *SystemInfoCallbackFuncEx)(SystemInfoCode iCodeIndex, const char* sContent, const char* pSn); /** * \brief 平板探测器与模式无关的通用配置项 * \ r 表示只读, r/w表示可读写,un 表示预留配置,当前未使用 */ struct YIConfigInfo_Common { char arrProductInitSN[16]; // 产品sn码 前16个字节有效 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码 前16个字节有效 | 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 }; enum BinningModeTypes { FullSize_1X1 = 0x00, //全尺寸1*1 FullSize_2X2 = 0x01, //全尺寸2*2 FullSize_3X3 = 0x03, //全尺寸3*3 FullSize_4X4 = 0x02, //全尺寸4*4 MiddleSize_1X1 = 0x04, //中尺寸1*1 MiddleSize_2X2 = 0x05, //中尺寸2*2 SmallSize_1X1 = 0x06, //小尺寸1*1 }; /** * \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; // 球管准备时间,单位:毫秒ms | 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模式,参数值请参考枚举变量(BinningMode1417和BinningMode1717) | (动态平板)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; // 行扫描时间,单位:毫秒ms | 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 }; /** * \brief 平板探测器的工作模式, * \param 0x00通用, 0x03 0x06 0x07静态平板使用,0x01 0x08动态平板使用,0x05预留项,暂未使用 */ enum ModeType { Idle = 0x00, Sync_In_Mode = 0x01, Software_Mode = 0x03, AED_Offset_Mode = 0x05, AED_Mode = 0x06, Outer_Mode = 0x07, Freerun_Mode = 0x08, Industry_Mode = 0x09, MultiFram_Mean_Mode = 0x0a }; struct MFMConfig { int iCapImgNum; //需要叠加的帧数 double dImgGapTime; //帧间隔时间,单位s int iAlgType; //叠加算法,0最大值,1平均 }; struct ProgressInfo { int value; // 当前进度 char sInfo[300]; // 输出提示信息 }; /** * \brief 获取执行进度的函数指针 */ typedef bool(_stdcall *ProgressCallbackFunc)(ProgressInfo* pProgress); #endif