#pragma once #include "CppSQLite3.h" #include "dt.h" #include #include #include #include "CDataBaseOperate.h" #ifdef HARDWARE_DLL #define DLL_HARDWARE_API __declspec(dllexport) #else #define DLL_HARDWARE_API #endif namespace ns_db { using namespace std; #define HARDWARE_DATABASE_NAME ROOT_PATH##"\\db\\Hardware.db" #define CAMERA_LIST_TABLE_NAME "CameraList" #define MODULE_LIST_TABLE_NAME "ModuleList" #define AXIS_LIST_TABLE_NAME "AxisList" #define DIGIT_IO_LIST_TABLE_NAME "DigitIoList" typedef struct _CAMERA_LIST_STRUCT : TABLE_INFO_BASE { string CameraName; //相机名称 INT CameraType; //相机类型 string Describe; //相机描述信息 INT LampType; //灯光控制器类型 string RedAddrs; //红光IP,或串口号 INT RedLight; //红光通道号(-1 表示不用该种光) string GreenAddrs; //绿光IP,或串口号 INT GreenLight; //绿光通道号(-1 表示不用该种光) string BlueAddrs; //蓝光IP,或串口号 INT BlueLight; //蓝光通道号(-1 表示不用该种光) string PointAddrs; //点光IP,或串口号 INT PointLight; //点光源通道号(-1 表示不用该种光) } CAMERA_LIST_STRUCT; // typedef struct _MODULE_LIST_STRUCT : TABLE_INFO_BASE { string ModuleType; //模组类型 string ModuleName; //模组名称 bool Enable; //是否启用 }MODULE_LIST_STRUCT; // #pragma region Axis_XXX //马达轴的权限枚举 enum AXIS_USE { DISABLE = 0, SLAVE = 1, MASTER = 2 }; typedef struct _AXIS_LIST_STRUCT : TABLE_INFO_BASE { string ModuleType; //模组类型 string AxisType; //轴类型 string AxisName; //轴名称 AXIS_USE Use; //轴状态 bool EnaDiag; //诊断时是否使能 UINT HomePriority; //回零优先顺序:0~3 数值越大,越先回零 UINT HomeTime; //回零等待时间(秒) UINT FastTime; //快速等待时间(秒) UINT MediumTime; //中速等待时间(秒) UINT SlowTime; //慢速等待时间(秒) string strDescribe; //描述 _AXIS_LIST_STRUCT() { ModuleType = ""; AxisName = ""; Use = AXIS_USE::DISABLE; AxisType = ""; EnaDiag = true; HomePriority = 0; HomeTime = 0; FastTime = 0; MediumTime = 0; SlowTime = 0; strDescribe = ""; } }AXIS_LIST_STRUCT; #pragma endregion #pragma region IO_XXX enum IO_TYPE { DI = 0, DO,DIS, DOS, AI, AO }; enum DIGIT_IO_LEVEL { LOW = 0/*低电平*/, HIGH = 1/*高电平*/, NUL }; typedef struct _IO_CONFIG_STRUCT : TABLE_INFO_BASE { string IoName; //IO名称 bool Use; //IO是否使用 string Describe; //描述 string ModuleType; //模组类型 string IoUtility; //轴类型 IO_TYPE IoType; //IO类型 DIGIT_IO_LEVEL StartingState; //OUTPUT IO当前状态 ,INPUT IO 该字段无用 } IO_CONFIG_STRUCT; //IO定义 #pragma endregion class DLL_HARDWARE_API CHardware : public CDataBaseOperate { public: CHardware(); private: LONG SaveDB() override; LONG LoadDB() override; LONG SaveAxisConfig(string strTableName, std::vector* vecAxisConfig); LONG SaveIOConfig(string strTableName, std::vector* vecIOConfig); #pragma region IoList private: std::vector m_vecIoList; LONG LoadIoList(); public: std::vector GetIoList() { return m_vecIoList; }; #pragma endregion #pragma region AxisList private: std::vector m_vecAxisList; LONG LoadAxisList(); public: std::vector GetAxisList() { return m_vecAxisList; }; #pragma endregion #pragma region CameraList private: std::vector m_vecCameraList; LONG LoadCameraList(); public: std::vector GetCameraList() {return m_vecCameraList;}; #pragma endregion #pragma region ModuleList private: std::vector m_vecModuleList; LONG LoadModuleList(); public: std::vector GetModuleList() { return m_vecModuleList; }; LONG GetModuleByName(string strModuleName, MODULE_LIST_STRUCT& stModule); #pragma endregion private: std::vector m_vecIOConfig_Ejector; public: LONG GetIOEjectorConfig(std::vector& vecIOConfig); LONG SetIOEjectorConfig(std::vector* vecIOConfig); LONG GetIOEjectorConfig(const char* InteriorName, IO_CONFIG_STRUCT& stIOConfig); LONG SetIOEjectorConfig(const char* InteriorName, IO_CONFIG_STRUCT& stIOConfig); //LONG GetAxisBondHeadConfig(const char* InteriorName, AXIS_CONFIG_STRUCT& stAxisConfig); //LONG GetIOBondHeadConfig(const char* InteriorName, IO_CONFIG_STRUCT& stIOConfig); }; }