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.
180 lines
8.3 KiB
C++
180 lines
8.3 KiB
C++
/*******************************************************************
|
|
*文件说明: 工站类接口文件
|
|
*作者: logos
|
|
*日期: 2013/11/11
|
|
*修改日志: 2013/11/11 TOD2214 创建
|
|
2015/12/25 CW0793 重构
|
|
***********************************************************************/
|
|
#pragma once
|
|
#ifndef _DLL_INCLUDE_IDEV_H
|
|
#define _DLL_INCLUDE_IDEV_H
|
|
#include "dtype.h"
|
|
|
|
enum EDevType
|
|
{//插件类型
|
|
EDCard = 0, //卡类插件
|
|
EDVision, //视觉类插件
|
|
EDStation, //工站类插件
|
|
};
|
|
|
|
class IDev
|
|
{//基础类插件接口
|
|
public:
|
|
virtual int getID() const = 0;
|
|
virtual int getType() const = 0;
|
|
virtual int getStatus() const = 0;
|
|
virtual const char* getName() const = 0;
|
|
virtual int init() = 0;
|
|
virtual int deinit() = 0;
|
|
virtual int sendMessage(const char* msg, char* res) = 0;
|
|
virtual int recvMessage(const char* msg, char* res, int timeout) = 0;
|
|
virtual int getCmdDesc(char* pszcmddesc) = 0;
|
|
};
|
|
|
|
//导出接口
|
|
EXPORT_C int WINAPI IDev_getID(void* p);
|
|
EXPORT_C int WINAPI IDev_getType(void* p);
|
|
EXPORT_C int WINAPI IDev_getStatus(void* p);
|
|
EXPORT_C int WINAPI IDev_init(void* p);
|
|
EXPORT_C int WINAPI IDev_deinit(void* p);
|
|
EXPORT_C int WINAPI IDev_sendMessage(void* p, const char* msg, char* res);
|
|
EXPORT_C int WINAPI IDev_recvMessage(void* p, const char* msg, char* res, int timeout);
|
|
|
|
class IVision : public IDev
|
|
{//视觉类插件接口
|
|
public:
|
|
virtual int process(int secne) = 0;
|
|
virtual int processImg(int secne, TVisionImage* pimg) = 0;
|
|
virtual int processImgPath(int secne, char* pszpath) = 0;
|
|
virtual int processRes(int secne, TVisionResult* pres, int timeout = -1) = 0;
|
|
};
|
|
|
|
//导出接口
|
|
EXPORT_C int WINAPI IVision_process(IVision* p, int secne);
|
|
EXPORT_C int WINAPI IVision_processImg(IVision* p, int secne, TVisionImage* pimg);
|
|
EXPORT_C int WINAPI IVision_processImgPath(IVision* p, int secne, char* pszpath);
|
|
EXPORT_C int WINAPI IVision_processRes(IVision* p, int secne, TVisionResult* pres, int timeout = -1);
|
|
|
|
class IStation : public IDev
|
|
{//工站类接口
|
|
public:
|
|
virtual double getVel() const = 0;
|
|
virtual double getAcc() const = 0;
|
|
virtual double getDec() const = 0;
|
|
virtual double getGlobalSpeed() = 0;
|
|
virtual int setGlobalSpeed(double setval) = 0;
|
|
virtual int setSpeed(double vel, double acc, double dec) = 0;
|
|
|
|
//示教
|
|
virtual int getPallet(int index, TPallet* plt) = 0;
|
|
virtual int setPallet(const TPallet* plt) = 0; //设置料盘,直接保存
|
|
virtual int setPoint(const TPoint* pt) = 0; //设置点数据 到内存 临时设置,不保存
|
|
virtual int savePoint(const TPoint* pt) = 0; //保存点到文件
|
|
virtual int teachPoint(int index, const char* pszname) = 0; //示教当前点
|
|
virtual int getPointByIndex(TPoint* pt, int index = 0) = 0; //0表示当前位置
|
|
virtual int getPointByName(TPoint* pt, const char* pszname) = 0;
|
|
virtual int getPointByPallet(TPoint* pt, int plt, int col, int row) = 0;
|
|
virtual int isNearPoint(int index, const TPoint* ptOffset = 0, double offset = 0.01) = 0; //判断当前是否处于某个点附近 1是 0不是
|
|
|
|
//单轴
|
|
virtual int axisCount() const = 0;
|
|
virtual int axisID(int ijoint) = 0;
|
|
virtual int axisReset(int ijoint) = 0; //*PS: 含停止功能,并等待停止完成
|
|
virtual int axisStop(int ijoint, int stoptype) = 0;
|
|
virtual int axisHome(int ijoint) = 0;
|
|
virtual int axisStatus(int ijoint) = 0;
|
|
virtual int axisRead(int ijoint, EIOType dio_type) = 0;
|
|
virtual int axisWrite(int ijoint, EIOType do_type, int val) = 0;
|
|
virtual int axisGetPos(int ijoint, double* pval, int posType = EMPos_Default) = 0;
|
|
virtual int axisMoveJog(int ijoint, int dir) = 0;
|
|
virtual int axisSetPos(int ijoint, double pos) = 0;
|
|
virtual int axisMovePos(int ijoint, double pos) = 0;
|
|
virtual int axisMoveOffset(int ijoint, double offset) = 0;
|
|
virtual int axisFindLimit(int ijoint, int blimitN, int blimitP) = 0;
|
|
|
|
//运动控制
|
|
virtual int home() = 0;
|
|
virtual int reset() = 0; //*PS: 重置限位状态,清除停止标识
|
|
virtual int stop(int itype = 0) = 0;
|
|
virtual int pause(int ipause = 1) = 0;
|
|
virtual int goToPos(const TPoint* ptPos) = 0;
|
|
virtual int goToPoint(int index, const TPoint* ptOffset = 0) = 0;
|
|
virtual int moveToPoint(int index, const TPoint* ptOffset = 0) = 0;
|
|
virtual int moveArc(int iMiddle, int iEnd, const TPoint* ptOffset = 0) = 0;
|
|
|
|
//连续插补
|
|
virtual int addLinePoint(int index, const TPoint* ptOffset = 0) = 0;
|
|
virtual int addArcPoint(int iMiddle, int iEnd, const TPoint* ptOffset = 0) = 0;
|
|
virtual int startcp() = 0;
|
|
};
|
|
|
|
//导出接口
|
|
EXPORT_C double WINAPI IStation_getVel(IStation* p);
|
|
EXPORT_C double WINAPI IStation_getAcc(IStation* p);
|
|
EXPORT_C double WINAPI IStation_getDec(IStation* p);
|
|
EXPORT_C double WINAPI IStation_getGlobalSpeed(IStation* p);
|
|
EXPORT_C int WINAPI IStation_setGlobalSpeed(IStation* p, double setval);
|
|
EXPORT_C int WINAPI IStation_setSpeed(IStation* p, double vel, double acc, double dec);
|
|
EXPORT_C int WINAPI IStation_getPallet(IStation* p, int index, TPallet* plt);
|
|
EXPORT_C int WINAPI IStation_setPallet(IStation* p, const TPallet* plt);
|
|
EXPORT_C int WINAPI IStation_setPoint(IStation* p, const TPoint* pt);
|
|
EXPORT_C int WINAPI IStation_savePoint(IStation* p, const TPoint* pt);
|
|
EXPORT_C int WINAPI IStation_teachPoint(IStation* p, int index, const char* pszname);
|
|
EXPORT_C int WINAPI IStation_getPointByIndex(IStation* p, TPoint* pt, int index = 0);
|
|
EXPORT_C int WINAPI IStation_getPointByName(IStation* p, TPoint* pt, const char* pszname);
|
|
EXPORT_C int WINAPI IStation_getPointByPallet(IStation* p, TPoint* pt, int plt, int col, int row);
|
|
EXPORT_C int WINAPI IStation_isNearPoint(IStation* p, int index, const TPoint* ptOffset = 0, double offset = 0.01);
|
|
|
|
EXPORT_C int WINAPI IStation_axisCount(IStation* p);
|
|
EXPORT_C int WINAPI IStation_axisID(IStation* p, int ijoint);
|
|
EXPORT_C int WINAPI IStation_axisReset(IStation* p, int ijoint);
|
|
EXPORT_C int WINAPI IStation_axisStop(IStation* p, int ijoint, int stoptype);
|
|
EXPORT_C int WINAPI IStation_axisHome(IStation* p, int ijoint);
|
|
EXPORT_C int WINAPI IStation_axisStatus(IStation* p, int ijoint);
|
|
EXPORT_C int WINAPI IStation_axisRead(IStation* p, int ijoint, EIOType dio_type);
|
|
EXPORT_C int WINAPI IStation_axisWrite(IStation* p, int ijoint, EIOType do_type, int val);
|
|
EXPORT_C int WINAPI IStation_axisGetPos(IStation* p, int ijoint, double* pval, int posType = EMPos_Default);
|
|
EXPORT_C int WINAPI IStation_axisMoveJog(IStation* p, int ijoint, int dir);
|
|
EXPORT_C int WINAPI IStation_axisSetPos(IStation* p, int ijoint, double pos);
|
|
EXPORT_C int WINAPI IStation_axisMovePos(IStation* p, int ijoint, double pos);
|
|
EXPORT_C int WINAPI IStation_axisMoveOffset(IStation* p, int ijoint, double offset);
|
|
EXPORT_C int WINAPI IStation_axisFindLimit(IStation* p, int ijoint, int blimitN, int blimitP);
|
|
|
|
EXPORT_C int WINAPI IStation_home(IStation* p);
|
|
EXPORT_C int WINAPI IStation_reset(IStation* p);
|
|
EXPORT_C int WINAPI IStation_stop(IStation* p, int itype = 0);
|
|
EXPORT_C int WINAPI IStation_pause(IStation* p, int ipause = 1);
|
|
EXPORT_C int WINAPI IStation_goToPos(IStation* p, const TPoint* ptPos);
|
|
EXPORT_C int WINAPI IStation_goToPoint(IStation* p, int index, const TPoint* ptOffset = 0);
|
|
EXPORT_C int WINAPI IStation_moveToPoint(IStation* p, int index, const TPoint* ptOffset = 0);
|
|
EXPORT_C int WINAPI IStation_moveArc(IStation* p, int iMiddle, int iEnd, const TPoint* ptOffset = 0);
|
|
EXPORT_C int WINAPI IStation_addLinePoint(IStation* p, int index, const TPoint* ptOffset = 0);
|
|
EXPORT_C int WINAPI IStation_addArcPoint(IStation* p, int iMiddle, int iEnd, const TPoint* ptOffset = 0);
|
|
EXPORT_C int WINAPI IStation_startcp(IStation* p);
|
|
|
|
/*********************************************
|
|
*Function: 获取卡对象操作接口
|
|
*Intput: pid 卡ID
|
|
*Output: NULL
|
|
*Return: 成功返回卡对象接口类,失败返回NULL
|
|
*********************************************/
|
|
EXPORT_C IDev* WINAPI get_icard(int cid);
|
|
|
|
/*********************************************
|
|
*Function: 获取视觉对象操作接口
|
|
*Intput: vid 视觉ID
|
|
*Output: NULL
|
|
*Return: 成功返回视觉对象接口类,失败返回NULL
|
|
*********************************************/
|
|
EXPORT_C IVision* WINAPI get_ivision(int vid);
|
|
|
|
/*********************************************
|
|
*Function: 获取工站对象操作接口
|
|
*Intput: tid 工站ID
|
|
*Output: NULL
|
|
*Return: 成功返回工站对象接口类,失败返回NULL
|
|
*********************************************/
|
|
EXPORT_C IStation* WINAPI get_istation(int tid);
|
|
|
|
|
|
#endif //防止重复包含
|