|
|
|
|
#pragma once
|
|
|
|
|
#ifndef _INCLUDE_CARDSRV_GUGAO_H
|
|
|
|
|
#define _INCLUDE_CARDSRV_GUGAO_H
|
|
|
|
|
#include "sysapi.h"
|
|
|
|
|
#include "dtype.h"
|
|
|
|
|
|
|
|
|
|
#define MAXCARD 8 //<2F><><EFBFBD><EFBFBD>8<EFBFBD>ſ<EFBFBD>
|
|
|
|
|
#define MAXCRD 2 //ÿ<>ſ<EFBFBD><C5BF><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ
|
|
|
|
|
#define MAXAXIS 8
|
|
|
|
|
#define MAXIO 16
|
|
|
|
|
#define MAXAD 8
|
|
|
|
|
|
|
|
|
|
#define ins CardService::GetInstance()
|
|
|
|
|
|
|
|
|
|
class CCard;
|
|
|
|
|
class CardService
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
CardService(void);
|
|
|
|
|
~CardService(void);
|
|
|
|
|
|
|
|
|
|
static CardService* GetInstance();
|
|
|
|
|
static void ReleaseInstance();
|
|
|
|
|
|
|
|
|
|
int Init() { return 0; }
|
|
|
|
|
|
|
|
|
|
int OpenCard(ushort cardIndex);
|
|
|
|
|
int CloseCard(ushort cardIndex);
|
|
|
|
|
int GetStatus(ushort cardIndex);
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>˶<EFBFBD>
|
|
|
|
|
int AxisReset(ushort cardIndex, ushort axisIndex);
|
|
|
|
|
int AxisZeroPos(ushort cardIndex, ushort axisIndex); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
int AxisIsMoving(ushort cardIndex, ushort axisIndex); //1<>˶<EFBFBD><CBB6><EFBFBD> 0<><30><EFBFBD><EFBFBD>
|
|
|
|
|
int AxisStop(ushort cardIndex, ushort axisIndex, int stopType);
|
|
|
|
|
int AxisSetSpeed(ushort cardIndex, ushort axisIndex, double vel);
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1>ǰλ<C7B0><CEBB>
|
|
|
|
|
int AxisGetPos(ushort cardIndex, ushort axisIndex, EMPosType postype, double* pval);
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>λ<EFBFBD>ò<EFBFBD><C3B2>˶<EFBFBD>
|
|
|
|
|
int AxisSetPos(ushort cardIndex, ushort axisIndex, long pos);
|
|
|
|
|
//dir 0 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
int AxisMoveJog(ushort cardIndex, ushort axisIndex, int dir, double vel, double acc, double dec);
|
|
|
|
|
int AxisMovePos(ushort cardIndex, ushort axisIndex, long pos, double vel, double acc, double dec);
|
|
|
|
|
int AxisHome(ushort cardIndex, ushort axisIndex, ushort homeType, long pos, long offset, double vel);
|
|
|
|
|
int AxisMoveOffset(ushort cardIndex, ushort axisIndex, long offset, double vel, double acc, double dec);
|
|
|
|
|
|
|
|
|
|
//IO<49><4F><EFBFBD><EFBFBD>
|
|
|
|
|
int ReadBit(ushort cardIndex, ushort in_index, short di_type);
|
|
|
|
|
int ReadOutBit(ushort cardIndex, ushort out_index, short do_type);
|
|
|
|
|
int WriteOutBit(ushort cardIndex, ushort out_index, ushort val, short do_type);
|
|
|
|
|
|
|
|
|
|
//AD<41>ӿ<EFBFBD>
|
|
|
|
|
int ReadAdc(ushort cardIndex, ushort index, double* pVal);
|
|
|
|
|
int WriteAdc(ushort cardIndex, ushort index, double Val);
|
|
|
|
|
|
|
|
|
|
//<2F>岹<EFBFBD>˶<EFBFBD>
|
|
|
|
|
int CreateCrd(ushort cardIndex, ushort *pAxisIndex, ushort axisCnt);
|
|
|
|
|
int CloseCrd(int crdID);
|
|
|
|
|
int AddLinePos(int crdID, double *ppos, ushort nsize, double vel, double acc, double endvel);
|
|
|
|
|
int AddArcPos(int crdID, double *ppos1, double *ppos2, double *ppos3, ushort nsize, double vel, double acc, double endvel);
|
|
|
|
|
int CrdStartMove(int crdID);
|
|
|
|
|
int CrdStatus(int crdID, int *progress);
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ӿ<EFBFBD>
|
|
|
|
|
int SendCustomCommand(ushort cardIndex, const char* cmd, char* lpMsg);
|
|
|
|
|
int RecvCustomCommand(ushort cardIndex, const char* msg, char* res, int timeout);
|
|
|
|
|
int GetCommandDesc(char* pszcmddesc);
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
//<2F><>crdIDת<44><D7AA><EFBFBD><EFBFBD>index
|
|
|
|
|
int ConvertcrdIndex(ushort& cardIndex, int crd) { cardIndex = (ushort)crd / MAXCRD; return crd % MAXCRD; }
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
static CardService *m_pInstance;
|
|
|
|
|
|
|
|
|
|
CCard* m_pCard[MAXCARD]; //<2F><><EFBFBD>ƿ<EFBFBD>
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif //<2F><>ֹ<EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>
|