GrabBag/Device/GalaxyDevice/Inc/IGalaxyDevice.h

302 lines
8.4 KiB
C
Raw Permalink Normal View History

2025-12-10 00:01:32 +08:00
#ifndef IGALAXYDEVICE_H
#define IGALAXYDEVICE_H
#include <iostream>
#include <string>
#include <vector>
#include <functional>
// 设备信息结构
struct GalaxyDeviceInfo
{
std::string serialNumber; // 序列号
std::string modelName; // 型号名称
std::string displayName; // 显示名称
std::string ipAddress; // IP地址如果是网口相机
std::string macAddress; // MAC地址如果是网口相机
std::string deviceClass; // 设备类别USB/GigE等
unsigned int width; // 图像宽度
unsigned int height; // 图像高度
};
// 图像数据结构
struct GalaxyImageData
{
unsigned char* pData; // 图像数据指针
unsigned int width; // 图像宽度
unsigned int height; // 图像高度
unsigned int dataSize; // 数据大小
int pixelFormat; // 像素格式
unsigned long long frameID; // 帧ID
unsigned long long timestamp; // 时间戳
};
// ROI (Region of Interest) 结构
struct GalaxyROI
{
int offsetX; // X偏移
int offsetY; // Y偏移
int width; // ROI宽度
int height; // ROI高度
};
// 图像回调函数类型
using GalaxyImageCallback = std::function<void(const GalaxyImageData&)>;
/**
* @brief IGalaxyDevice
* Galaxy SDKC++
*/
class IGalaxyDevice
{
public:
virtual ~IGalaxyDevice() = default;
/**
* @brief
* @param ppDevice
* @return 0--
*/
static int CreateObject(IGalaxyDevice** ppDevice);
/**
* @brief SDK
* @return 0--
*/
virtual int InitSDK() = 0;
/**
* @brief SDK退
* @return 0--
*/
virtual int UninitSDK() = 0;
/**
* @brief SDK版本
* @param version SDK版本字符串
* @return 0--
*/
virtual int GetSDKVersion(std::string& version) = 0;
/**
* @brief Galaxy相机
* @param deviceList
* @param timeout 1000ms
* @return 0--
*/
virtual int EnumerateDevices(std::vector<GalaxyDeviceInfo>& deviceList, unsigned int timeout = 1000) = 0;
/**
* @brief
* @param serialNumber
* @return 0--
*/
virtual int OpenDevice(const std::string& serialNumber) = 0;
/**
* @brief
* @param index 0
* @return 0--
*/
virtual int OpenDeviceByIndex(unsigned int index) = 0;
/**
* @brief
* @return 0--
*/
virtual int CloseDevice() = 0;
/**
* @brief
* @return true-false-
*/
virtual bool IsDeviceOpen() = 0;
/**
* @brief
* @param deviceInfo
* @return 0--
*/
virtual int GetDeviceInfo(GalaxyDeviceInfo& deviceInfo) = 0;
/**
* @brief
* @param enable true-false-
* @return 0--
*/
virtual int SetTriggerMode(bool enable) = 0;
/**
* @brief
* @return 0--
*/
virtual int SendSoftTrigger() = 0;
/**
* @brief
* @return 0--
*/
virtual int StartAcquisition() = 0;
/**
* @brief
* @return 0--
*/
virtual int StopAcquisition() = 0;
/**
* @brief
* @return true-false-
*/
virtual bool IsAcquisitioning() = 0;
/**
* @brief
* @param image
* @param timeout 5000ms
* @return 0--
* @note
*/
virtual int CaptureImage(GalaxyImageData& image, unsigned int timeout = 5000) = 0;
/**
* @brief
* @param callback
* @return 0--
*/
virtual int RegisterImageCallback(GalaxyImageCallback callback) = 0;
/**
* @brief
* @return 0--
*/
virtual int UnregisterImageCallback() = 0;
/**
* @brief
* @param width
* @return 0--
*/
virtual int GetWidth(unsigned int& width) = 0;
/**
* @brief
* @param height
* @return 0--
*/
virtual int GetHeight(unsigned int& height) = 0;
/**
* @brief ROI
* @param roi ROI结构
* @return 0--
*/
virtual int SetROI(const GalaxyROI& roi) = 0;
/**
* @brief ROI
* @param roi ROI结构
* @return 0--
*/
virtual int GetROI(GalaxyROI& roi) = 0;
/**
* @brief
* @param exposureTime
* @return 0--
*/
virtual int SetExposureTime(double exposureTime) = 0;
/**
* @brief
* @param exposureTime
* @return 0--
*/
virtual int GetExposureTime(double& exposureTime) = 0;
/**
* @brief
* @param gain
* @return 0--
*/
virtual int SetGain(double gain) = 0;
/**
* @brief
* @param gain
* @return 0--
*/
virtual int GetGain(double& gain) = 0;
/**
* @brief
* @param frameRate fps
* @return 0--
*/
virtual int SetFrameRate(double frameRate) = 0;
/**
* @brief
* @param frameRate fps
* @return 0--
*/
virtual int GetFrameRate(double& frameRate) = 0;
/**
* @brief
* @param featureName
* @param value
* @return 0--
*/
virtual int SetIntFeature(const std::string& featureName, int64_t value) = 0;
/**
* @brief
* @param featureName
* @param value
* @return 0--
*/
virtual int GetIntFeature(const std::string& featureName, int64_t& value) = 0;
/**
* @brief
* @param featureName
* @param value
* @return 0--
*/
virtual int SetFloatFeature(const std::string& featureName, double value) = 0;
/**
* @brief
* @param featureName
* @param value
* @return 0--
*/
virtual int GetFloatFeature(const std::string& featureName, double& value) = 0;
/**
* @brief
* @param featureName
* @param value
* @return 0--
*/
virtual int SetEnumFeature(const std::string& featureName, int64_t value) = 0;
/**
* @brief
* @param featureName
* @param value
* @return 0--
*/
virtual int GetEnumFeature(const std::string& featureName, int64_t& value) = 0;
/**
* @brief
* @param featureName
* @return 0--
*/
virtual int ExecuteCommand(const std::string& featureName) = 0;
};
#endif // IGALAXYDEVICE_H