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.

502 lines
18 KiB
C

2 years ago
/*********************************************************************
*<EFBFBD>ļ<EFBFBD>˵<EFBFBD><EFBFBD>: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: logos
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 2017/02/07
*<EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD>־: 2017/02/07 CW4945 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
***********************************************************************/
#pragma once
#ifndef _INCLUDE_DTYPE_H_
#define _INCLUDE_DTYPE_H_
#ifndef EXPORT_C
#define EXPORT_C extern "C"
#endif
#ifndef WINAPI
#define WINAPI __stdcall
#endif
#ifndef ushort
#define ushort unsigned short
#endif
#ifndef MAX_ID_LEN
#define MAX_ID_LEN 16
#endif
#ifndef MAX_NAME_LEN
#define MAX_NAME_LEN 32
#endif
#ifndef MAX_BUF_LEN
#define MAX_BUF_LEN 256
#endif
#ifndef PARAM_CNT
#define PARAM_CNT 8
#endif
#ifndef RES_CNT
#define RES_CNT 16
#endif
struct TParam
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9> -- <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
char data[PARAM_CNT][MAX_NAME_LEN]; //<2F><><EFBFBD><EFBFBD>
};
enum EDevStatus
{//<2F><><EFBFBD><EFBFBD>״̬
EDev_NOINIT = 0, //δ<><CEB4>ʼ<EFBFBD><CABC>
EDev_ERROR, //<2F>
EDev_IDLE, //<2F><><EFBFBD><EFBFBD>
};
enum EMoveStatus
{//<2F>˶<EFBFBD>״̬
EMove_NOHOME = 3, //δ<><CEB4>ԭ
EMove_STOP, //ֹͣ״̬ -- <20>쳣ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>λֹͣ
EMove_ISMOVING, //<2F>˶<EFBFBD><CBB6><EFBFBD>
EMove_ISHOME, //<2F><>ԭ<EFBFBD><D4AD>
EMove_PAUSE, //<2F><>ͣ
EMove_PAUSING, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ
EMove_STOPING, //<2F><><EFBFBD><EFBFBD>ֹͣ
};
enum EIOType
{//IO<49><4F><EFBFBD><EFBFBD>
IOT_COMIN = 0, //ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IOT_COMOUT, //ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IOT_LIMITP, //<2F><><EFBFBD><EFBFBD>λ
IOT_LIMITN, //<2F><><EFBFBD><EFBFBD>λ
IOT_ALARM, //<2F><><EFBFBD><EFBFBD>
IOT_HOME, //ԭ<><D4AD>
IOT_SEVON, //ʹ<><CAB9>
IOT_CLEARALARM, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
enum EMPosType
{//<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EMPos_Default = -1, //Ĭ<><C4AC>λ<EFBFBD><CEBB> <20>ŷ<EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-<2D><EFBFBD><E6BBAE>
EMPos_Encoder, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
EMPos_Profile, //<2F><EFBFBD><E6BBAE>λ<EFBFBD><CEBB>
};
struct TDevInfo
{//Ӳ<><D3B2><EFBFBD><EFBFBD>Ϣ
char id[MAX_ID_LEN]; //Ӳ<><D3B2>id<69><64><EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><C3B3><EFBFBD>16λ
char desc[MAX_NAME_LEN]; //Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TParam homep; //<2F><>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TParam param; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ushort paramCnt; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ushort homeCnt; //<2F><>ԭ<EFBFBD><D4AD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>homep <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
ushort axisCnt; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> motor-<2D><><><D7A8>IO<49><4F><EFBFBD><EFBFBD>
ushort ioCnt; //io-ͨ<><CDA8>IOλ<4F><CEBB>
ushort adCnt; //ad-ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ushort reserved[3]; //<2F><>֤8λ<38><CEBB><EFBFBD><EFBFBD>
};
struct TSpeed
{//<2F>ٶȽṹ
double vel;
double acc;
double dec;
};
struct TVisionDevInfo
{//<2F>Ӿ<EFBFBD><D3BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
char id[MAX_ID_LEN]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>id -- <20><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD>ʶ<EFBFBD><CAB6>,<2C><><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>
char desc[MAX_NAME_LEN]; //Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TParam param; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ushort paramCnt; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ushort reserved[3]; //<2F><>֤8λ<38><CEBB><EFBFBD><EFBFBD>
};
struct TVisionResult
{//<2F>Ӿ<EFBFBD><D3BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>
int res; //<2F><><EFBFBD><EFBFBD> 0 - ok
int resCnt; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double val[RES_CNT]; //<2F><><EFBFBD><EFBFBD>
};
struct TVisionImage
{//<2F>Ӿ<EFBFBD>ͼ<EFBFBD><CDBC>
ushort width; //ͼ<><CDBC><EFBFBD><EFBFBD>
ushort heigh; //ͼ<><CDBC><EFBFBD><EFBFBD>
ushort channel; //ͼ<><CDBC>ͨ<EFBFBD><CDA8><31><CDA8><33><CDA8>(<28><>ɫ)
ushort rowbytes; //ÿ<><C3BF>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
char* pdata; //<2F><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
};
#define DEFAULTPOS 10000 //Ĭ<><C4AC>λ<EFBFBD><CEBB> -- <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+<2B><><EFBFBD><EFBFBD>
#define MAX_AXIS_CNT 6 //<2F><>վ<EFBFBD><D5BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define MAX_TOOL_CNT 10 //Tool<6F><6C><EFBFBD><EFBFBD>
#define MAX_PALLET_CNT 50 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define MAX_POINT_CNT 200 //<2F><>վ<EFBFBD><D5BE>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
#define PAGE_AD_CNT 8 //ÿҳADͨ<44><CDA8><EFBFBD><EFBFBD>
#define PAGE_IO_CNT 16 //ÿҳIO<49><4F><EFBFBD><EFBFBD>
#define PAGE_AXIS_CNT 8 //ÿҳAxis<69><73><EFBFBD><EFBFBD>
#define NEWDEVCNT 10 //ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٸ<EFBFBD><D9B8><EFBFBD><EFBFBD><EFBFBD>
enum EMIOVAL
{//IO<49><4F><EFBFBD><EFBFBD>
IOFF = 0, //<2F>ر<EFBFBD>
ION, //<2F><><EFBFBD><EFBFBD>
};
enum EMDir
{//<2F>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>
DirN = 0, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DirP, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
enum EMIOSYSType
{//ϵͳIO<49><4F><EFBFBD><EFBFBD>
IOS_Normal = 0, //<2F><>ͨIO
IOS_START, //<2F><><EFBFBD><EFBFBD>
IOS_RESET, //<2F><>λ
IOS_ESTOP, //<2F><>ͣ
IOS_PAUSE, //<2F><>ͣ
IOS_STOP, //ֹͣ
IOS_BRAKE, //ɲ<><C9B2>
};
enum EMAxisType
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EAXIS_SERVO = 0, //<2F>ŷ<EFBFBD>
EAXIS_STEPPER, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EAXIS_FLOW, //<2F><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> - <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ԭ
EAXIS_ABSSERVO, //<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>ԭ
};
enum EMAxisDir
{//<2F><EFBFBD><E1B7BD>
EAXIS_X = 0, //<2F><><EFBFBD><EFBFBD>
EAXIS_Y, //<2F><><EFBFBD><EFBFBD>
EAXIS_Z, //<2F><><EFBFBD><EFBFBD>
EAXIS_U, //ƽ<><C6BD><EFBFBD><EFBFBD>ת
EAXIS_V, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
EAXIS_W, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
};
enum EMHomeType
{//<2F><>ԭ<EFBFBD><D4AD>ʽ
EHOME_LIMITN = 0, //<2F>Ȼظ<C8BB><D8B8><EFBFBD>λ
EHOME_LIMITP, //<2F>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD>λ
EHOME_HOMEP, //<2F><>ԭ<EFBFBD><D4AD><EFBFBD>پ<EFBFBD>ȷ<EFBFBD><C8B7>ԭ
EHOME_IOHOME, //IO<49><4F><EFBFBD>ƻ<EFBFBD>ԭ
EHOME_GOHOME, //ֱ<>Ӿ<EFBFBD>ȷ<EFBFBD><C8B7>ԭ
EHOME_NOHOME, //<2F><><EFBFBD><EFBFBD>ԭ,ֱ<><D6B1><EFBFBD>Ե<EFBFBD>ǰλ<C7B0><CEBB>Ϊԭ<CEAA><D4AD>
};
struct TCard
{//<2F><><EFBFBD>ƿ<EFBFBD>
char name[MAX_NAME_LEN]; //<2F><><EFBFBD><EFBFBD>
char dev[MAX_ID_LEN]; //Ӳ<><D3B2>ID
TParam param; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int cid; //<2F><>ID
ushort axisCnt; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> motor-<2D><><><D7A8>IO<49><4F><EFBFBD><EFBFBD>
ushort ioCnt; //io-ͨ<><CDA8>IOλ<4F><CEBB>
ushort adCnt; //ad-ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ushort reserved[3]; //<2F><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><38><CEBB><EFBFBD><EFBFBD>
};
struct TVision
{//<2F>Ӿ<EFBFBD>
char name[MAX_NAME_LEN]; //<2F><><EFBFBD><EFBFBD>
char dev[MAX_ID_LEN]; //<2F><><EFBFBD><EFBFBD>ID
TParam param; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int vid; //<2F>Ӿ<EFBFBD>ID
int reserved; //<2F><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><38><CEBB><EFBFBD><EFBFBD>
};
struct TStation
{//<2F><>վ
char name[MAX_NAME_LEN]; //<2F><><EFBFBD><EFBFBD>
int axis[MAX_AXIS_CNT]; //<2F><>ID
int tid; //<2F><>վID
ushort axisCnt; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ushort reserved;
};
struct TAxisParam
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
char name[MAX_NAME_LEN]; //<2F><><EFBFBD><EFBFBD>
char outIO[MAX_NAME_LEN]; //<2F><>ԭIO or ɲ<><C9B2>IO
int axis; //<2F><>ID
int cid; //<2F><>ID
int index; //<2F>ڵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int homeIndex; //<2F><>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ο<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>صĻ<D8B5>ԭ<EFBFBD><D4AD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD> -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD>ʾ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>ԭ
int bDirNeg; //<2F><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><31><C8A1> 0<><30>ȡ<EFBFBD><C8A1>
EMAxisDir dir; //0==x 1==y 2==z 3==u 4==v 5==w
EMAxisType motorType; //<2F>ο<EFBFBD> 0<>ŷ<EFBFBD>, 1<><31><EFBFBD><EFBFBD> 2<><32>ˮ<EFBFBD><CBAE> 3<><33><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EMHomeType homeType; //<2F><>ԭ<EFBFBD><D4AD>ʽ 0<><30><EFBFBD><EFBFBD>λ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ 2<><32>ԭ<EFBFBD><D4AD> 3IO<49><4F><EFBFBD>ƻ<EFBFBD>ԭ 4ֱ<34>ӻ<EFBFBD><D3BB><EFBFBD><35>ӻ<EFBFBD><D3BB><EFBFBD> 6<><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int homePos; //ԭ<><D4AD>λ<EFBFBD><CEBB>+<2B><><EFBFBD><EFBFBD> <20><>λ<EFBFBD><CEBB>mm
int limitN; //<2F><><EFBFBD><EFBFBD>λλ<CEBB><CEBB>+<2B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ <20><>λ<EFBFBD><CEBB>mm
int limitP; //<2F><><EFBFBD><EFBFBD>λλ<CEBB><CEBB>+<2B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ <20><>λ<EFBFBD><CEBB>mm
int highHomePos; //<2F><><EFBFBD>ٻ<EFBFBD>ԭλ<D4AD><CEBB> <20><>λ<EFBFBD><CEBB>mm Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD><C3B8>ٻ<EFBFBD>ԭ
int iAfterhomeOffset; //<2F><>ԭ<EFBFBD><D4AD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD> <20><>λ<EFBFBD><CEBB>mm
int arriveOffset; //<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> <20><>λ<EFBFBD><CEBB>um 0<><30>ʾ<EFBFBD><CABE>Ч <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6BBAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEA3AC>λ<EFBFBD><CEBB><EFBFBD>Ž<EFBFBD><C5BD><EFBFBD><EFBFBD>˶<EFBFBD>
double limitvel; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ٶ<EFBFBD> mm/s
double homeVel; //<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD>ٶ<EFBFBD> mm/s
double maxVel; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD> mm/s
double maxAcc; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD> mm/s^2
double maxDec; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD> mm/s^2
double stepvalue; //1mm<6D><6D>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
struct TAdParam
{//ad<61><64><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ad = readAD * ratio + offset
char name[MAX_NAME_LEN]; //<2F><><EFBFBD><EFBFBD>
double ratio; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>
double offset; //<2F><><EFBFBD><EFBFBD>ֵ
int aid; //ID
int cid; //<2F><>ID
int index; //<2F><><EFBFBD><EFBFBD>
int reserved; //<2F><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><38><CEBB><EFBFBD><EFBFBD>
};
typedef struct IOConfig
{//io<69><6F><EFBFBD><EFBFBD>
char name[MAX_NAME_LEN]; //<2F><><EFBFBD><EFBFBD>
int iid; //ID
int cid; //<2F><>ID
int index; //<2F><><EFBFBD><EFBFBD>
int sense; //<2F>Ƿ<EFBFBD>ȡ<EFBFBD><C8A1><30><C8A1> 1<><31>ȡ<EFBFBD><C8A1>
EIOType type; //<2F>ο<EFBFBD> EIOType ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> <20><>λ/ԭ<><D4AD><EFBFBD><EFBFBD>
EMIOSYSType ios; //<2F>ο<EFBFBD> EMIOSYSType ϵͳ<CFB5><CDB3><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD>ʼ<EFBFBD><CABC>ֹͣ<CDA3><D6B9><EFBFBD>ȵ<EFBFBD>
} TIoParam;
struct TPallet
{//<2F><><EFBFBD><EFBFBD>
char name[MAX_NAME_LEN]; //<2F><><EFBFBD><EFBFBD>
ushort index; //<2F><><EFBFBD><EFBFBD>
ushort start; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ushort ptCol; //<2F><><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
ushort ptRow; //<2F><><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
ushort col; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ushort row; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
struct TPoint
{//<2F><>λ
int index; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int itool; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λʱʹ<CAB1>õ<EFBFBD>tool[0,10]
char name[MAX_NAME_LEN]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double val[MAX_AXIS_CNT]; //<2F>ֱ<EFBFBD>Ϊx,y,z,u,v,w<><77><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
};
struct TControlCfg
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int bPrintLog; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ӡ<EFBFBD><D3A1>־
int bSendSysMsg; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3>Ϣ <20>磺reset / pause
int bHomeClearPos; //<2F><>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
int bChkPtChange; //<2F><><EFBFBD>ӵ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD>ݱ䶯 -- <20>ܿ<EFBFBD><DCBF><EFBFBD>
int chkOffsetShow; //<2F><>λ<EFBFBD>޸<EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6>ٵ<EFBFBD><D9B5><EFBFBD><EFBFBD><EFBFBD>ʾ 0<><30>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λmm [0,50]
int movePrecision; //<2F>˶<EFBFBD><CBB6><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD>ǰλ<C7B0><CEBB><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD> <20><>λum [1,1000]
int bRecordPos; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD>¼<EFBFBD>ϴ<EFBFBD><CFB4>˳<EFBFBD>ʱ<EFBFBD><CAB1>λ<EFBFBD><CEBB> 1<><31>¼<EFBFBD><C2BC>0<EFBFBD><30><EFBFBD><EFBFBD>¼ <20><>¼ʱ<C2BC><CAB1><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2>û<EFBFBD>ԭ
int bSafeChk; //<2F><>ȫ<EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD> -- <20>ܿ<EFBFBD><DCBF><EFBFBD> <20>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>ֵʱ<D6B5><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>
int safeSpdOffset; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>[10,1000],<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>100<30><30><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD>,<2C><>50<35><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>150ʱ<30><CAB1><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
int bSaveTxt; //<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ񱣴<C7B7>λ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>ʽ -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
int bArcPause; //Բ<><D4B2><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ 0<><30><EFBFBD><EFBFBD>ͣ
int interval; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λ<EFBFBD><CEBB>ms <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[0,100]
};
enum Control_ErrCode
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ERR_NO_SUPPORT = -900, //<2F>ù<EFBFBD><C3B9>ܲ<EFBFBD>֧<EFBFBD><D6A7>
ERR_NO_SERVICE, //<2F><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>
ERR_NO_DEV, //δ<>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD>
ERR_NDEV_COUNT, //<2F><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ERR_HOME_BREAK, //<2F><>ԭ<EFBFBD><D4AD><EFBFBD>ж<EFBFBD>
ERR_MOVE_BREAK, //<2F>˶<EFBFBD><CBB6><EFBFBD><EFBFBD>ж<EFBFBD>
ERR_NO_HOME, //δ<><CEB4>ԭ
ERR_LOAD_CFG, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><CAA7>
ERR_OCCUPY_AXIS, //<2F>ռ<E1B1BB><D5BC>
ERR_IO_TYPE, //IO<49><4F><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD>
ERR_AXIS_HOME, //<2F><><EFBFBD><EFBFBD>ԭʧ<D4AD><CAA7>
ERR_IS_MOVING, //<2F><><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD>
ERR_NO_SERVO, //δʹ<CEB4><CAB9>
ERR_SET_CRD, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵʧ<CFB5><CAA7>
ERR_SAFE_CHK, //<2F><>ȫ<EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
ERR_NO_HOMEP, //<2F><>ԭ<EFBFBD><D4AD><EFBFBD>ź<EFBFBD>
ERR_NO_LIMITN, //<2F>޸<EFBFBD><DEB8><EFBFBD>λ<EFBFBD>ź<EFBFBD>
ERR_NO_LIMITP, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ź<EFBFBD>
ERR_IN_LIMITN, //<2F>ڸ<EFBFBD><DAB8><EFBFBD>λ
ERR_IN_LIMITP, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
ERR_VISION_IMG, //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
ERR_VISION_GR, //<2F>Ӿ<EFBFBD><D3BE><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
};
/*ģ<><C4A3><EFBFBD><EFBFBD>򵥵İ<F2B5A5B5>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>
1. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊֱ<EFBFBD>ߵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܲ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>a+b<offsetʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>a+b>offset(mm)ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>offset <EFBFBD><EFBFBD>offset-50ʱ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>ٵ<EFBFBD>50%<EFBFBD><EFBFBD>>offsetʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ
2. λ<EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Z<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Z<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD>ȫ<EFBFBD>߶ȣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>
<EFBFBD><EFBFBD>ȻҲ<EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׵<EFBFBD><EFBFBD><EFBFBD>λ
a. <EFBFBD><EFBFBD>pid2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λIO
b. <EFBFBD><EFBFBD>judge<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ ESafeJ_Equal
c. <EFBFBD><EFBFBD>safeval<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 1.0 -- <EFBFBD><EFBFBD>=1
d. <EFBFBD><EFBFBD>pid1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊij<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
e. <EFBFBD><EFBFBD>type<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪESafe_VALUE
f. <EFBFBD><EFBFBD>dir1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ2 -- <EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>value(pid2)==1ʱ <EFBFBD><EFBFBD>(pid1)<EFBFBD><EFBFBD><EFBFBD>޷<EFBFBD><EFBFBD>˶<EFBFBD>.
3. <EFBFBD><EFBFBD>Ҫʵ<EFBFBD>ָ<EFBFBD><EFBFBD>ӵİ<EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FunSafeCallBack
*/
enum ESafeChk
{//<2F><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>ģʽ
ESafe_DISTANCE = 0, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -- <20><><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣬ͨ<E2A3AC><CDA8>Ϊpos(1)+pos(2) < or > val(mm)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>or<6F><72>ͣ
ESafe_VALUE, //λ<>ü<EFBFBD><C3BC><EFBFBD> -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO, Ŀ<><C4BF>ֵ<= or >= valʱ<6C><CAB1><EFBFBD><EFBFBD>
};
enum ESafeJudge
{//<2F><>ȫ<EFBFBD>ж<EFBFBD>ģʽ
ESafeJ_Equal = 0, //<2F><><EFBFBD><EFBFBD>ij<EFBFBD><C4B3>ֵ
ESafeJ_Less, //С<><D0A1>ij<EFBFBD><C4B3>ֵ
ESafeJ_Greater, //<2F><><EFBFBD><EFBFBD>ij<EFBFBD><C4B3>ֵ
};
struct TSafeCfg
{//<2F>˶<EFBFBD><CBB6><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>
int sid; //<2F><><EFBFBD><EFBFBD>ID
int pid; //<2F><>ID<49><44>IO ESafe_VALUEʱ,<2C><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>
int dir; //pid <20><><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD> DirN-0 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DirP-1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2-<2D><><EFBFBD>߶<EFBFBD><DFB6><EFBFBD><EFBFBD><EFBFBD>
int pid2; //<2F><>ID<49><44>IO ESafe_VALUEʱ,<2C><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;ESafe_DISTANCEʱ,pid<69><64>pid2<64><32>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>
ESafeChk type; //<2F><><EFBFBD><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><>ü<EFBFBD><C3BC><EFBFBD>
ESafeJudge judge; //<2F>ж<EFBFBD>ģʽ
int safeval; //<2F><>ȫֵ -- <20><><EFBFBD><EFBFBD>
int bhomechk; //<2F><>ԭʱ<D4AD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD> 1<><31><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
char desc[MAX_NAME_LEN]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
};
struct TLicenseInfo
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
int dyn; //8λ<38><CEBB>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int perdate; //<2F><>Ч<EFBFBD><D0A7> 20181212 0<><30>ʶ<EFBFBD><CAB6>Ч
char hd[MAX_NAME_LEN];
char cpu[MAX_NAME_LEN];
char mac[MAX_NAME_LEN];
char sn[MAX_BUF_LEN]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
struct TDevMap
{//ӳ<><D3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int pid; //pid <20><>/IO/AD/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>Ӿ<EFBFBD><D3BE><EFBFBD><EFBFBD><EFBFBD>
char var[MAX_NAME_LEN]; //<2F><><EFBFBD><EFBFBD> <20><EFBFBD><E6B4A2>״̬/IOֵ/ADֵ<44><D6B5><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>Ӿ<EFBFBD>״̬
};
#pragma region callback
//<2F><>ȫ<EFBFBD><C8AB><EFBFBD>ӿڻص<DABB>
//pid <20><>ID<49><44>IO
//curval <20><>ǰλ<C7B0><CEBB> <20>ɱ<EFBFBD>ʶaxis/ioλ<6F><CEBB>
//val Ŀ<><C4BF>λ<EFBFBD><CEBB> <20><>ʾ<EFBFBD>˶<EFBFBD>Ŀ<EFBFBD><C4BF>λ<EFBFBD><CEBB>(mm) IO<49><4F>ʾ<EFBFBD><CABE><EFBFBD>׿<EFBFBD><D7BF><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>ź<EFBFBD>
//bhome <20><>IDʱ1<CAB1><31>ʾ<EFBFBD><CABE>ԭ<EFBFBD><D4AD>0<EFBFBD><30>ʾ<EFBFBD><CABE><EFBFBD>ǻ<EFBFBD>ԭ<EFBFBD><D4AD>IO<49><4F><EFBFBD><EFBFBD>ʱ<EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ <20><><EFBFBD><EFBFBD>1<EFBFBD><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>,<2C><><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD> <20><><EFBFBD><EFBFBD>0<EFBFBD><30>ʾ<EFBFBD><CABE><EFBFBD>ⲻͨ<E2B2BB><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>control<6F><6C><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>/IO<49><4F><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6>ӿ<EFBFBD>
typedef int (WINAPI *FunSafeCallBack)(int pid, int curval, int val, int bhome);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڻص<DABB> -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ <20><><EFBFBD><EFBFBD>C#ע<><D7A2><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//fun <20>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD>
//cid <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD>˴Ӳ<CBB4><D3B2><EFBFBD>ʱΪ0
/*---<2D>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>---
int get_command_desc(char* pszcmddesc) -- <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD>ֵ<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int init_devs(ushort index, const char* ctx) -- <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>һ<EFBFBD>ſ<EFBFBD>
int uninit_dev(ushort index) -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>һ<EFBFBD>ſ<EFBFBD>
int get_status(ushort index) -- <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>״̬
int send_custom_msg(ushort index, const char* msg, char* res) -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
int recv_custom_msg(ushort index, const char* msg, char* res, int timeout) -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
int axis_reset(ushort cindex, ushort axisIndex) -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int axis_zero_pos(ushort cindex, ushort axisIndex) -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
... <EFBFBD>ο<EFBFBD>motor.h
axis_home axis_is_moving axis_set_speed axis_set_pos axis_stop axis_move_jog
axis_move_pos axis_move_offset axis_read axis_write axis_get_pos
create_crd add_line_pos add_arc_pos add_line add_arc
crd_move crd_is_moving close_crd
read_in read_out write_out
read_ad write_ad
-----<EFBFBD>ӿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>---*/
//pszparam <20><><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ĸ<EFBFBD><C4B8>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>","<22><><EFBFBD><EFBFBD>
//pszres <20><><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ,<2C><><EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>ָ<EFBFBD>뵽Ӧ<EBB5BD>ò<EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>","<22><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30>ʧ<EFBFBD>ܷ<EFBFBD><DCB7>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ο<EFBFBD> dev.h motor.h
typedef int (WINAPI *DevCallBack)(const char* fun, ushort cid, const char* pszparam/* = 0*/, char* pszres/* = 0*/);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD>
typedef int (WINAPI *fun_init)(ushort index, const char* ctx);
typedef int (WINAPI *fun_deinit)(ushort index);
typedef int (WINAPI *fun_get_status)(ushort index);
typedef int (WINAPI *fun_get_cmd_info)(char* pszcmddesc);
typedef int (WINAPI *fun_send_msg)(ushort index, const char* msg, char* res);
typedef int (WINAPI *fun_recv_msg)(ushort index, const char* msg, char* res, int timeout);
//<2F><><EFBFBD>ƿ<EFBFBD><C6BF>ײ<EFBFBD><D7B2>̳<EFBFBD><CCB3><EFBFBD><EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD> -- <20><><EFBFBD>ӿ<EFBFBD>
typedef int (WINAPI *fun_axis_reset)(ushort index, ushort axisIndex);
typedef int (WINAPI *fun_axis_home)(ushort index, ushort axisIndex, ushort homeType, double pos, double offset, double vel);
typedef int (WINAPI *fun_axis_zero_pos)(ushort index, ushort axisIndex);
typedef int (WINAPI *fun_axis_is_moving)(ushort index, ushort axisIndex);
typedef int (WINAPI *fun_axis_set_speed)(ushort index, ushort axisIndex, double vel, double acc, double dec);
typedef int (WINAPI *fun_axis_set_pos)(ushort index, ushort axisIndex, double pos);
typedef int (WINAPI *fun_axis_stop)(ushort index, ushort axisIndex, int type);
typedef int (WINAPI *fun_axis_move_pos)(ushort index, ushort axisIndex, double pos, double vel, double acc, double dec);
typedef int (WINAPI *fun_axis_move_offset)(ushort index, ushort axisIndex, double offset, double vel, double acc, double dec);
typedef int (WINAPI *fun_axis_move_jog)(ushort index, ushort axisIndex, int dir, double vel, double acc, double dec);
typedef int (WINAPI *fun_axis_read)(ushort index, ushort axisIndex, int dio_type);
typedef int (WINAPI *fun_axis_write)(ushort index, ushort axisIndex, ushort val, int do_type);
typedef int (WINAPI *fun_axis_get_pos)(ushort index, ushort axisIndex, int postype, double *pval);
typedef int (WINAPI *fun_create_crd)(ushort index, ushort *pAxisIndex, ushort nsize);
typedef int (WINAPI *fun_add_line_pos)(int crd, double *ppos, ushort nsize, double vel, double acc, double endvel);
typedef int (WINAPI *fun_add_arc_pos)(int crd, double *ppos1, double *ppos2, double *ppos3, ushort nsize, double vel, double acc, double endvel);
typedef int (WINAPI *fun_crd_move)(int crd);
typedef int (WINAPI *fun_crd_is_moving)(int crd, int *progress);
typedef int (WINAPI *fun_close_crd)(int crd);
//<2F><><EFBFBD>ƿ<EFBFBD><C6BF>ײ<EFBFBD><D7B2>̳<EFBFBD><CCB3><EFBFBD><EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD> -- IO<49>ӿ<EFBFBD>
typedef int (WINAPI *fun_read_in)(ushort index, ushort in_index);
typedef int (WINAPI *fun_read_out)(ushort index, ushort out_index);
typedef int (WINAPI *fun_write_out)(ushort index, ushort out_index, ushort val);
//<2F><><EFBFBD>ƿ<EFBFBD><C6BF>ײ<EFBFBD><D7B2>̳<EFBFBD><CCB3><EFBFBD><EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD> -- AD<41>ӿ<EFBFBD>
typedef int (WINAPI *fun_read_ad)(ushort index, ushort ad_index, double* pVal);
typedef int (WINAPI *fun_write_ad)(ushort index, ushort ad_index, double val);
struct MotorFun
{//<2F>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
fun_init funinit;
fun_deinit fundeinit;
fun_get_status funstatus;
fun_send_msg funsend;
fun_recv_msg funrecv;
fun_get_cmd_info funcmd;
fun_axis_reset funreset;
fun_axis_home funhome;
fun_axis_zero_pos funzero;
fun_axis_is_moving funismoving;
fun_axis_set_speed funsetspeed;
fun_axis_set_pos funsetpos;
fun_axis_stop funstop;
fun_axis_move_pos funmovepos;
fun_axis_move_offset funmoveoffset;
fun_axis_move_jog funmovejog;
fun_axis_read funaxisread;
fun_axis_write funaxiswrite;
fun_axis_get_pos fungetpos;
fun_create_crd funcrd;
fun_add_line_pos funaddline;
fun_add_arc_pos funaddarc;
fun_crd_move funcrdmove;
fun_crd_is_moving funcrdmoving;
fun_close_crd funclosecrd;
fun_read_in funreadin;
fun_read_out funreadout;
fun_write_out funwriteout;
fun_read_ad funreadad;
fun_write_ad funwritead;
};
#pragma endregion
#endif //<2F><>ֹ<EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD>