#include  "stdafx.h"  
#include  "AdlinkMotionCardLibrary.h"  extern  "C"  _declspec ( dllexport)  bool  _stdcall MotionCardIni ( I32&  BoardId_InBits,  I32 Mode) 
{   try { ret= APS_initial ( & BoardId_InBits,  Mode) ; 		Card1ret = APS_load_param_from_file ( "MotionCardId1.xml" ) ; Card0ret =  APS_load_param_from_file ( "MotionCardId0.xml" ) ; ret =  APS_set_axis_param ( 1 ,  ( I32) PRA_HOME_MODE,  1 ) ; ret =  APS_set_axis_param ( 5 ,  ( I32) PRA_HOME_MODE,  1 ) ; return  true ; } catch  ( . . . ) {  return  false ;  } 
} extern  "C"  _declspec ( dllexport)  bool  _stdcall AxisHome ( I32 AxisID) { try { ret =  APS_home_move ( AxisID) ;   return  true ; } catch  ( . . . ) { return  false ; } } extern  "C"  _declspec ( dllexport)  bool  _stdcall MotionCardWriteDoutput ( I32 BoardID,  I32 DoGroup,  I32 ChannelNO,  I32 OnOff) { try { ret =  APS_write_d_channel_output ( BoardID,  DoGroup,  ChannelNO,  OnOff) ;   return  true ; } catch  ( . . . ) { return  false ; } } extern  "C"  _declspec ( dllexport)  bool  _stdcall MotionCardSetTrigerPara ( I32 BoardID) { try { ret =  APS_set_trigger_param ( BoardID,  ( I32) TGR_TRG_EN,  15 ) ; ret =  APS_set_trigger_param ( BoardID,  ( I32) TGR_TRG0_SRC,  0x05 ) ;  ret =  APS_set_trigger_param ( BoardID,  ( I32) TGR_TRG0_LOGIC,  0x0 ) ; ret =  APS_set_trigger_param ( BoardID,  ( I32) TGR_TRG0_TGL,  0x0 ) ; ret =  APS_set_trigger_param ( BoardID,  ( I32) TGR_TRG0_PWD,  500000 ) ; ret =  APS_set_trigger_param ( BoardID,  ( I32) TGR_TCMP0_DIR,  2 ) ; ret =  APS_set_trigger_param ( BoardID,  ( I32) TGR_TCMP0_SRC,  0x0 ) ;   return  true ; } catch  ( . . . ) { return  false ; } } extern  "C"  _declspec ( dllexport)  bool  _stdcall MotionCardSetTriger2CHPara ( I32 BoardID) { try { ret =  APS_set_trigger_param ( BoardID,  ( I32) TGR_TRG_EN,  15 ) ;   ret =  APS_set_trigger_param ( BoardID,  ( I32) TGR_TRG1_SRC,  0x09 ) ;  ret =  APS_set_trigger_param ( BoardID,  ( I32) TGR_TRG1_LOGIC,  0x0 ) ; ret =  APS_set_trigger_param ( BoardID,  ( I32) TGR_TRG1_TGL,  0x0 ) ; ret =  APS_set_trigger_param ( BoardID,  ( I32) TGR_TRG1_PWD,  500000 ) ; ret =  APS_set_trigger_param ( BoardID,  ( I32) TGR_TCMP1_DIR,  2 ) ; ret =  APS_set_trigger_param ( BoardID,  ( I32) TGR_TCMP1_SRC,  0x04 ) ;   return  true ; } catch  ( . . . ) {  return  false ; } } extern  "C"  _declspec ( dllexport)  bool  _stdcall MotionCardSetTriger3CHPara ( I32 BoardID) { try { ret =  APS_set_trigger_param ( BoardID,  ( I32) TGR_TRG_EN,  15 ) ; ret =  APS_set_trigger_param ( BoardID,  ( I32) TGR_TRG2_SRC,  0x01 ) ;  ret =  APS_set_trigger_param ( BoardID,  ( I32) TGR_TRG2_LOGIC,  0x0 ) ; ret =  APS_set_trigger_param ( BoardID,  ( I32) TGR_TRG2_TGL,  0x0 ) ; ret =  APS_set_trigger_param ( BoardID,  ( I32) TGR_TRG2_PWD,  500000 ) ; return  true ; } catch  ( . . . ) { return  false ; } } extern  "C"  _declspec ( dllexport)  bool  _stdcall MotionCardSetTrigerTable ( I32 BoardID,  I32&  PosArray) { try { 		ret =  APS_set_trigger_table ( BoardID,  0 ,  & PosArray,  2 ) ; return  true ; } catch  ( . . . ) {  return  false ; } } extern  "C"  _declspec ( dllexport)  bool  _stdcall MotionCardSetTriger2CHTable ( I32 BoardID,  I32&  PosArray) { try { 		ret =  APS_set_trigger_table ( BoardID,  1 ,  & PosArray,  2 ) ; return  true ; } catch  ( . . . ) {  return  false ;  } } extern  "C"  _declspec ( dllexport)  bool  _stdcall MotionCardManualTrigerStart ( I32 BoardID,  I32 TrgCh) { try { ret =  APS_set_trigger_manual ( BoardID,  TrgCh) ; return  true ; } catch  ( . . . ) {  return  false ;  } } extern  "C"  _declspec ( dllexport)  bool  _stdcall MotionCardGetPosition ( I32 AxisID,  I32 & Position) { try { ret =  APS_get_position ( AxisID,  & Position) ; return  true ; } catch  ( . . . ) {  return  false ; } } extern  "C"  _declspec ( dllexport)  bool  _stdcall MotionCardGetMotionStatus ( I32 AxisID,  I32&  MotionStatus) { try { MotionStatus = APS_motion_status ( AxisID) ; return  true ; } catch  ( . . . ) { MotionStatus =  - 1 ; return  false ; } } extern  "C"  _declspec ( dllexport)  bool  _stdcall MotionCardSetMovePara ( I32 AxisID,  double  RunSpeed,  double  AcceleratedSpeed,  double  AxisScale) { try { ret =  APS_set_axis_param_f ( AxisID,  ( I32) PRA_SF,  1.0 ) ; ret =  APS_set_axis_param_f ( AxisID,  ( I32) PRA_ACC,  ( I32) ( RunSpeed /  AcceleratedSpeed *  AxisScale) ) ; ret =  APS_set_axis_param_f ( AxisID,  ( I32) PRA_DEC,  ( I32) ( RunSpeed /  AcceleratedSpeed *  AxisScale) ) ; ret =  APS_set_axis_param_f ( AxisID,  ( I32) PRA_VM,  RunSpeed *  AxisScale) ; ret =  APS_set_axis_param_f ( AxisID,  ( I32) PRA_VS,  0 ) ; ret =  APS_set_axis_param_f ( AxisID,  ( I32) PRA_VE,  0 ) ; return  true ; } catch  ( . . . ) { return  false ; } } extern  "C"  _declspec ( dllexport)  bool  _stdcall MotionCardABSmove ( I32 AxisID,  I32 Position,  I32 MaxSpeedPls) { try { ret =  APS_absolute_move ( AxisID,  Position,  MaxSpeedPls) ; return  true ; } catch  ( . . . ) { return  false ; } } extern  "C"  _declspec ( dllexport)  bool  _stdcall MotionCardClose ( ) { try { ret =  APS_close ( ) ; return  true ; } catch  ( . . . ) {  return  false ;  } } extern  "C"  _declspec ( dllexport)  bool  _stdcall MotionCardAxisServoOnOff ( I32 AxisID,  I32 OnOff) { try { ret =  APS_set_servo_on ( AxisID,  OnOff) ; return  true ; } catch  ( . . . ) { return  false ; } } extern  "C"  _declspec ( dllexport)  bool  _stdcall MotionCardGetMotionIOstatus ( I32 AxisID,  I32&  IOstatus) { try { IOstatus=  APS_motion_io_status ( AxisID) ; return  true ; } catch  ( . . . ) { return  false ; } } extern  "C"  _declspec ( dllexport)  bool  _stdcall MotionCardGetDinput ( I32 BoardId,  I32&  DiData) { try { I32* data =  & DiData; ret =  APS_read_d_input ( BoardId,  0 ,  data) ; return  true ; } catch  ( . . . ) { return  false ; } } extern  "C"  _declspec ( dllexport)  bool  _stdcall MotionCardGetDout ( I32 BoardId,  I32&  DiData) { try { I32* data =  & DiData; ret =  APS_read_d_output ( BoardId,  0 ,  data) ; return  true ; } catch  ( . . . ) { return  false ; } } extern  "C"  _declspec ( dllexport)  bool  _stdcall MotionCardStopAxis ( I32 AxisId) { try { ret =  APS_stop_move ( AxisId) ; return  true ; } catch  ( . . . ) { return  false ; } } extern  "C"  _declspec ( dllexport)  bool  _stdcall MotionCardGetTrigerCnt ( I32 boardID,  I32 ch,  I32&  trgCnt) { try { I32*  Cnt =  & trgCnt; ret =  APS_get_trigger_count ( boardID,  ch,  Cnt) ; return  true ; } catch  ( . . . ) { return  false ; }  } extern  "C"  _declspec ( dllexport)  bool  _stdcall MotionCardResteTrigerCnt ( I32 boardID,  I32 ch) { try { ret =  APS_reset_trigger_count ( boardID,  ch) ; return  true ; } catch  ( . . . ) { return  false ; } } extern  "C"  _declspec ( dllexport)  bool  _stdcall ZcanMoveToAttach ( I32 XAxisId,  I32 YAxisId,  I32 RAxisId,  double  XTarmm,  double  YTarmm,  double  RTarmm,  double  ZTarmm,  double  Xnowmm, double  Ynowmm,  double  Rnowmm,  double  Znowmm,  double  XScale,  double  YScale,  double  RScale,  double  ZScale,  double  Xacc,  double  Yacc,  double  Racc,  double  Zacc,  double  Zspeedmm, bool  ZcanAttch) { I32 XspeedPulse =  0 ,  YspeedPulse =  0 ,  RspeedPulse =  0 ; double  XTime =  999 ,  YTime =  999 ,  RTime =  999 ,  ZTime =  0 ; try { ret =  APS_get_feedback_velocity ( XAxisId,  & XspeedPulse) ; ret =  APS_get_feedback_velocity ( YAxisId,  & YspeedPulse) ; ret =  APS_get_feedback_velocity ( RAxisId,  & RspeedPulse) ; ZTime =  Zacc +  abs ( Znowmm -  ZTarmm)  /  Zspeedmm; if  ( XspeedPulse >  0  &&  abs ( Xnowmm -  XTarmm)  <  10 ) { XTime =  Xacc +  abs ( Xnowmm -  XTarmm)  /  ( XspeedPulse /  XScale) ; } else  if  ( XspeedPulse ==  0  &&  abs ( Xnowmm -  XTarmm) < 0.1 ) { XTime =  - 1 ; } if  ( YspeedPulse >  0  &&  abs ( Ynowmm -  YTarmm) < 10 ) { YTime =  Yacc +  abs ( Ynowmm -  YTarmm)  /  ( YspeedPulse /  YScale) ; } else  if  ( YspeedPulse ==  0  &&  abs ( Ynowmm -  YTarmm) < 0.1 ) { YTime =  - 1 ; } if  ( RspeedPulse >  0  &&  abs ( Rnowmm -  RTarmm) < 10 ) { RTime =  Racc +  abs ( Rnowmm -  RTarmm)  /  ( RspeedPulse /  RScale) ; } else  if  ( RspeedPulse ==  0  &&  abs ( Rnowmm -  RTarmm) < 0.1 ) { RTime =  - 1 ; } if  ( ( ZTime> XTime) && ( ZTime> YTime) && ( ZTime> RTime) ) { ZcanAttch =  true ; } else { ZcanAttch =  false ; } return  true ; } catch  ( . . . ) { ZcanAttch =  false ; return  false ; } } extern  "C"  _declspec ( dllexport)  bool  _stdcall ZcanMoveToPickMat ( I32 XAxisId,  I32 RAxisId,  double  XTarmm,  double  RTarmm,  double  ZTarmm,  double  Xnowmm, double  Rnowmm,  double  Znowmm,  double  XScale,  double  RScale,  double  ZScale,  double  Xacc,  double  Racc,  double  Zacc,  double  Zspeedmm,  bool  ZcanPick) { I32 XspeedPulse =  0 ,  RspeedPulse =  0 ; double  XTime =  999 ,  RTime =  999 ,  ZTime =  0 ; try { ret =  APS_get_feedback_velocity ( XAxisId,  & XspeedPulse) ; ret =  APS_get_feedback_velocity ( RAxisId,  & RspeedPulse) ; ZTime =  Zacc +  abs ( Znowmm -  ZTarmm)  /  Zspeedmm; if  ( XspeedPulse >  0  &&  abs ( Xnowmm -  XTarmm)  <  10 ) { XTime =  Xacc +  abs ( Xnowmm -  XTarmm)  /  ( XspeedPulse /  XScale) ; } else  if  ( XspeedPulse ==  0  &&  abs ( Xnowmm -  XTarmm)  <  0.1 ) { XTime =  - 1 ; } if  ( RspeedPulse >  0  &&  abs ( Rnowmm -  RTarmm)  <  10 ) { RTime =  Racc +  abs ( Rnowmm -  RTarmm)  /  ( RspeedPulse /  RScale) ; } else  if  ( RspeedPulse ==  0  &&  abs ( Rnowmm -  RTarmm)  <  0.1 ) { RTime =  - 1 ; } if  ( ( ZTime >  XTime)  &&  ( ZTime >  RTime) ) { ZcanPick =  true ; } else { ZcanPick =  false ; } return  true ; } catch  ( . . . ) { ZcanPick =  false ; return  false ; } } 
extern  "C"  _declspec ( dllexport)  bool  _stdcall  AxisMoveTogether ( I32 Dimention,  I32&  AxisArr,  I32&  PosArr,  double  MaxSpe,  double  AxisScale) { try { ret =  APS_absolute_linear_move ( Dimention,  & AxisArr,  & PosArr,  I32 ( MaxSpe* AxisScale) ) ; return  true ; } catch  ( . . . ) { return  false ; } } extern  "C"  _declspec ( dllexport)  bool  _stdcall MotionCardGetSpeed ( I32 AxisID,  I32 & Speed) 
{ try { ret =  APS_get_feedback_velocity ( AxisID,  & Speed) ; return  true ; } catch  ( . . . ) { return  false ; } }