/********************************************************************* *文件说明: 插件列表管理,dll动态加载列表管理 *作者: logo *日期: 2018/11/27 *修改日志: 2018/11/27 cw4945 create ***********************************************************************/ #pragma once #ifndef _INCLUDE_DLL_MANAGE_H #define _INCLUDE_DLL_MANAGE_H #ifndef EXPORT_C #define EXPORT_C extern "C" #endif #ifndef WINAPI #define WINAPI __stdcall #endif #ifndef MAX_NAME_LEN #define MAX_NAME_LEN 32 #endif enum EMDllType {//dll类型 EDll_vision = 0, //视觉 EDll_motor, //运动卡-控制器 EDll_robot, //工站 }; struct TDllInfo {//dll信息 int dllid; //ID EMDllType type; //类型 char file[MAX_NAME_LEN]; //可以是相对路径 -- 不得超过32个字节 }; #define ERR_INVALID_CMD -801 //不支持的指令 /*********************************************** *Function: 初始化dll管理模块资源 *Intput: NULL *Output: NULL *Return: 成功返回0,失败返回错误码 ***********************************************/ EXPORT_C int WINAPI dllmgr_init(); /*********************************************** *Function: 释放dll管理模块资源 *Intput: NULL *Output: NULL *Return: 成功返回0,失败返回错误码 ***********************************************/ EXPORT_C int WINAPI dllmgr_deinit(); /*********************************************** *Function: 命令行模式,结果通过result返回 *Intput: pszcmd 命令行 result 返回消息 *Output: result 返回消息 *Return: 成功返回0,失败返回错误码 pszcmd 分为cmd+param cmd与param之间用空格隔开,各参数之间用逗号隔开 ***********************************************/ EXPORT_C int WINAPI dllmgr_command(const char* pszcmd, char* result = 0); /*********************************************** *Function: 获取所有卡dll列表 *Intput: plist dll列表 *Output: plist *Return: 返回dll数量,失败返回错误码<0 *PS: 先传NULL获取数量,再new内存获取信息 ***********************************************/ EXPORT_C int WINAPI get_motor_dll_list(TDllInfo* plist = 0); /*********************************************** *Function: 获取所有视觉dll列表 *Intput: plist dll列表 *Output: plist *Return: 返回dll数量,失败返回错误码<0 *PS: 先传NULL获取数量,再new内存获取信息 ***********************************************/ EXPORT_C int WINAPI get_vision_dll_list(TDllInfo* plist = 0); /*********************************************** *Function: 获取所有robot dll列表 *Intput: plist dll列表 *Output: plist *Return: 返回dll数量,失败返回错误码<0 *PS: 先传NULL获取数量,再new内存获取信息 ***********************************************/ EXPORT_C int WINAPI get_robot_dll_list(TDllInfo* plist = 0); /*********************************************** *Function: 增加一个dll到管理器 -- 不需要设置dllid *Intput: pdll dll信息 *Output: NULL *Return: 成功返回0,失败返回错误码 ***********************************************/ EXPORT_C int WINAPI add_dll_info(TDllInfo* pdll); /*********************************************** *Function: 修改一个dll列表信息 -- 根据dllid *Intput: pdll dll信息 *Output: NULL *Return: 成功返回0,失败返回错误码 ***********************************************/ EXPORT_C int WINAPI update_dll_info(TDllInfo* pdll); /*********************************************** *Function: 从列表删除一个dll *Intput: dllid 唯一标识符 *Output: NULL *Return: 成功返回0,失败返回错误码 ***********************************************/ EXPORT_C int WINAPI del_dll_info(int dllid); /*********************************************** *Function: 通过名称,获取dll信息 *Intput: dllid 唯一标识符 pdll dll信息 可以传NULL *Output: pdll dll信息 传指针可以获取信息 *Return: 成功返回0,失败返回错误码 ***********************************************/ EXPORT_C int WINAPI get_dll_info(int dllid, TDllInfo* pdll = 0); #endif //防止重复包含