CInterface.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. #pragma once
  2. #include <vector>
  3. #include <string>
  4. #ifdef INTERFACE_DLL
  5. #define INTERFACE_API __declspec(dllexport)
  6. #else
  7. #define INTERFACE_API
  8. #endif
  9. using namespace std;
  10. // 图像数据类型,指向内存中的图像二进制数据
  11. typedef unsigned char* ImageDataPtr;
  12. enum ImageFormat
  13. {
  14. GRAY8 = 0, // 灰度图,色值0~255 Format_Grayscale8
  15. RGB888, // 每个像素 24 位,顺序是 0xRRGGBB,没有 Alpha 通道 Format_RGB888
  16. ARGB8888, // 带有 Alpha 通道的 32 位像素格式,顺序是 0xAARRGGBB
  17. RGB32, // 每个像素 32 位,其中包含了 RGB 颜色信息,顺序通常是 0xAARRGGBB(最高字节为 Alpha 通道,但被忽略,因为 Alpha 通道总是视为 0xFF)
  18. YUV422, // YUV4:2:2
  19. };
  20. /**
  21. * @brief 存储图像信息的结构
  22. */
  23. typedef struct
  24. {
  25. int width; // 图像宽度
  26. int height; // 图像高度
  27. int channel; // 图像通道数
  28. ImageFormat format; // 图像格式
  29. ImageDataPtr data; // 图像数据
  30. }ImageInfo;
  31. typedef struct
  32. {
  33. int Lot; //批次号
  34. int PtIndex; //固晶点编号
  35. int Attribute; //0表示正常数据;1表示接手动允许数据;2表示跳过数据。其它无意义
  36. int X_Offset; //X方向偏差
  37. int X_RefMin; //X方向参考范围小值
  38. int X_RefMax; //X方向参考范围大值
  39. int Y_Offset; //Y方向偏差
  40. int Y_RefMin; //Y方向参考范围小值
  41. int Y_RefMax; //Y方向参考范围大值
  42. int Theta_Offset; //Theta方向偏差
  43. int Theta_RefMin; //Theta方向参考范围小值
  44. int Theta_RefMax; //Theta方向参考范围大值
  45. long Time; //加工时间
  46. } CPK_LIST_STRUCT;
  47. typedef struct _CONFIG_BASE_STRUCT
  48. {
  49. int iGroupId;
  50. string strName;
  51. string strDescribe;
  52. int iUserGradee;
  53. int iChangeFlag;
  54. string strValue;
  55. string strType;
  56. string strDefult;
  57. string strLowerLimit;
  58. string strUpperLimit;
  59. string strUnit;
  60. }CONFIG_BASE_STRUCT;
  61. class INTERFACE_API CInterface
  62. {
  63. public:
  64. /// <summary>
  65. /// 设置红光
  66. /// </summary>
  67. /// <param name="iCameraId">相机Id</param>
  68. /// <param name="LightValue">灯光值</param>
  69. /// <returns>成功返回0,否则返回错误码</returns>
  70. long SetRedLight(int iCameraId,int LightValue);
  71. /// <summary>
  72. /// 设置绿光
  73. /// </summary>
  74. /// <param name="LightValue">灯光值</param>
  75. /// <returns>成功返回0,否则返回错误码</returns>
  76. ///
  77. long SetGreenLight(int iCameraId, int LightValue);
  78. /// <summary>
  79. /// 设置蓝光
  80. /// </summary>
  81. /// <param name="iCameraId">相机Id</param>
  82. /// <param name="LightValue">灯光值</param>
  83. /// <returns>成功返回0,否则返回错误码</returns>
  84. long SetBlueLight(int iCameraId, int LightValue);
  85. /// <summary>
  86. /// 设置点光
  87. /// </summary>
  88. /// <param name="iCameraId">相机Id</param>
  89. /// <param name="LightValue">灯光值</param>
  90. /// <returns>成功返回0,否则返回错误码</returns>
  91. long SetPointLight(int iCameraId, int LightValue);
  92. /// <summary>
  93. /// 获取灯光值
  94. /// </summary>
  95. /// <param name="iCameraId">相机Id</param>
  96. /// <param name="redLightValue">红光。值为-1时,表示没有该灯</param>
  97. /// <param name="greenLightValue">绿光。值为-1时,表示没有该灯</param>
  98. /// <param name="blueLightValue">蓝光。值为-1时,表示没有该灯</param>
  99. /// <param name="pointLightValue">点光。值为-1时,表示没有该灯</param>
  100. /// <returns>成功返回0,否则返回错误码</returns>
  101. long GetLight(int iCameraId, int &redLightValue, int &greenLightValue, int &blueLightValue,int &pointLightValue);
  102. /// <summary>
  103. /// 获取相机图像。调用后会阻塞,直到有新的相机图像时才返回
  104. /// </summary>
  105. /// <param name="iCameraId">相机Id</param>
  106. /// <param name="image"></param>
  107. /// <returns>成功返回0,否则返回错误码</returns>
  108. long GrabImage(int iCameraId, ImageInfo& image);
  109. /// <summary>
  110. /// 获取CPK数据信息
  111. /// </summary>
  112. /// <param name="CpkList">CPK数据</param>
  113. /// <returns>成功返回0,否则返回错误码</returns>
  114. long GetCpkList(std::vector<CPK_LIST_STRUCT> &CpkList);
  115. /// <summary>
  116. /// 读取表中指定GroupId的配置信息
  117. /// </summary>
  118. /// <param name="iGroupId">组Id</param>
  119. /// <param name="strTableName">表名</param>
  120. /// <param name="vecConfig">返回的配置信息</param>
  121. /// <returns>成功返回0,否则返回错误码</returns>
  122. long LoadConfigDB(string strTableName, vector<int> iGroupId, vector<CONFIG_BASE_STRUCT>& vecConfig);
  123. /// <summary>
  124. /// 保存配置信息
  125. /// </summary>
  126. /// <param name="strTableName">表名</param>
  127. /// <param name="vecConfig">要保存的配置信息</param>
  128. /// <returns>成功返回0,否则返回错误码</returns>
  129. long SaveConfigDB(string strTableName, vector<CONFIG_BASE_STRUCT> vecConfig);
  130. };