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.

82 lines
2.9 KiB
C

2 years ago
#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>