|
|
/*********************************************************************
|
|
|
*文件说明: 主要为产品支持料盘模式工作提供配置及运行时接口
|
|
|
*作者: 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 //防止重复包含
|