You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

155 lines
5.2 KiB
C

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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