#ifndef __FOUR_DIMENSION_SDK_H__ #define __FOUR_DIMENSION_SDK_H__ #ifdef SW_SDK_LIBRARY_EXPORTS #define SW_SDK_LIBRARY_API __declspec(dllexport) #else #define SW_SDK_LIBRARY_API __declspec(dllimport) #endif /* * ModelType是一个枚举类型, 代表工作模式类型,其中, * @PULSE_C、@PULSE_P为单场景模式; * @TTL_S、@TTL_C为多场景模式。 */ enum ModelType { PULSE_C = 0, PULSE_P = 1, TTL_S = 2, TTL_C = 3 }; /* * TTL是一个枚举类型, 代表触发电平,其中, * @TTL_L为低电平触发,@TTL_H为高电平触发。 */ enum TTL { TTL_L = 0, TTL_H = 1 }; /* * DevInfo是一个结构体,用于保存光源设备信息,其中, * @UID为光源设备的唯一标识符,长度为6; * @address为光源设备的当前地址,范围为1~32; * @productModel为光源设备的型号; * @zoneSize为光源设备支持的分区数; * @colorSize为光源设备的颜色通道数。 */ struct DevInfo { int UID[6] = {0}; int address; char productModel[128] = {0}; int zoneSize; int colorSize; }; extern "C" { /* * init()方法主要用于连接端口,获取光源设备信息等; * @comNo为待连接的端口号,如“COM3”的3; * @devInfoNum为搜索到的设备数量; * @return返回一个DevInfo数组,数组大小为@devInfoNum,每个元素为一个DevInfo结构体实例; * 连接成功后,将花费数秒至数十秒搜索和读取光源设备的信息,耗时长短与光源设备数目有关。 * 不再使用DevInfo数组时,请自行释放资源。 */ SW_SDK_LIBRARY_API DevInfo* init(int comNo, int* devInfoNum); /* * changeAddr()方法用于修改光源设备的地址; * @UID为光源设备的唯一标识符,可以参考从init()获取的DevInfo数组,其中包含了搜索到的光源设备UID; * @addr为光源设备的新地址,范围为1~32; * 修改地址成功后,请自行更新DevInfo中光源的地址信息; * 请避免将不同类型光源置于同一地址,否则可能后续的setZoneAndColors()等对不同类型光源无效。 */ SW_SDK_LIBRARY_API bool changeAddr(int UID[6], int addr); /* * setZoneAndColors()方法用于显示当前的调光效果; * @zoneMode为分区方式; * @currentZone为当前的分区号,范围为1~DevInfo::zoneSize; * @brightness为当前的亮度值,范围为0~1024; * @colors为当前的颜色值,通道数可由DevInfo::colorSize获取,每个元素为0~1024的整数值; * @addr为该方法作用的光源设备地址,范围为1~32; * @delayMS为该方法发送报文后的间隔时间,单位为毫秒,可自行设置,推荐值10。 * 请依据具体的光源型号合理设置各参数。 */ SW_SDK_LIBRARY_API bool setZoneAndColors(int zoneMode, int currentZone, int brightness, int colors[], int addr, int delayMS); /* * saveScene()方法用于保存场景; * @modelType代表工作模式类型,可输入参数为ModelType::PULSE_C,ModelType::PULSE_P,ModelType::TTL_S或ModelType::TTL_C; * @ttl代表触发电平类型,可输入参数为TTL::TTL_L或TTL::TTL_H; * @addr为地址,范围1~32; * @sceneNo为该场景的序号,以1为起始,范围为1~@sceneSize,在TTL_S和TTL_C工作模式下该参数有效,在Pu-C和Pu-P工作模式下置1即可; * @sceneSize为场景的总数,最多支持8个场景,在TTL_S和TTL_C工作模式下该参数有效,在Pu-C和Pu-P工作模式下置1即可; * @onDur为亮灯持续时间,单位为微秒,范围为1~65535,在Pu-P,TTL_S和TTL_C工作模式下该参数有效,在Pu-C工作模式下置1即可; * @offDur为灭灯持续时间,单位为微秒,范围为0~65535,在TTL_S和TTL_C工作模式下该参数有效,在Pu-C和Pu-P工作模式下置0即可; * @delayMS为该方法发送报文后的间隔时间,单位为毫秒,可自行设置,推荐值100。 */ SW_SDK_LIBRARY_API bool saveScene(ModelType modelType, TTL ttl, int addr, int sceneNo, int sceneSize, int onDur, int offDur, int delayMS); /* * enterWorkModel()方法用于进入工作场景; * @modelType代表工作模式类型,可输入参数为ModelType::PULSE_C,ModelType::PULSE_P,ModelType::TTL_S或ModelType::TTL_C; * @addr为地址,范围1~32; * @delayMS为该方法发送报文后的间隔时间,单位为毫秒,可自行设置,推荐值20。 * 该方法通常在成功调用saveScene()之后调用; * 当处于TTL_C工作模式下再次调用enterWorkModel(ModelType::TTL_C, addr)时,将重置为从场景1开始执行,具体请见文档。 */ SW_SDK_LIBRARY_API bool enterWorkModel(ModelType modelType, int addr, int delayMS); /* * destroy()方法用于释放内部资源。 */ SW_SDK_LIBRARY_API void destroy(); } #endif