CHardware.h 6.0 KB

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