CHardware.h 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. #pragma once
  2. #include "CppSQLite3.h"
  3. #include "dt.h"
  4. #include <string>
  5. #include <windows.h>
  6. #include <mutex>
  7. #include "CDataBaseOperate.h"
  8. #ifdef HARDWARE_DLL
  9. #define DLL_HARDWARE_API __declspec(dllexport)
  10. #else
  11. #define DLL_HARDWARE_API
  12. #endif
  13. namespace ns_db
  14. {
  15. using namespace std;
  16. #define HARDWARE_DATABASE_NAME ROOT_PATH##"\\db\\Hardware.db"
  17. #define CAMERA_LIST_TABLE_NAME "CameraList"
  18. #define MODULE_LIST_TABLE_NAME "ModuleList"
  19. #define AXIS_LIST_TABLE_NAME "AxisList"
  20. #define DIGIT_IO_LIST_TABLE_NAME "DigitIoList"
  21. #define HOT_ZONE_TABLE_NAME "HotZone"
  22. typedef struct _CAMERA_LIST_STRUCT : TABLE_INFO_BASE
  23. {
  24. string CameraName; //相机名称
  25. INT CameraType; //相机类型
  26. string Describe; //相机描述信息
  27. INT LampType; //灯光控制器类型
  28. string RedAddrs; //红光IP,或串口号
  29. INT RedLight; //红光通道号(-1 表示不用该种光)
  30. string GreenAddrs; //绿光IP,或串口号
  31. INT GreenLight; //绿光通道号(-1 表示不用该种光)
  32. string BlueAddrs; //蓝光IP,或串口号
  33. INT BlueLight; //蓝光通道号(-1 表示不用该种光)
  34. string PointAddrs; //点光IP,或串口号
  35. INT PointLight; //点光源通道号(-1 表示不用该种光)
  36. } CAMERA_LIST_STRUCT; //
  37. typedef struct _MODULE_LIST_STRUCT : TABLE_INFO_BASE
  38. {
  39. string ModuleType; //模组类型
  40. string ModuleName; //模组名称
  41. bool Enable; //是否启用
  42. }MODULE_LIST_STRUCT; //
  43. enum COMPARE_RULE {
  44. Not_Compare = 0, //不比较
  45. Less_Than, //小于起始位置为热区
  46. Greater_Than, //大于起始位置为热区
  47. In_Rang, //在起始位置到结束位置范围内为热区
  48. Out_Rang //在起始位置到结束位置范围外为热区
  49. };
  50. typedef struct _HOT_ZONE_STRUCT : TABLE_INFO_BASE
  51. {
  52. INT ZoneId; //热区Id
  53. string ModuleType; //模组类型
  54. double StartPos_X; //X轴起始位置
  55. double EndPos_X; //X轴结束位置。只有Rule_X为In_Rang或Out_Rang时才有用
  56. COMPARE_RULE Rule_X; //X轴比较类型
  57. double StartPos_Y; //Y轴起始位置
  58. double EndPos_Y; //Y轴结束位置。只有Rule_Y为In_Rang或Out_Rang时才有用
  59. COMPARE_RULE Rule_Y; //Y轴比较类型
  60. double StartPos_Z; //Z轴起始位置
  61. double EndPos_Z; //Z轴结束位置。只有Rule_Z为In_Rang或Out_Rang时才有用
  62. COMPARE_RULE Rule_Z; //Z轴比较类型
  63. } MODULE_HOT_ZONE_STRUCT;
  64. #pragma region Axis_XXX
  65. //马达轴的权限枚举
  66. enum AXIS_USE { DISABLE = 0, SLAVE = 1, MASTER = 2 };
  67. typedef struct _AXIS_LIST_STRUCT : TABLE_INFO_BASE
  68. {
  69. string ModuleType; //模组类型
  70. string AxisType; //轴类型
  71. string AxisName; //轴名称
  72. AXIS_USE Use; //轴状态
  73. bool EnaDiag; //诊断时是否使能
  74. UINT HomePriority; //回零优先顺序:0~3 数值越大,越先回零
  75. UINT HomeTime; //回零等待时间(秒)
  76. UINT FastTime; //快速等待时间(秒)
  77. UINT MediumTime; //中速等待时间(秒)
  78. UINT SlowTime; //慢速等待时间(秒)
  79. string strDescribe; //描述
  80. _AXIS_LIST_STRUCT()
  81. {
  82. ModuleType = "";
  83. AxisName = "";
  84. Use = AXIS_USE::DISABLE;
  85. AxisType = "";
  86. EnaDiag = true;
  87. HomePriority = 0;
  88. HomeTime = 0;
  89. FastTime = 0;
  90. MediumTime = 0;
  91. SlowTime = 0;
  92. strDescribe = "";
  93. }
  94. }AXIS_LIST_STRUCT;
  95. #pragma endregion
  96. #pragma region IO_XXX
  97. enum IO_TYPE { DI = 0, DO,DIS, DOS, AI, AO };
  98. enum DIGIT_IO_LEVEL { LOW = 0/*低电平*/, HIGH = 1/*高电平*/, NUL };
  99. typedef struct _IO_CONFIG_STRUCT : TABLE_INFO_BASE
  100. {
  101. string IoName; //IO名称
  102. bool Use; //IO是否使用
  103. string Describe; //描述
  104. string ModuleType; //模组类型
  105. string IoUtility; //轴类型
  106. IO_TYPE IoType; //IO类型
  107. DIGIT_IO_LEVEL StartingState; //OUTPUT IO当前状态 ,INPUT IO 该字段无用
  108. } IO_CONFIG_STRUCT; //IO定义
  109. #pragma endregion
  110. class DLL_HARDWARE_API CHardware : public CDataBaseOperate
  111. {
  112. public:
  113. CHardware();
  114. private:
  115. LONG SaveDB() override;
  116. LONG LoadDB() override;
  117. LONG SaveAxisConfig(string strTableName, std::vector<AXIS_LIST_STRUCT>* vecAxisConfig);
  118. LONG SaveIOConfig(string strTableName, std::vector<IO_CONFIG_STRUCT>* vecIOConfig);
  119. #pragma region IoList
  120. private:
  121. std::vector<IO_CONFIG_STRUCT> m_vecIoList;
  122. LONG LoadIoList();
  123. public:
  124. std::vector<IO_CONFIG_STRUCT> GetIoList() { return m_vecIoList; };
  125. #pragma endregion
  126. #pragma region AxisList
  127. private:
  128. std::vector<AXIS_LIST_STRUCT> m_vecAxisList;
  129. LONG LoadAxisList();
  130. public:
  131. std::vector<AXIS_LIST_STRUCT> GetAxisList() { return m_vecAxisList; };
  132. #pragma endregion
  133. #pragma region CameraList
  134. private:
  135. std::vector<CAMERA_LIST_STRUCT> m_vecCameraList;
  136. LONG LoadCameraList();
  137. public:
  138. std::vector<CAMERA_LIST_STRUCT> GetCameraList() {return m_vecCameraList;};
  139. #pragma endregion
  140. #pragma region ModuleList
  141. private:
  142. std::vector<MODULE_LIST_STRUCT> m_vecModuleList;
  143. LONG LoadModuleList();
  144. public:
  145. std::vector<MODULE_LIST_STRUCT> GetModuleList() { return m_vecModuleList; };
  146. LONG GetModuleByName(string strModuleName, MODULE_LIST_STRUCT& stModule);
  147. #pragma endregion
  148. #pragma region HotZone
  149. private:
  150. std::vector<MODULE_HOT_ZONE_STRUCT> m_vecHotZoneList;
  151. LONG LoadHotZoneList();
  152. public:
  153. std::vector<MODULE_HOT_ZONE_STRUCT> GetHotZoneList() { return m_vecHotZoneList; };
  154. LONG GetHotZoneByName(string strModuleName, std::vector <MODULE_HOT_ZONE_STRUCT>& stModule);
  155. #pragma endregion
  156. private:
  157. std::vector<IO_CONFIG_STRUCT> m_vecIOConfig_Ejector;
  158. public:
  159. LONG GetIOEjectorConfig(std::vector<IO_CONFIG_STRUCT>& vecIOConfig);
  160. LONG SetIOEjectorConfig(std::vector<IO_CONFIG_STRUCT>* vecIOConfig);
  161. LONG GetIOEjectorConfig(const char* InteriorName, IO_CONFIG_STRUCT& stIOConfig);
  162. LONG SetIOEjectorConfig(const char* InteriorName, IO_CONFIG_STRUCT& stIOConfig);
  163. //LONG GetAxisBondHeadConfig(const char* InteriorName, AXIS_CONFIG_STRUCT& stAxisConfig);
  164. //LONG GetIOBondHeadConfig(const char* InteriorName, IO_CONFIG_STRUCT& stIOConfig);
  165. };
  166. }