YuYingDefinition.h 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. #ifndef _YUYING_DEFINITION_H_
  2. #define _YUYING_DEFINITION_H_
  3. #pragma pack(push)
  4. #pragma pack(1)
  5. /**
  6. * \brief 获取图像函数指针签名
  7. * \param 指针,指向图像数据的内存地址
  8. * 用户需要保证快速将图像取走,不能在回调函数中做与保存图像无关的操作
  9. * \return
  10. */
  11. typedef bool(_stdcall *ImageReadyCallbackFunc)(const char* pImage,unsigned long ImageSize);
  12. /**
  13. * \brief 错误码,用于用户了解当前出错原因
  14. */
  15. enum SystemErrorCode
  16. {
  17. /*Test code*/
  18. SEC_For_Test = -1,
  19. /*No Problem*/
  20. SEC_Succeed = 0,
  21. /*FPD问题*/
  22. SEC_FPD_Busy = 1, // 平板探测器正忙
  23. SEC_FPD_FeedBack_Timeout, // 平板探测器反馈命令超时
  24. SEC_FPD_FeedBack_Process_Error, // 平板探测器未正常处理此命令
  25. SEC_FPD_Not_Support_Current_Mode, // 探测器不支持此模式
  26. SEC_FPD_FeedBack_Parameter_Error, // 探测器反馈参数存在非法值
  27. SEC_FPD_Function_Not_Support_In_Current_Mode, //当前模式不支持此功能
  28. /*SDK问题*/
  29. SEC_SDK_Not_Init = 100, // 软件未初始化
  30. SEC_SDK_Repeated_init, // 软件重复初始化
  31. SEC_SDK_DeviceID_Not_Exist, // 设备标识ID输入错误
  32. SEC_SDK_No_Available_Device_Ctx, // 未获取可用的设备上下文
  33. /*通讯问题*/
  34. SEC_CMD_Timing_Error = 200, // 时序问题,如果收到此信息请尝试重新发送上一条命令
  35. SEC_CMD_Send_Error = 201, // 发送命令失败
  36. SEC_CMD_Checksum_Error = 202, // 命令校验码错误
  37. /*其他设备问题*/
  38. SEC_DEVICE_Network_Error = 300, // 网线断开或者IP设置错误
  39. SEC_DEVICE_Sock_Error = 301, // socket初始化失败,ip或者port被占用
  40. /*其他问题*/
  41. SEC_Path_Error = 1000, // 保存或者读取时如果路径不对,提示此code
  42. SEC_Input_Parameter_Error, // 函数的输入参数非法
  43. SEC_Read_Info_Failed, // 读取信息失败
  44. SEC_Open_File_Failed, // 打开文件失败
  45. SEC_Unknown, // 未知错误
  46. };
  47. enum SystemInfoCode
  48. {
  49. SIC_NOT_READY,//探测器对X射线未就绪,可以下达caputreimage命令,激活探测器
  50. SIC_WAIT_EXP , //探测器对X射线就绪,等待曝光
  51. SIC_IN_EXP, //曝光中
  52. SIC_ROIC_BUSY, //曝光结束,ROIC读出中
  53. SIC_ROIC_DONE, //ROIC读出结束,可以网络传输,此状态探测器无法再曝光或取新图,需要使用freebuffer或是auto_delete=1
  54. SIC_TEMPERTURE=0x100, //对应的参数内容是:温度
  55. SIC_HUMIDITY, //对应的参数内容是:湿度
  56. SIC_BATTERY, //对应的参数内容是:电池电量百分比
  57. };
  58. /**
  59. * \brief 获取系统状态信息的指针签名,用户获取到状态信息后按照自己的需求处理
  60. * \param iCodeIndex 系统状态ID
  61. * \param sContent 提示信息
  62. */
  63. typedef bool(_stdcall *SystemInfoCallbackFunc)(SystemInfoCode iCodeIndex, const char* sContent);
  64. /**
  65. * \brief 平板探测器与模式无关的通用配置项
  66. * \ r 表示只读, r/w表示可读写,un 表示预留配置,当前未使用
  67. */
  68. struct YIConfigInfo_Common
  69. {
  70. char arrProductInitSN[16]; // 产品sn码 r
  71. char arrFPGAVerMain[4]; // FPGA 版本号 | r
  72. char arrMCUVerMain[4]; // MCU版本号 | r
  73. char arrWIFIVerMain[4]; // WIFI 版本号 | r
  74. unsigned short usLocalUDPPort; // 平板探测器网络端口号 | r
  75. char arrLocalIPAddress[4]; // 平板探测器网络IP地址 | r
  76. char arrLocalMACAddr[6]; // 平板探测器网络MAC地址 | r
  77. unsigned short usDestUDPPort; // 平板探测器控制设备的网络端口号 | r
  78. char arrDestIPAddress[4]; // 平板探测器控制设备的网络IP地址 | r
  79. char arrDestMACAddress[6]; // 平板探测器控制设备的MAC地址 | r
  80. char arrFPGADNA[16]; // FPGA DNA | un
  81. char arrProductUserSN[16]; // 用户自定义sn码 | r/w
  82. unsigned short usCBLocalUDPPort; // 控制盒网络端口号 | un
  83. char arrCBLocalIPAddress[4]; // 控制盒网络IP地址 | un
  84. char arrCBLocalMACAddress[6]; // 控制盒网络MAC地址 | un
  85. unsigned short usCBDestUDPPort; // 控制盒控制设备的网络端口号 | un
  86. char arrCBDestIPAddress[4]; // 控制盒控制设备的网络IP地址 | un
  87. char arrCBDestMACAddress[6]; // 控制盒控制设备的网络MAC地址 | un
  88. char arrCBSN[16]; // 控制盒的sn码 | un
  89. char cDefaultMode; // 平板探测器默认模式 | un
  90. char cDefaultSpeedMode; // 默认速度模式 | un
  91. unsigned short usPkgGapTime; // 包间间隔时间 | r/w
  92. char cFluoroPhotospot; // 透视-点片关联 | un
  93. char cRoicSleepEnable; // ROIC休眠使能 | r/w
  94. char cPenalPitch; // 平板探测器分辨率 | r
  95. char cStaticDynamicSwicth; // 是否可以动态静态切换 | r
  96. char cPreoffsetEnable; // 预清空使能 | r/w
  97. char cAEDEnable; // 是否有AED功能 | r
  98. };
  99. /**
  100. * \brief 枚举变量,用于1417平板探测器,YIConfigInfo_SyncOut结构体中的cBinningMode项
  101. */
  102. enum BinningMode1417
  103. {
  104. FullSize_1417_1X1 = 0x00, //全尺寸1*1,3072*3072
  105. FullSize_1417_2X2, //全尺寸2*2,2048*2048
  106. FullSize_1417_4X4, //全尺寸4*4,1024*1024
  107. MiddleSize_1417_1X1 = 0x04,//中尺寸1*1,2048*2048
  108. MiddleSize_1417_2X2, //中尺寸2*2,1024*1024
  109. SmallSize_1417_1X1, //小尺寸1*1,1024*1024
  110. };
  111. /**
  112. * \brief 枚举变量,用于1717平板探测器,YIConfigInfo_SyncOut结构体中的cBinningMode项
  113. */
  114. enum BinningMode1717
  115. {
  116. FullSize_1717_1X1 = 0x00, //全尺寸1*1,2560*3072
  117. FullSize_1717_2X2, //全尺寸2*2,1280*1536
  118. FullSize_1717_4X4, //全尺寸4*4,640*768
  119. MiddleSize_1717_1X1 = 0x04, //中尺寸1*1,2048*2048
  120. MiddleSize_1717_2X2, //中尺寸2*2,1024*1024
  121. SmallSize_1717_1X1 //小尺寸1*1,1024*1024
  122. };
  123. struct YIConfigInfo_SyncOut
  124. {
  125. unsigned short usTubePrepare; // 球管准备时间 | r/w
  126. unsigned short usSampleNum; // 采集数量 | un
  127. char cPreOffsetNum; // 收到开始采集指令后清空次数 | r/w
  128. unsigned short usOffsetTimeGap; // Preoffset时间间隔,单位:毫秒ms | r/w
  129. unsigned short usExposureWindow; // 曝光窗口时间,单位:毫秒ms | r/w
  130. unsigned short usExposureTimeOut; // 曝光超时时间,单位:毫秒ms | un
  131. unsigned short usStartRow; // 起始行号 | r/w
  132. unsigned short usEndRow; // 结束行号 | r/w
  133. unsigned short usStartColumn; // 起始列号 | r/w
  134. unsigned short usEndColumn; // 结束列号 | r/w
  135. char cBinningMode; // Binning模式,0表示1*1,1表示2*2,2表示4*4 | (动态平板)r/w | (静态平板) r
  136. char cMaxFrameRate; // 最大帧率 | un
  137. char cCapacitor; // 灵敏度 | r/w
  138. char cRefTFT; // 参考电平 | r/w
  139. char cOffsetOn; // 平板探测器Offset使能,1 表示使能, 0 表示不使能 | r/w
  140. char cCorrectOn; // 平板探测器Gain使能,1 表示使能,0 表示不使能 | r/w
  141. char cReserve; // 预留项 | un
  142. unsigned short usLineTime; // 行扫描时间 | r/w
  143. };
  144. /**
  145. * \brief 用于设置要做什么校正
  146. */
  147. enum DoCorrectType
  148. {
  149. Do_Nothing = 0x00,
  150. Do_Gain = 0x01,
  151. Do_Offset = 0x02,
  152. Do_Defect = 0x04,
  153. Do_AedOffset = 0x08,
  154. };
  155. /**
  156. * \brief 做defect校正模板时,用来标识输入的图像是亮场还是暗场图像
  157. */
  158. enum DefectDataType
  159. {
  160. Light = 0,
  161. Dark
  162. };
  163. struct csi_ext_trig_param
  164. {
  165. unsigned long trig_delay;
  166. unsigned long trig_timeout;
  167. };
  168. struct csi_ball_trig_param
  169. {
  170. unsigned long out_trig_delay;
  171. unsigned long out_trig_width;
  172. };
  173. struct csi_sensor_trig_param
  174. {
  175. unsigned long sensor_thd;
  176. unsigned long trig_delay;
  177. unsigned long trig_timeout;
  178. };
  179. typedef struct __FpdMode {
  180. unsigned char workMode;
  181. unsigned char trigType;
  182. union
  183. {
  184. struct csi_ext_trig_param ext_trig;
  185. struct csi_ball_trig_param ball_trig;
  186. struct csi_sensor_trig_param sensor_trig;
  187. }param;
  188. } FpdMode;
  189. /**
  190. * \brief 平板探测器的工作模式
  191. */
  192. enum ModeType
  193. {
  194. Idle = 0x00,
  195. Normal_Mode = 0x01,
  196. NormalCompress_Mode = 0x02,
  197. Continuous_Mode = 0x03,
  198. ContinuousCompress_Mode = 0x04,
  199. Invalid_Mode
  200. };
  201. enum TrigType
  202. {
  203. DARK_TRIG_MODE = 0,
  204. SOFT_TRIG_MODE = 1,
  205. EXT_TRIG_MODE = 2,
  206. TRIG_EXT_MODE = 3,
  207. SENSOR_TRIG_MODE = 4,
  208. SOFT_AED_MODE = 5,
  209. TRIG_MODE_MAX
  210. };
  211. struct ProgressInfo
  212. {
  213. int value; // 当前进度
  214. char sInfo[300]; // 输出提示信息
  215. };
  216. /**
  217. * \brief 获取执行进度的函数指针
  218. */
  219. typedef bool(_stdcall *ProgressCallbackFunc)(ProgressInfo* pProgress);
  220. // Extension definition
  221. #define FPD_TYPE_STATIC 0
  222. #define FPD_TYPE_DYNAMIC 1
  223. #pragma pack(pop)
  224. #endif