FPGA.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. #pragma once
  2. #include "windows.h"
  3. #include <string>
  4. #include "DiosPacket.h"
  5. using namespace std;
  6. const string g_TypeTag = "type";
  7. const string g_IPTag = "ip";
  8. const string g_PortTag = "port";
  9. const string g_thisType = "TCPIP";
  10. #define FPGA_IMAGE_WIDTH (3072)
  11. #define FPGA_IMAGE_HEIGHT (2560)
  12. #define FPGA_PREV_IMAGE_WIDTH (768)
  13. #define FPGA_PREV_IMAGE_HEIGHT (640)
  14. #define FPGA_IMAGE_BIT (16)
  15. const WORD g_PARAM_1 = 0x0FF0;
  16. const WORD g_PARAM_2 = 0x1FF0;
  17. const WORD g_PARAM_4 = 0x2FF0;
  18. const WORD g_PARAM_8 = 0x3FF0;
  19. const WORD g_PARAM_16 = 0x4FF0;
  20. const WORD g_PARAM_32 = 0x5FF0;
  21. const WORD g_PARAM_64 = 0x6FF0;
  22. const WORD g_PARAM_128 = 0x7FF0;
  23. const WORD g_PARAM_1U = 0x8FF0;
  24. const WORD g_PARAM_2U = 0x9FF0;
  25. const WORD g_PARAM_4U = 0xAFF0;
  26. const WORD g_PARAM_OBJECT = 0x4000;
  27. const WORD g_PARAM_FLEXABLE = 0x8000;
  28. const char g_LEN_1 = 0x0a;
  29. const WORD g_KEY_INDEX = 0x9FFE;
  30. const WORD g_KEY_XWINDOW_SIZE = 0x1022;
  31. const WORD g_KEY_FRAME_NUM = 0x0021;
  32. const WORD g_KEY_DCVLIST = 0x9FFD;
  33. const WORD g_KEY_UNITLIST = 0xDFF9;
  34. const WORD g_KEY_UNITTYPE = 0x0FF4;
  35. const WORD g_KEY_UNITRESOURCE = 0xDFF6;
  36. const WORD g_KEY_UNITACTIONS = 0x9FF5;
  37. const WORD g_KEY_WINDOWSTATE_NOTIFY = 0x001E;
  38. const WORD g_KEY_ACQSTATE_NOTIFY = 0x0020;
  39. const WORD g_KEY_IMAGE_INFO = 0xE00C;
  40. const WORD g_KEY_IMAGE_WIDTH = 0x100D;
  41. const WORD g_KEY_IMAGE_HEIGHT = 0x100E;
  42. const WORD g_KEY_IMAGE_BIT = 0x100F;
  43. const WORD g_KEY_IMAGE_DEADLINE_TOP = 0x1010;
  44. const WORD g_KEY_IMAGE_DEADLINE_LEFT = 0x1011;
  45. const WORD g_KEY_IMAGE_DEADLINE_RIGHT = 0x1012;
  46. const WORD g_KEY_IMAGE_DEADLINE_BOTTOM = 0x1013;
  47. const WORD g_KEY_IMAGE_TAG = 0x2014;
  48. const WORD g_KEY_IMAGE_INDEX = 0x2015;
  49. const WORD g_KEY_IMAGE_YEAR = 0x1016;
  50. const WORD g_KEY_IMAGE_MONTH = 0x0017;
  51. const WORD g_KEY_IMAGE_DAY = 0x0018;
  52. const WORD g_KEY_IMAGE_HOUR = 0x0019;
  53. const WORD g_KEY_IMAGE_MINUTE = 0x001A;
  54. const WORD g_KEY_IMAGE_SEC = 0x001B;
  55. const WORD g_KEY_IMAGE_MILLSEC = 0x101C;
  56. const WORD g_KEY_IMAGE_DATA = 0xA01D;
  57. const WORD g_KEY_FPGA_STATUS = 0x0002;
  58. const WORD g_KEY_FPGA_GAINMODE = 0x0005;
  59. const BYTE ACT_HANDSHAKE = 254;
  60. const BYTE ACT_GET = 253;
  61. const BYTE ACT_SET = 252;
  62. const BYTE ACT_DATA = 249;
  63. const BYTE ACT_OPEN = 248;
  64. const BYTE ACT_STARTACQ = 199;
  65. const BYTE ACT_STOPACQ = 198;
  66. const BYTE ACT_FETCH = 197;
  67. const BYTE ACT_WAKEUP = 0xF0;
  68. const BYTE ACT_SLEEP = 0xF1;
  69. const BYTE ACT_RESET = 0xF2;
  70. const BYTE ACT_POWEROFF = 0xF4;
  71. //DiosPacket DiosCommands;
  72. //DiosPacket DataPacket;
  73. typedef struct _IMAGE
  74. {
  75. _IMAGE() {
  76. Width = 0;
  77. Height = 0;
  78. Bit = 0;
  79. TopOffset = 0;
  80. LeftOffset = 0;
  81. RightOffset = 0;
  82. BottomOffset = 0;
  83. ImageTag = 0;
  84. ImageIndex = 0;
  85. Year = 0;
  86. Month = 0;
  87. Day = 0;
  88. Hour = 0;
  89. Minute = 0;
  90. Second = 0;
  91. MillonSecond = 0;
  92. pData = NULL;
  93. };
  94. ~_IMAGE() {
  95. };
  96. unsigned short Width;
  97. unsigned short Height;
  98. unsigned short Bit;
  99. unsigned short TopOffset;
  100. unsigned short LeftOffset;
  101. unsigned short RightOffset;
  102. unsigned short BottomOffset;
  103. unsigned long ImageTag;
  104. unsigned long ImageIndex;
  105. unsigned short Year;
  106. BYTE Month;
  107. BYTE Day;
  108. BYTE Hour;
  109. BYTE Minute;
  110. BYTE Second;
  111. unsigned short MillonSecond;
  112. char *pData;
  113. }IMAGE;
  114. typedef struct _FPGAInfo
  115. {
  116. string strVenderID;
  117. string ProductID;
  118. string DeviceSN;
  119. string Firmware;
  120. BYTE PixelSize;
  121. }FPGAInfo;
  122. enum eUnitType
  123. {
  124. Unit_Dev = 0,
  125. Unit_Sync,
  126. Unit_Acq,
  127. };
  128. enum eTarget
  129. {
  130. TAG_REQ = 0,
  131. TAG_RES,
  132. TAG_NOTIFY,
  133. };
  134. enum eResult
  135. {
  136. RES_OK = 0,
  137. RES_NG,
  138. RES_PAN,
  139. RES_TIMEOUT,
  140. RES_ERROR,
  141. };
  142. typedef enum eDeviceState
  143. {
  144. Dev_Init = 0,
  145. Dev_Standby,
  146. Dev_Acquire,
  147. Dev_Sleep,
  148. Dev_Error,
  149. Dev_Status_Max
  150. }FPGASTATUS;
  151. enum eFOV
  152. {
  153. FOV_0=0,
  154. FOV_1,
  155. FOV_2,
  156. FOV_3,
  157. FOV_4,
  158. FOV_5,
  159. FOV_6,
  160. FOV_7,
  161. FOV_8,
  162. FOV_9,
  163. FOV_10,
  164. };
  165. enum eBinning
  166. {
  167. Bin_0 = 0,
  168. Bin_1,
  169. Bin_2,
  170. Bin_3,
  171. Bin_4,
  172. Bin_5,
  173. Bin_6,
  174. Bin_7,
  175. Bin_8,
  176. Bin_9,
  177. Bin_10,
  178. };
  179. enum eWindowState
  180. {
  181. WINDOW_OFF = 0,
  182. WINDOW_ON,
  183. };
  184. enum eAcqState
  185. {
  186. ACQ_END = 0,
  187. ACQ_START,
  188. };
  189. enum eImgState
  190. {
  191. IMG_INVALID = 0,
  192. IMG_READY,
  193. };
  194. typedef enum _eDeviceType
  195. {
  196. DEV_PHY = 0,
  197. DEV_SEQ,
  198. DEV_ACQ,
  199. DEV_BATTERY,
  200. DEV_MAX
  201. }EDEVICETYPE;
  202. bool ProcessImageObject(RawPacketObject *pObj, IMAGE &Img);
  203. int Init();//初始化DiosPacket
  204. void EncodeCommand(DiosPacket &OutputCommand, BYTE PhyIndex, BYTE LogicIndex, int Target, BYTE Command);//打包函数
  205. void EncodeParameters(DiosPacket &OutputCommand, const char *pData, size_t dataLen);//打包函数
  206. //Notify解析函数
  207. int WindowNofify(const char * InCommand, int len);
  208. //int ImageReadyNofify(const char * InCommand, int len);
  209. int WindowStateNotify(const char * InCommand, int len);
  210. int AcqStateNotify(const char * InCommand, int len);