#pragma once #include "windows.h" #include #include "DiosPacket.h" using namespace std; const string g_TypeTag = "type"; const string g_IPTag = "ip"; const string g_PortTag = "port"; const string g_thisType = "TCPIP"; #define FPGA_IMAGE_WIDTH (3072) #define FPGA_IMAGE_HEIGHT (2560) #define FPGA_PREV_IMAGE_WIDTH (768) #define FPGA_PREV_IMAGE_HEIGHT (640) #define FPGA_IMAGE_BIT (16) const WORD g_PARAM_1 = 0x0FF0; const WORD g_PARAM_2 = 0x1FF0; const WORD g_PARAM_4 = 0x2FF0; const WORD g_PARAM_8 = 0x3FF0; const WORD g_PARAM_16 = 0x4FF0; const WORD g_PARAM_32 = 0x5FF0; const WORD g_PARAM_64 = 0x6FF0; const WORD g_PARAM_128 = 0x7FF0; const WORD g_PARAM_1U = 0x8FF0; const WORD g_PARAM_2U = 0x9FF0; const WORD g_PARAM_4U = 0xAFF0; const WORD g_PARAM_OBJECT = 0x4000; const WORD g_PARAM_FLEXABLE = 0x8000; const char g_LEN_1 = 0x0a; const WORD g_KEY_INDEX = 0x9FFE; const WORD g_KEY_XWINDOW_SIZE = 0x1022; const WORD g_KEY_FRAME_NUM = 0x0021; const WORD g_KEY_DCVLIST = 0x9FFD; const WORD g_KEY_UNITLIST = 0xDFF9; const WORD g_KEY_UNITTYPE = 0x0FF4; const WORD g_KEY_UNITRESOURCE = 0xDFF6; const WORD g_KEY_UNITACTIONS = 0x9FF5; const WORD g_KEY_WINDOWSTATE_NOTIFY = 0x001E; const WORD g_KEY_ACQSTATE_NOTIFY = 0x0020; const WORD g_KEY_IMAGE_INFO = 0xE00C; const WORD g_KEY_IMAGE_WIDTH = 0x100D; const WORD g_KEY_IMAGE_HEIGHT = 0x100E; const WORD g_KEY_IMAGE_BIT = 0x100F; const WORD g_KEY_IMAGE_DEADLINE_TOP = 0x1010; const WORD g_KEY_IMAGE_DEADLINE_LEFT = 0x1011; const WORD g_KEY_IMAGE_DEADLINE_RIGHT = 0x1012; const WORD g_KEY_IMAGE_DEADLINE_BOTTOM = 0x1013; const WORD g_KEY_IMAGE_TAG = 0x2014; const WORD g_KEY_IMAGE_INDEX = 0x2015; const WORD g_KEY_IMAGE_YEAR = 0x1016; const WORD g_KEY_IMAGE_MONTH = 0x0017; const WORD g_KEY_IMAGE_DAY = 0x0018; const WORD g_KEY_IMAGE_HOUR = 0x0019; const WORD g_KEY_IMAGE_MINUTE = 0x001A; const WORD g_KEY_IMAGE_SEC = 0x001B; const WORD g_KEY_IMAGE_MILLSEC = 0x101C; const WORD g_KEY_IMAGE_DATA = 0xA01D; const WORD g_KEY_FPGA_STATUS = 0x0002; const WORD g_KEY_FPGA_GAINMODE = 0x0005; const BYTE ACT_HANDSHAKE = 254; const BYTE ACT_GET = 253; const BYTE ACT_SET = 252; const BYTE ACT_DATA = 249; const BYTE ACT_OPEN = 248; const BYTE ACT_STARTACQ = 199; const BYTE ACT_STOPACQ = 198; const BYTE ACT_FETCH = 197; const BYTE ACT_WAKEUP = 0xF0; const BYTE ACT_SLEEP = 0xF1; const BYTE ACT_RESET = 0xF2; const BYTE ACT_POWEROFF = 0xF4; //DiosPacket DiosCommands; //DiosPacket DataPacket; typedef struct _IMAGE { _IMAGE() { Width = 0; Height = 0; Bit = 0; TopOffset = 0; LeftOffset = 0; RightOffset = 0; BottomOffset = 0; ImageTag = 0; ImageIndex = 0; Year = 0; Month = 0; Day = 0; Hour = 0; Minute = 0; Second = 0; MillonSecond = 0; pData = NULL; }; ~_IMAGE() { }; unsigned short Width; unsigned short Height; unsigned short Bit; unsigned short TopOffset; unsigned short LeftOffset; unsigned short RightOffset; unsigned short BottomOffset; unsigned long ImageTag; unsigned long ImageIndex; unsigned short Year; BYTE Month; BYTE Day; BYTE Hour; BYTE Minute; BYTE Second; unsigned short MillonSecond; char *pData; }IMAGE; typedef struct _FPGAInfo { string strVenderID; string ProductID; string DeviceSN; string Firmware; BYTE PixelSize; }FPGAInfo; enum eUnitType { Unit_Dev = 0, Unit_Sync, Unit_Acq, }; enum eTarget { TAG_REQ = 0, TAG_RES, TAG_NOTIFY, }; enum eResult { RES_OK = 0, RES_NG, RES_PAN, RES_TIMEOUT, RES_ERROR, }; typedef enum eDeviceState { Dev_Init = 0, Dev_Standby, Dev_Acquire, Dev_Sleep, Dev_Error, Dev_Status_Max }FPGASTATUS; enum eFOV { FOV_0=0, FOV_1, FOV_2, FOV_3, FOV_4, FOV_5, FOV_6, FOV_7, FOV_8, FOV_9, FOV_10, }; enum eBinning { Bin_0 = 0, Bin_1, Bin_2, Bin_3, Bin_4, Bin_5, Bin_6, Bin_7, Bin_8, Bin_9, Bin_10, }; enum eWindowState { WINDOW_OFF = 0, WINDOW_ON, }; enum eAcqState { ACQ_END = 0, ACQ_START, }; enum eImgState { IMG_INVALID = 0, IMG_READY, }; typedef enum _eDeviceType { DEV_PHY = 0, DEV_SEQ, DEV_ACQ, DEV_BATTERY, DEV_MAX }EDEVICETYPE; bool ProcessImageObject(RawPacketObject *pObj, IMAGE &Img); int Init();//初始化DiosPacket void EncodeCommand(DiosPacket &OutputCommand, BYTE PhyIndex, BYTE LogicIndex, int Target, BYTE Command);//打包函数 void EncodeParameters(DiosPacket &OutputCommand, const char *pData, size_t dataLen);//打包函数 //Notify解析函数 int WindowNofify(const char * InCommand, int len); //int ImageReadyNofify(const char * InCommand, int len); int WindowStateNotify(const char * InCommand, int len); int AcqStateNotify(const char * InCommand, int len);