#ifndef HSI_ILLUMINATION_INCLUDED_ #define HSI_ILLUMINATION_INCLUDED_ #pragma once class HSI_Illumination :public HSI { public: HSI_Illumination(); ~HSI_Illumination(); HSI_STATUS IsSupported(UINT &Types); virtual HSI_STATUS Startup(HWND _hWnd, bool bOfflineOnly); HSI_STATUS GetLampCount(int &nLamps); HSI_STATUS GetLampInfo(int& _LampInfo, int& _NumLamps, int(*_LampsType)[HSI_ILLUMINATION_MAX_BULB_TYPE], int *NumRings, int *NumSectors, int* _Color, double *_Angle, bool &bCanBeCalibrated); HSI_STATUS GetLampState(int nLamp, bool *bBulbStates, double *Intensities, int &Color, double &Angle); HSI_STATUS SetLampState(int nLamp, bool *bBulbStates, double *Intensities, int Color, double Angle, bool bWait); HSI_STATUS SetSelectedIndex(int index); HSI_STATUS GetLampStateAll(int _LampInfo, int _NumLamps, int(*_LampsType)[HSI_ILLUMINATION_MAX_BULB_TYPE], int(*bBulbStates)[HSI_ILLUMINATION_MAX_BULBS], double(*Intensities)[HSI_ILLUMINATION_MAX_BULBS]); HSI_STATUS SetLampStateAll(int _LampInfo, int _NumLamps, int(*_LampsType)[HSI_ILLUMINATION_MAX_BULB_TYPE], int(*bBulbStates)[HSI_ILLUMINATION_MAX_BULBS], double(*Intensities)[HSI_ILLUMINATION_MAX_BULBS], bool bWait); void TestSELight(bool flag); virtual HSI_STATUS Shutdown(); private: VOID EventCallback(sHSIEventProperties& sEventProp); CPSerial m_SO7_SerialA; CPSerial m_SO7_SerialB; int m_iIlluminationType; int m_iBuadRate; int m_iSleepTime; int m_iSo7DoubleSurface; int m_iMinRings; int m_iMaxRings; int m_iMinSectors; int m_iMaxSectors; int m_iSelectedIndex; byte m_cSendData[64]; int m_dIntensity[60]; BOOL m_bRS232AOpened; BOOL m_bRS232BOpened; BOOL SetLampState_So7I(int _NumLamps, int(*_LampsType)[HSI_ILLUMINATION_MAX_BULB_TYPE], int(*bBulbStates)[HSI_ILLUMINATION_MAX_BULBS], double(*Intensities)[HSI_ILLUMINATION_MAX_BULBS], bool bWait); BOOL SetLampState_So7II(int _NumLamps, int(*_LampsType)[HSI_ILLUMINATION_MAX_BULB_TYPE], int(*bBulbStates)[HSI_ILLUMINATION_MAX_BULBS], double(*Intensities)[HSI_ILLUMINATION_MAX_BULBS], bool bWait); BOOL SetLampState_So7III(int _NumLamps, int(*_LampsType)[HSI_ILLUMINATION_MAX_BULB_TYPE], int(*bBulbStates)[HSI_ILLUMINATION_MAX_BULBS], double(*Intensities)[HSI_ILLUMINATION_MAX_BULBS], bool bWait); BOOL SetLampState_So7IIII(int _NumLamps, int(*_LampsType)[HSI_ILLUMINATION_MAX_BULB_TYPE], int(*bBulbStates)[HSI_ILLUMINATION_MAX_BULBS], double(*Intensities)[HSI_ILLUMINATION_MAX_BULBS], bool bWait); BOOL _SendA_Command(const char* _SendData, DWORD _SendDataLength); BOOL So7LightII_set_light_off(); BOOL So7LightIII_set_light_off(); char m_RecvData[MAX_RECIEVE_BUFFER_SIZE]; DWORD m_RecvDataSize; void CreateDirectorySO(CString directoryLog); void DebugLog(CString strlog); //STM32 usb控制 bool m_bSTM32UsbFlag; HANDLE m_DeviceHandle; HANDLE m_hEventObject; HANDLE m_hDevInfo; GUID m_HidGuid; OVERLAPPED m_HIDOverlapped; ULONG m_Length; bool m_MyDeviceDetected = FALSE; CString m_MyDevicePathName; HANDLE m_ReadHandle; ULONG m_Required; HANDLE m_WriteHandle; int m_VendorID = 0; int m_ProductID = 0; bool FindTheHID(); void CloseHandles(); void RegisterForDeviceNotifications(); void GetDeviceCapabilities(); void PrepareForOverlappedTransfer(); }; extern HSI_Illumination *g_pHSI_Illumination; #endif