YuYingDefinition.h 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. #ifndef _YUYING_DEFINITION_H_
  2. #define _YUYING_DEFINITION_H_
  3. /**
  4. * \brief 获取图像函数指针签名
  5. * \param 指针,指向图像数据的内存地址
  6. * 用户需要保证快速将图像取走,不能在回调函数中做与保存图像无关的操作
  7. * \return
  8. */
  9. typedef bool(_stdcall *ImageReadyCallbackFunc)(const char* pImage,int iFlag);
  10. typedef bool(_stdcall *ImageReadyCallbackFuncEx)(const char* pImage, int iFlag, const char* pSn);
  11. /**
  12. * \brief 错误码,用于用户了解当前出错原因
  13. */
  14. enum SystemErrorCode
  15. {
  16. /*Test code*/
  17. SEC_For_Test = -1,
  18. /*No Problem*/
  19. SEC_Succeed = 0,
  20. /*FPD问题*/
  21. SEC_FPD_Busy = 1, // 平板探测器正忙
  22. SEC_FPD_FeedBack_Timeout, // 平板探测器反馈命令超时
  23. SEC_FPD_FeedBack_Process_Error, // 平板探测器未正常处理此命令
  24. SEC_FPD_Not_Support_Current_Mode, // 探测器不支持此模式
  25. SEC_FPD_FeedBack_Parameter_Error, // 探测器反馈参数存在非法值
  26. SEC_FPD_Function_Not_Support_In_Current_Mode, //当前模式不支持此功能
  27. SEC_FPD_Expired, // 平板过期
  28. /*SDK问题*/
  29. SEC_SDK_Not_Init = 100, // 软件未初始化
  30. SEC_SDK_Repeated_init, // 软件重复初始化
  31. SEC_SDK_DeviceID_Not_Exist, // 设备标识ID输入错误
  32. /*通讯问题*/
  33. SEC_CMD_Timing_Error = 200, // 时序问题,如果收到此信息请尝试重新发送上一条命令
  34. SEC_CMD_Send_Error = 201, // 发送命令失败
  35. SEC_CMD_Checksum_Error = 202, // 命令校验码错误
  36. /*其他设备问题*/
  37. SEC_DEVICE_Network_Error = 300, // 网线断开或者IP设置错误
  38. SEC_DEVICE_Sock_Error = 301, // socket初始化失败 1 有线平板,ip或者port被占用。 2 无线平板,检查pc WiFi是否与平板连接,检查平板是否启动
  39. /*其他问题*/
  40. SEC_Path_Error = 1000, // 保存或者读取时如果路径不对,提示此code
  41. SEC_Input_Parameter_Error, // 函数的输入参数非法
  42. SEC_Read_Info_Failed, // 读取信息失败
  43. SEC_Open_File_Failed, // 打开文件失败
  44. SEC_Unknown, // 未知错误
  45. };
  46. /*
  47. SIC_Device_Heart_Beat
  48. - 参数格式(<>内表示格式):<字符:数值|>,
  49. - T表示温度,H表示湿度,V表示电压,E表示电量,P表示供电方式(1电池供电,2电源供电),S表示无线信号强度(范围0 - 100,100表示信号最强)
  50. - 例如收到字符串 “T:35|H:30|V:11.0|E:80|P:1|S:90”,表示当前温度是35摄氏度,湿度是30,电压11.0伏,电量百分之八十,电池供电,信号强度90,表示信号极佳
  51. */
  52. enum SystemInfoCode
  53. {
  54. SIC_Exposure_Window_Open = 0x01, //曝光窗口打开
  55. SIC_Exposure_Winodw_Closed, //曝光窗口关闭
  56. SIC_Exposure_Window_Timeout, //曝光超时
  57. SIC_Device_Heart_Beat ,
  58. SIC_Physical_Connection_State, //对应的参数内容是:1表示正常,0表示异常
  59. SIC_Upload_Tmp_File_Begin, //上传校正模板开始
  60. SIC_Upload_Tmp_File_End, //上传校正模板结束,结束不一定是上传成功,是否上传成功要查看回调函数中进度信息是否达到百分之百
  61. SIC_TCP_Connection_State, //平板探测器的socket程序状态,1表示客户端与服务器链接成功, 0表示失败
  62. SIC_Power_Low, //提示电量低
  63. SIC_Power_Down_Soon, //提示即将关闭
  64. SIC_FPD_Sleep_State, //无线平板是否休眠,0表示休眠,1表示正常
  65. SIC_FPD_MultiFrame_Index, //多帧采集图像的序号
  66. SIC_FPD_IndustryMode_Prepare_Rready, //工业模式下prepare准备好了
  67. SIC_FPD_MFM_Prepare_Ready, //多帧叠加模式下prepare准备好了
  68. };
  69. /**
  70. * \brief 获取系统状态信息的指针签名,用户获取到状态信息后按照自己的需求处理
  71. * \param iCodeIndex 系统状态ID
  72. * \param sContent 提示信息
  73. */
  74. typedef bool(_stdcall *SystemInfoCallbackFunc)(SystemInfoCode iCodeIndex, const char* sContent);
  75. typedef bool(_stdcall *SystemInfoCallbackFuncEx)(SystemInfoCode iCodeIndex, const char* sContent, const char* pSn);
  76. /**
  77. * \brief 平板探测器与模式无关的通用配置项
  78. * \ r 表示只读, r/w表示可读写,un 表示预留配置,当前未使用
  79. */
  80. struct YIConfigInfo_Common
  81. {
  82. char arrProductInitSN[16]; // 产品sn码 前16个字节有效 r
  83. char arrFPGAVerMain[4]; // FPGA 版本号 | r
  84. char arrMCUVerMain[4]; // MCU版本号 | r
  85. char arrWIFIVerMain[4]; // WIFI 版本号 | r
  86. unsigned short usLocalUDPPort; // 平板探测器网络端口号 | r
  87. char arrLocalIPAddress[4]; // 平板探测器网络IP地址 | r
  88. char arrLocalMACAddr[6]; // 平板探测器网络MAC地址 | r
  89. unsigned short usDestUDPPort; // 平板探测器控制设备的网络端口号 | r
  90. char arrDestIPAddress[4]; // 平板探测器控制设备的网络IP地址 | r
  91. char arrDestMACAddress[6]; // 平板探测器控制设备的MAC地址 | r
  92. char arrFPGADNA[16]; // FPGA DNA | un
  93. char arrProductUserSN[16]; // 用户自定义sn码 前16个字节有效 | r/w
  94. unsigned short usCBLocalUDPPort; // 控制盒网络端口号 | un
  95. char arrCBLocalIPAddress[4]; // 控制盒网络IP地址 | un
  96. char arrCBLocalMACAddress[6]; // 控制盒网络MAC地址 | un
  97. unsigned short usCBDestUDPPort; // 控制盒控制设备的网络端口号 | un
  98. char arrCBDestIPAddress[4]; // 控制盒控制设备的网络IP地址 | un
  99. char arrCBDestMACAddress[6]; // 控制盒控制设备的网络MAC地址 | un
  100. char arrCBSN[16]; // 控制盒的sn码 | un
  101. char cDefaultMode; // 平板探测器默认模式 | un
  102. char cDefaultSpeedMode; // 默认速度模式 | un
  103. unsigned short usPkgGapTime; // 包间间隔时间 | r/w
  104. char cFluoroPhotospot; // 透视-点片关联 | un
  105. char cRoicSleepEnable; // ROIC休眠使能 | r/w
  106. char cPenalPitch; // 平板探测器分辨率 | r
  107. char cStaticDynamicSwicth; // 是否可以动态静态切换 | r
  108. char cPreoffsetEnable; // 预清空使能 | r/w
  109. char cAEDEnable; // 是否有AED功能 | r
  110. };
  111. enum BinningModeTypes
  112. {
  113. FullSize_1X1 = 0x00, //全尺寸1*1
  114. FullSize_2X2 = 0x01, //全尺寸2*2
  115. FullSize_3X3 = 0x03, //全尺寸3*3
  116. FullSize_4X4 = 0x02, //全尺寸4*4
  117. MiddleSize_1X1 = 0x04, //中尺寸1*1
  118. MiddleSize_2X2 = 0x05, //中尺寸2*2
  119. SmallSize_1X1 = 0x06, //小尺寸1*1
  120. };
  121. /**
  122. * \brief 枚举变量,用于1417平板探测器,YIConfigInfo_SyncOut结构体中的cBinningMode项
  123. */
  124. enum BinningMode1417
  125. {
  126. FullSize_1417_1X1 = 0x00, //全尺寸1*1,3072*3072
  127. FullSize_1417_2X2 , //全尺寸2*2,2048*2048
  128. FullSize_1417_4X4 , //全尺寸4*4,1024*1024
  129. MiddleSize_1417_1X1 = 0x04,//中尺寸1*1,2048*2048
  130. MiddleSize_1417_2X2, //中尺寸2*2,1024*1024
  131. SmallSize_1417_1X1, //小尺寸1*1,1024*1024
  132. };
  133. /**
  134. * \brief 枚举变量,用于1717平板探测器,YIConfigInfo_SyncOut结构体中的cBinningMode项
  135. */
  136. enum BinningMode1717
  137. {
  138. FullSize_1717_1X1 = 0x00, //全尺寸1*1,2560*3072
  139. FullSize_1717_2X2, //全尺寸2*2,1280*1536
  140. FullSize_1717_4X4, //全尺寸4*4,640*768
  141. MiddleSize_1717_1X1 = 0x04, //中尺寸1*1,2048*2048
  142. MiddleSize_1717_2X2, //中尺寸2*2,1024*1024
  143. SmallSize_1717_1X1 //小尺寸1*1,1024*1024
  144. };
  145. struct YIConfigInfo_SyncOut
  146. {
  147. unsigned short usTubePrepare; // 球管准备时间,单位:毫秒ms | r/w
  148. unsigned short usSampleNum; // 采集数量 | un
  149. char cPreOffsetNum; // 收到开始采集指令后清空次数 | r/w
  150. unsigned short usOffsetTimeGap; // Preoffset时间间隔,单位:毫秒ms | r/w
  151. unsigned short usExposureWindow; // 曝光窗口时间,单位:毫秒ms | r/w
  152. unsigned short usExposureTimeOut; // 曝光超时时间,单位:毫秒ms | un
  153. unsigned short usStartRow; // 起始行号 | r/w
  154. unsigned short usEndRow; // 结束行号 | r/w
  155. unsigned short usStartColumn; // 起始列号 | r/w
  156. unsigned short usEndColumn; // 结束列号 | r/w
  157. char cBinningMode; // Binning模式,参数值请参考枚举变量(BinningMode1417和BinningMode1717) | (动态平板)r/w | (静态平板) r
  158. char cMaxFrameRate; // 最大帧率 | un
  159. char cCapacitor; // 灵敏度 | r/w
  160. char cRefTFT; // 参考电平 | r/w
  161. char cOffsetOn; // 平板探测器Offset使能,1 表示使能, 0 表示不使能 | r/w
  162. char cCorrectOn; // 平板探测器Gain使能,1 表示使能,0 表示不使能 | r/w
  163. char cReserve; // 预留项 | un
  164. unsigned short usLineTime; // 行扫描时间,单位:毫秒ms | r/w
  165. };
  166. /**
  167. * \brief 用于设置要做什么校正
  168. */
  169. enum DoCorrectType
  170. {
  171. Do_Nothing = 0x00,
  172. Do_Gain = 0x01,
  173. Do_Offset = 0x02,
  174. Do_Defect = 0x04,
  175. Do_AedOffset = 0x08,
  176. };
  177. /**
  178. * \brief 做defect校正模板时,用来标识输入的图像是亮场还是暗场图像
  179. */
  180. enum DefectDataType
  181. {
  182. Light = 0,
  183. Dark
  184. };
  185. /**
  186. * \brief 平板探测器的工作模式,
  187. * \param 0x00通用, 0x03 0x06 0x07静态平板使用,0x01 0x08动态平板使用,0x05预留项,暂未使用
  188. */
  189. enum ModeType
  190. {
  191. Idle = 0x00,
  192. Sync_In_Mode = 0x01,
  193. Software_Mode = 0x03,
  194. AED_Offset_Mode = 0x05,
  195. AED_Mode = 0x06,
  196. Outer_Mode = 0x07,
  197. Freerun_Mode = 0x08,
  198. Industry_Mode = 0x09,
  199. MultiFram_Mean_Mode = 0x0a
  200. };
  201. struct MFMConfig
  202. {
  203. int iCapImgNum; //需要叠加的帧数
  204. double dImgGapTime; //帧间隔时间,单位s
  205. int iAlgType; //叠加算法,0最大值,1平均
  206. };
  207. struct ProgressInfo
  208. {
  209. int value; // 当前进度
  210. char sInfo[300]; // 输出提示信息
  211. };
  212. /**
  213. * \brief 获取执行进度的函数指针
  214. */
  215. typedef bool(_stdcall *ProgressCallbackFunc)(ProgressInfo* pProgress);
  216. #endif