/********************************************************************* *文件说明: 主要为产品支持料盘模式工作提供配置及运行时接口 *作者: logos *日期: 2013/10/26 *修改日志: 2013/10/26 CW0793 创建 -- update by logos in 2021/03/22 1. 增加料盘/矩阵运动模式 可设置通用类料盘 2. 对外提供配置接口,可自定义设置行列间距、数量、禁用状态等 3. 需要绑定轴ID使用,具体参考control.h提供的轴接口 4. 矩阵运行时数据由ops内部控制,外部仅可查看状态信息 5. 索引、行、列等计数都是从1开始 ***********************************************************************/ #pragma once #ifndef _DLL_INCLUDE_MATRIX_H #define _DLL_INCLUDE_MATRIX_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 #ifndef MAX_BUF_LEN #define MAX_BUF_LEN 256 #endif //最大支持同时阵列数量 #ifndef MAX_MATRIX #define MAX_MATRIX 20 #endif #ifndef ushort #define ushort unsigned short #endif struct TMatrix {//阵列/矩阵 循环工作盘 一行一行走 ushort mid; //ID ushort bEnable; //是否启用 ushort bSavePos; //退出时记住当前行列 ushort bRunSType; //是否走S型,0正常路线,1走S线 double startX; //起始位x(横向) double startY; //起始位y(纵向) char name[MAX_NAME_LEN]; //阵列描述 char col[MAX_BUF_LEN]; //列间距格式 如:20*5,30,31*2 标识有9列,首列为起始位,前6列等间距20,7列间距30,8-9列间距31 char row[MAX_BUF_LEN]; //行间距格式 如:20*4 标识5行,等间距20,首行为起始位 char off[MAX_BUF_LEN]; //需要屏蔽区域,按序号(先行后列)从1开始 如:1-4,6,10-15 标识禁用序号1-4,序号6,序号10-15 }; struct TMatrixInfo {//矩阵盘工作信息 -- 运行时 int col; //总列数 int row; //总行数 int count; //工作次数 = 总数量-禁用数量 int size; //总数量 = col*row }; struct TMatrixNode {//矩阵盘节点信息 int index; //索引 int col; //列 int row; //行 int boff; //是否被禁用 1禁用 0正常 double x; //col位置 double y; //row位置 }; /**************************************************** *Function: 设置一个矩阵工作盘 *Intput: mid 阵列索引 [1-20] pMatrix 矩阵工作盘基础数据 *Output: NULL *Return: 成功返回0,失败返回错误码 *PS: 可以清空pMatrix所有参数,即为删除工作盘 ******************************************************/ EXPORT_C int WINAPI set_matrix(int mid, TMatrix* pMatrix); /**************************************************** *Function: 获取一个矩阵工作盘信息 *Intput: mid 阵列索引 [1-20] pMatrix 矩阵工作盘基础数据 *Output: NULL *Return: 成功返回0,失败返回错误码 ******************************************************/ EXPORT_C int WINAPI get_matrix(int mid, TMatrix* pMatrix); /**************************************************** *Function: 禁用/启用一个矩阵工作盘中的节点 *Intput: mid 阵列索引 [1-20] index 工作盘中的节点索引 benable 0禁用 1启用 *Output: NULL *Return: 成功返回0,失败返回错误码 ******************************************************/ EXPORT_C int WINAPI enable_matrix_node(int mid, int index, int benable = 0); /**************************************************** *Function: 获取一个矩阵工作盘行列信息 *Intput: mid 阵列索引 [1-20] pInfo 矩阵工作盘信息 *Output: NULL *Return: 成功返回0,失败返回错误码 ******************************************************/ EXPORT_C int WINAPI get_matrix_info(int mid, TMatrixInfo* pInfo); /**************************************************** *Function: 获取一个矩阵工作盘当前运行节点 *Intput: mid 阵列索引 [1-20] pNode 矩阵工作盘节点信息 *Output: NULL *Return: 成功返回0,失败返回错误码 ******************************************************/ EXPORT_C int WINAPI get_matrix_cur_node(int mid, TMatrixNode* pNode); /**************************************************** *Function: 设置一个矩阵工作盘当前运行节点索引 *Intput: mid 阵列索引 [1-20] index 节点序号 从1开始 0标识重置工作盘 *Output: NULL *Return: 成功返回0,失败返回错误码 *PS: 可以指定被禁用点,但运行时会自动过滤 ******************************************************/ EXPORT_C int WINAPI set_matrix_cur_node(int mid, int index); /**************************************************** *Function: 获取一个矩阵工作盘节点信息 *Intput: mid 阵列索引 [1-20] index 节点序号 从1开始 不得超过总数 pNode 矩阵工作盘节点信息 *Output: NULL *Return: 成功返回0,失败返回错误码 ******************************************************/ EXPORT_C int WINAPI get_matrix_node(int mid, int index, TMatrixNode* pNode); /**************************************************** *Function: 利用三点矩阵更新一个工作盘所有位置信息 *Intput: mid 阵列索引 [1-20] x1 y1 起始点位置 x2 y2 列终点位置 x3 y3 行终点位置 *Output: NULL *Return: 成功返回0,失败返回错误码 *PS: 仅保存在内存,重启或调用set_matrix后,会恢复到工作盘默认位置 ******************************************************/ EXPORT_C int WINAPI update_matrix_pos(int mid, double x1, double y1, double x2, double y2, double x3, double y3); #endif //防止重复包含