CHardware.h 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  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. typedef struct _CAMERA_LIST_STRUCT : TABLE_INFO_BASE
  22. {
  23. string CameraName; //相机名称
  24. INT CameraType; //相机类型
  25. string Describe; //相机描述信息
  26. INT LampType; //灯光控制器类型
  27. string RedAddrs; //红光IP,或串口号
  28. INT RedLight; //红光通道号(-1 表示不用该种光)
  29. string GreenAddrs; //绿光IP,或串口号
  30. INT GreenLight; //绿光通道号(-1 表示不用该种光)
  31. string BlueAddrs; //蓝光IP,或串口号
  32. INT BlueLight; //蓝光通道号(-1 表示不用该种光)
  33. string PointAddrs; //点光IP,或串口号
  34. INT PointLight; //点光源通道号(-1 表示不用该种光)
  35. } CAMERA_LIST_STRUCT; //
  36. typedef struct _MODULE_LIST_STRUCT : TABLE_INFO_BASE
  37. {
  38. string ModuleType; //模组类型
  39. string ModuleName; //模组名称
  40. bool Enable; //是否启用
  41. }MODULE_LIST_STRUCT; //
  42. #pragma region Axis_XXX
  43. //马达轴的权限枚举
  44. enum AXIS_USE { DISABLE = 0, SLAVE = 1, MASTER = 2 };
  45. typedef struct _AXIS_LIST_STRUCT : TABLE_INFO_BASE
  46. {
  47. string ModuleType; //模组类型
  48. string AxisType; //轴类型
  49. string AxisName; //轴名称
  50. AXIS_USE Use; //轴状态
  51. bool EnaDiag; //诊断时是否使能
  52. UINT HomePriority; //回零优先顺序:0~3 数值越大,越先回零
  53. UINT HomeTime; //回零等待时间(秒)
  54. UINT FastTime; //快速等待时间(秒)
  55. UINT MediumTime; //中速等待时间(秒)
  56. UINT SlowTime; //慢速等待时间(秒)
  57. string strDescribe; //描述
  58. _AXIS_LIST_STRUCT()
  59. {
  60. ModuleType = "";
  61. AxisName = "";
  62. Use = AXIS_USE::DISABLE;
  63. AxisType = "";
  64. EnaDiag = true;
  65. HomePriority = 0;
  66. HomeTime = 0;
  67. FastTime = 0;
  68. MediumTime = 0;
  69. SlowTime = 0;
  70. strDescribe = "";
  71. }
  72. }AXIS_LIST_STRUCT;
  73. #pragma endregion
  74. #pragma region IO_XXX
  75. enum IO_TYPE { DI = 0, DO,DIS, DOS, AI, AO };
  76. enum DIGIT_IO_LEVEL { LOW = 0/*低电平*/, HIGH = 1/*高电平*/, NUL };
  77. typedef struct _IO_CONFIG_STRUCT : TABLE_INFO_BASE
  78. {
  79. string IoName; //IO名称
  80. bool Use; //IO是否使用
  81. string Describe; //描述
  82. string ModuleType; //模组类型
  83. string IoUtility; //轴类型
  84. IO_TYPE IoType; //IO类型
  85. DIGIT_IO_LEVEL StartingState; //OUTPUT IO当前状态 ,INPUT IO 该字段无用
  86. } IO_CONFIG_STRUCT; //IO定义
  87. #pragma endregion
  88. class DLL_HARDWARE_API CHardware : public CDataBaseOperate
  89. {
  90. public:
  91. CHardware();
  92. private:
  93. LONG SaveDB() override;
  94. LONG LoadDB() override;
  95. LONG SaveAxisConfig(string strTableName, std::vector<AXIS_LIST_STRUCT>* vecAxisConfig);
  96. LONG SaveIOConfig(string strTableName, std::vector<IO_CONFIG_STRUCT>* vecIOConfig);
  97. #pragma region IoList
  98. private:
  99. std::vector<IO_CONFIG_STRUCT> m_vecIoList;
  100. LONG LoadIoList();
  101. public:
  102. std::vector<IO_CONFIG_STRUCT> GetIoList() { return m_vecIoList; };
  103. #pragma endregion
  104. #pragma region AxisList
  105. private:
  106. std::vector<AXIS_LIST_STRUCT> m_vecAxisList;
  107. LONG LoadAxisList();
  108. public:
  109. std::vector<AXIS_LIST_STRUCT> GetAxisList() { return m_vecAxisList; };
  110. #pragma endregion
  111. #pragma region CameraList
  112. private:
  113. std::vector<CAMERA_LIST_STRUCT> m_vecCameraList;
  114. LONG LoadCameraList();
  115. public:
  116. std::vector<CAMERA_LIST_STRUCT> GetCameraList() {return m_vecCameraList;};
  117. #pragma endregion
  118. #pragma region ModuleList
  119. private:
  120. std::vector<MODULE_LIST_STRUCT> m_vecModuleList;
  121. LONG LoadModuleList();
  122. public:
  123. std::vector<MODULE_LIST_STRUCT> GetModuleList() { return m_vecModuleList; };
  124. LONG GetModuleByName(string strModuleName, MODULE_LIST_STRUCT& stModule);
  125. #pragma endregion
  126. private:
  127. std::vector<IO_CONFIG_STRUCT> m_vecIOConfig_Ejector;
  128. public:
  129. LONG GetIOEjectorConfig(std::vector<IO_CONFIG_STRUCT>& vecIOConfig);
  130. LONG SetIOEjectorConfig(std::vector<IO_CONFIG_STRUCT>* vecIOConfig);
  131. LONG GetIOEjectorConfig(const char* InteriorName, IO_CONFIG_STRUCT& stIOConfig);
  132. LONG SetIOEjectorConfig(const char* InteriorName, IO_CONFIG_STRUCT& stIOConfig);
  133. //LONG GetAxisBondHeadConfig(const char* InteriorName, AXIS_CONFIG_STRUCT& stAxisConfig);
  134. //LONG GetIOBondHeadConfig(const char* InteriorName, IO_CONFIG_STRUCT& stIOConfig);
  135. };
  136. }