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.
mitlib.pub/MITLIB/Include/APS168.h

355 lines
21 KiB
C

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

#ifndef _ADLINK_SYSTEMAPI_H
#define _ADLINK_SYSTEMAPI_H
//#define _MYLINUX //¨Ï¥ÎLiunx¥²¶·­n¶}±Ò
#ifdef __cplusplus
extern "C" {
#endif
#if defined (_MYWIN32) || defined (_MYRTEVLIB)
#define FNTYPE PASCAL
#elif defined (_MYLINUX)
#ifndef FNTYPE
#define FNTYPE
#endif
#elif defined(_MYRTE)
#define FNTYPE _stdcall
#elif defined(_RTX)
#define FNTYPE _stdcall
#else
#ifndef FNTYPE
#define FNTYPE PASCAL
#endif
#endif
#include "type_def.h"
// System & Initialization
I32 FNTYPE APS_initial( I32 *BoardID_InBits, I32 Mode );
#if defined (_MYLINUX)
I32 FNTYPE APS_close(void);
I32 FNTYPE APS_version(void);
#else
I32 FNTYPE APS_close();
I32 FNTYPE APS_version();
#endif
I32 FNTYPE APS_device_driver_version( I32 Board_ID );
I32 FNTYPE APS_get_axis_info( I32 Axis_ID, I32 *Board_ID, I32 *Axis_No, I32 *Port_ID, I32 *Module_ID );
I32 FNTYPE APS_set_board_param( I32 Board_ID, I32 BOD_Param_No, I32 BOD_Param );
I32 FNTYPE APS_get_board_param( I32 Board_ID, I32 BOD_Param_No, I32 *BOD_Param );
I32 FNTYPE APS_set_axis_param( I32 Axis_ID, I32 AXS_Param_No, I32 AXS_Param );
I32 FNTYPE APS_get_axis_param( I32 Axis_ID, I32 AXS_Param_No, I32 *AXS_Param );
I32 FNTYPE APS_get_system_timer( I32 Board_ID, I32 *Timer );
I32 FNTYPE APS_get_device_info( I32 Board_ID, I32 Info_No, I32 *Info );
I32 FNTYPE APS_get_card_name( I32 Board_ID, I32 *CardName );
I32 FNTYPE APS_disable_device( I32 DeviceName );
I32 FNTYPE APS_get_first_axisId( I32 Board_ID, I32 *StartAxisID, I32 *TotalAxisNum );
I32 FNTYPE APS_set_security_key( I32 Board_ID, I32 OldPassword, I32 NewPassword );
I32 FNTYPE APS_check_security_key( I32 Board_ID, I32 Password );
I32 FNTYPE APS_reset_security_key( I32 Board_ID );
I32 FNTYPE APS_load_param_from_file( const char *pXMLFile );
//Only support PCI-7856/MoionNet series
I32 FNTYPE APS_save_param_to_file( I32 Board_ID, const char *pXMLFile );
// Flash function [Only for PCI-8253/56, PCI-8392(H)]
I32 FNTYPE APS_save_parameter_to_flash( I32 Board_ID );
I32 FNTYPE APS_load_parameter_from_flash( I32 Board_ID );
I32 FNTYPE APS_load_parameter_from_default( I32 Board_ID );
// SSCNET-3 functions [Only for PCI-8392(H)]
I32 FNTYPE APS_start_sscnet( I32 Board_ID, I32 *AxisFound_InBits );
I32 FNTYPE APS_stop_sscnet( I32 Board_ID );
I32 FNTYPE APS_get_sscnet_servo_param( I32 Axis_ID, I32 Para_No1, I32 *Para_Dat1, I32 Para_No2, I32 *Para_Dat2 );
I32 FNTYPE APS_set_sscnet_servo_param( I32 Axis_ID, I32 Para_No1, I32 Para_Dat1, I32 Para_No2, I32 Para_Dat2 );
I32 FNTYPE APS_get_sscnet_servo_alarm( I32 Axis_ID, I32 *Alarm_No, I32 *Alarm_Detail );
I32 FNTYPE APS_reset_sscnet_servo_alarm( I32 Axis_ID );
I32 FNTYPE APS_save_sscnet_servo_param( I32 Board_ID );
I32 FNTYPE APS_get_sscnet_servo_abs_position( I32 Axis_ID, I32 *Cyc_Cnt, I32 *Res_Cnt );
I32 FNTYPE APS_save_sscnet_servo_abs_position( I32 Board_ID );
I32 FNTYPE APS_load_sscnet_servo_abs_position( I32 Axis_ID, I32 Abs_Option, I32 *Cyc_Cnt, I32 *Res_Cnt );
I32 FNTYPE APS_get_sscnet_link_status( I32 Board_ID, I32 *Link_Status );
I32 FNTYPE APS_set_sscnet_servo_monitor_src( I32 Axis_ID, I32 Mon_No, I32 Mon_Src );
I32 FNTYPE APS_get_sscnet_servo_monitor_src( I32 Axis_ID, I32 Mon_No, I32 *Mon_Src );
I32 FNTYPE APS_get_sscnet_servo_monitor_data( I32 Axis_ID, I32 Arr_Size, I32 *Data_Arr );
I32 FNTYPE APS_set_sscnet_control_mode( I32 Axis_ID, I32 Mode );
// Motion IO & motion status
I32 FNTYPE APS_get_command( I32 Axis_ID, I32 *Command );
I32 FNTYPE APS_set_command( I32 Axis_ID, I32 Command );
I32 FNTYPE APS_motion_status( I32 Axis_ID );
I32 FNTYPE APS_motion_io_status( I32 Axis_ID );
I32 FNTYPE APS_set_servo_on( I32 Axis_ID, I32 Servo_On );
I32 FNTYPE APS_get_position( I32 Axis_ID, I32 *Position );
I32 FNTYPE APS_set_position(I32 Axis_ID, I32 Position);
I32 FNTYPE APS_get_command_velocity(I32 Axis_ID, I32 *Velocity );
I32 FNTYPE APS_get_feedback_velocity(I32 Axis_ID, I32 *Velocity );
I32 FNTYPE APS_get_error_position( I32 Axis_ID, I32 *Err_Pos );
I32 FNTYPE APS_get_target_position( I32 Axis_ID, I32 *Targ_Pos );
// Single axis motion
I32 FNTYPE APS_relative_move( I32 Axis_ID, I32 Distance, I32 Max_Speed );
I32 FNTYPE APS_absolute_move( I32 Axis_ID, I32 Position, I32 Max_Speed );
I32 FNTYPE APS_velocity_move( I32 Axis_ID, I32 Max_Speed );
I32 FNTYPE APS_home_move( I32 Axis_ID );
I32 FNTYPE APS_stop_move( I32 Axis_ID );
I32 FNTYPE APS_emg_stop( I32 Axis_ID );
I32 FNTYPE APS_relative_move2( I32 Axis_ID, I32 Distance, I32 Start_Speed, I32 Max_Speed, I32 End_Speed, I32 Acc_Rate, I32 Dec_Rate );
I32 FNTYPE APS_absolute_move2( I32 Axis_ID, I32 Position, I32 Start_Speed, I32 Max_Speed, I32 End_Speed, I32 Acc_Rate, I32 Dec_Rate );
I32 FNTYPE APS_home_move2( I32 Axis_ID, I32 Dir, I32 Acc, I32 Start_Speed, I32 Max_Speed, I32 ORG_Speed );
// Only for MNET-1XMO
I32 FNTYPE APS_relative_move_ovrd( I32 Axis_ID, I32 Distance, I32 Max_Speed );
I32 FNTYPE APS_absolute_move_ovrd( I32 Axis_ID, I32 Position, I32 Max_Speed );
//JOG functions [Only for PCI-8392, PCI-8253/56]
I32 FNTYPE APS_set_jog_param( I32 Axis_ID, JOG_DATA *pStr_Jog, I32 Mask );
I32 FNTYPE APS_get_jog_param( I32 Axis_ID, JOG_DATA *pStr_Jog );
I32 FNTYPE APS_jog_mode_switch( I32 Axis_ID, I32 Turn_No );
I32 FNTYPE APS_jog_start( I32 Axis_ID, I32 STA_On );
// Interpolation
I32 FNTYPE APS_absolute_linear_move( I32 Dimension, I32 *Axis_ID_Array, I32 *Position_Array, I32 Max_Linear_Speed );
I32 FNTYPE APS_relative_linear_move( I32 Dimension, I32 *Axis_ID_Array, I32 *Distance_Array, I32 Max_Linear_Speed );
I32 FNTYPE APS_absolute_arc_move( I32 Dimension, I32 *Axis_ID_Array, I32 *Center_Pos_Array, I32 Max_Arc_Speed, I32 Angle );
I32 FNTYPE APS_relative_arc_move( I32 Dimension, I32 *Axis_ID_Array, I32 *Center_Offset_Array, I32 Max_Arc_Speed, I32 Angle );
// Helical interpolation [Only for PCI-8392, PCI-8253/56]
I32 FNTYPE APS_absolute_helix_move( I32 Dimension, I32 *Axis_ID_Array, I32 *Center_Pos_Array, I32 Max_Arc_Speed, I32 Pitch, I32 TotalHeight, I32 CwOrCcw );
I32 FNTYPE APS_relative_helix_move( I32 Dimension, I32 *Axis_ID_Array, I32 *Center_PosOffset_Array, I32 Max_Arc_Speed, I32 Pitch, I32 TotalHeight, I32 CwOrCcw );
// Circular interpolation( Support 2D and 3D ) [Only for PCI-8392, PCI-8253/56]
I32 FNTYPE APS_absolute_arc_move_3pe(I32 Dimension, I32 *Axis_ID_Array, I32 *Pass_Pos_Array, I32 *End_Pos_Array, I32 Max_Arc_Speed );
I32 FNTYPE APS_relative_arc_move_3pe(I32 Dimension, I32 *Axis_ID_Array, I32 *Pass_PosOffset_Array, I32 *End_PosOffset_Array, I32 Max_Arc_Speed );
// Interrupt functions
#if defined (_MYLINUX)
//I32 FNTYPE APS_int_enable( I32 Board_ID, I32 Enable );
I32 FNTYPE APS_int_enable( I32 Board_ID, I32 Enable, void (*event_handler)(int));
I32 FNTYPE APS_get_int_status( I32 Board_ID, I32 Item_No, I32 Factor_No, I32 *Event_int_status );
#else
I32 FNTYPE APS_int_enable( I32 Board_ID, I32 Enable );
#endif
I32 FNTYPE APS_set_int_factor( I32 Board_ID, I32 Item_No, I32 Factor_No, I32 Enable );
I32 FNTYPE APS_get_int_factor( I32 Board_ID, I32 Item_No, I32 Factor_No, I32 *Enable );
I32 FNTYPE APS_set_field_bus_int_factor_di( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 bitsOfCheck );
I32 FNTYPE APS_get_field_bus_int_factor_di( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 *bitsOfCheck );
//[Only for PCI-7856 motion interrupt]
I32 FNTYPE APS_set_field_bus_int_factor_motion( I32 Axis_ID, I32 Factor_No, I32 Enable );
I32 FNTYPE APS_get_field_bus_int_factor_motion( I32 Axis_ID, I32 Factor_No, I32 *Enable );
I32 FNTYPE APS_set_field_bus_int_factor_error( I32 Axis_ID, I32 Factor_No, I32 Enable );
I32 FNTYPE APS_get_field_bus_int_factor_error( I32 Axis_ID, I32 Factor_No, I32 *Enable );
I32 FNTYPE APS_reset_field_bus_int_motion( I32 Axis_ID );
I32 FNTYPE APS_wait_field_bus_error_int_motion( I32 Axis_ID, I32 Time_Out );
#if defined (_MYLINUX)
//HANDLE FNTYPE APS_set_int_factorH( I32 Board_ID, I32 Item_No, I32 Factor_No, I32 Enable );
#else
HANDLE FNTYPE APS_set_int_factorH( I32 Board_ID, I32 Item_No, I32 Factor_No, I32 Enable );
HANDLE FNTYPE APS_int_no_to_handle( I32 Int_No );
I32 FNTYPE APS_wait_single_int( I32 Int_No, I32 Time_Out );
I32 FNTYPE APS_wait_multiple_int( I32 Int_Count, I32 *Int_No_Array, I32 Wait_All, I32 Time_Out );
I32 FNTYPE APS_reset_int( I32 Int_No );
I32 FNTYPE APS_set_int( I32 Int_No );
//[Only for PCI-8154/58]
I32 FNTYPE APS_wait_error_int( I32 Board_ID, I32 Item_No, I32 Time_Out );
#endif
// Sampling functions [Only for PCI-8392, PCI-8253/56]
I32 FNTYPE APS_set_sampling_param( I32 Board_ID, I32 ParaNum, I32 ParaDat );
I32 FNTYPE APS_get_sampling_param( I32 Board_ID, I32 ParaNum, I32 *ParaDat );
I32 FNTYPE APS_wait_trigger_sampling( I32 Board_ID, I32 Length, I32 PreTrgLen, I32 TimeOutMs, STR_SAMP_DATA_4CH *DataArr );
I32 FNTYPE APS_wait_trigger_sampling_async( I32 Board_ID, I32 Length, I32 PreTrgLen, I32 TimeOutMs, STR_SAMP_DATA_4CH *DataArr );
I32 FNTYPE APS_get_sampling_count( I32 Board_ID, I32 *SampCnt );
I32 FNTYPE APS_stop_wait_sampling( I32 Board_ID );
//DIO & AIO
I32 FNTYPE APS_write_d_output(I32 Board_ID, I32 DO_Group, I32 DO_Data);
I32 FNTYPE APS_read_d_output(I32 Board_ID, I32 DO_Group, I32 *DO_Data);
I32 FNTYPE APS_read_d_input(I32 Board_ID, I32 DI_Group, I32 *DI_Data);
I32 FNTYPE APS_read_a_input_value(I32 Board_ID, I32 Channel_No, F64 *Convert_Data);
I32 FNTYPE APS_read_a_input_data(I32 Board_ID, I32 Channel_No, I32 *Raw_Data);
I32 FNTYPE APS_write_a_output_value(I32 Board_ID, I32 Channel_No, F64 Convert_Data);
I32 FNTYPE APS_write_a_output_data(I32 Board_ID, I32 Channel_No, I32 Raw_Data);
//Point table move
I32 FNTYPE APS_set_point_table( I32 Axis_ID, I32 Index, POINT_DATA *Point );
I32 FNTYPE APS_get_point_table( I32 Axis_ID, I32 Index, POINT_DATA *Point );
I32 FNTYPE APS_get_running_point_index( I32 Axis_ID, I32 *Index );
I32 FNTYPE APS_get_start_point_index( I32 Axis_ID, I32 *Index );
I32 FNTYPE APS_get_end_point_index( I32 Axis_ID, I32 *Index );
I32 FNTYPE APS_set_table_move_pause( I32 Axis_ID, I32 Pause_en );
I32 FNTYPE APS_set_table_move_repeat( I32 Axis_ID, I32 Repeat_en );
I32 FNTYPE APS_get_table_move_repeat_count( I32 Axis_ID, I32 *RepeatCnt );
I32 FNTYPE APS_point_table_move( I32 Dimension, I32 *Axis_ID_Array, I32 StartIndex, I32 EndIndex );
I32 FNTYPE APS_set_point_tableEx( I32 Axis_ID, I32 Index, PNT_DATA *Point );
//I32 FNTYPE APS_get_point_tableEx( I32 Axis_ID, I32 Index, PNT_DATA *Point );
I32 FNTYPE APS_set_point_table_4DL( I32 *Axis_ID_Array, I32 Index, PNT_DATA_4DL *Point );
//Point table + IO - Pause / Resume
I32 FNTYPE APS_set_table_move_ex_pause( I32 Axis_ID );
I32 FNTYPE APS_set_table_move_ex_rollback( I32 Axis_ID, I32 Max_Speed );
I32 FNTYPE APS_set_table_move_ex_resume( I32 Axis_ID );
//Point table Feeder (Only for PCI-825x)
I32 FNTYPE APS_set_feeder_group( I32 GroupId, I32 Dimension, I32 *Axis_ID_Array );
I32 FNTYPE APS_get_feeder_group( I32 GroupId, I32 *Dimension, I32 *Axis_ID_Array );
I32 FNTYPE APS_free_feeder_group( I32 GroupId );
I32 FNTYPE APS_reset_feeder_buffer( I32 GroupId );
I32 FNTYPE APS_set_feeder_point_2D( I32 GroupId, PNT_DATA_2D* PtArray, I32 Size, I32 LastFlag );
I32 FNTYPE APS_start_feeder_move( I32 GroupId );
I32 FNTYPE APS_get_feeder_running_index( I32 GroupId, I32 *Index );
I32 FNTYPE APS_get_feeder_feed_index( I32 GroupId, I32 *Index );
I32 FNTYPE APS_set_feeder_ex_pause( I32 GroupId );
I32 FNTYPE APS_set_feeder_ex_rollback( I32 GroupId, I32 Max_Speed );
I32 FNTYPE APS_set_feeder_ex_resume( I32 GroupId );
I32 FNTYPE APS_set_feeder_cfg_acc_type( I32 GroupId, I32 Type );
// I32 FNTYPE APS_set_feeder_point_1D( I32 GroupId, PNT_DATA_1D* PtArray, I32 Size, I32 LastFlag );
// I32 FNTYPE APS_set_feeder_point_3D( I32 GroupId, PNT_DATA_3D* PtArray, I32 Size, I32 LastFlag );
//Point table move2
I32 FNTYPE APS_set_point_table_mode2( I32 Axis_ID, I32 Mode );
I32 FNTYPE APS_set_point_table2( I32 Dimension, I32 *Axis_ID_Array, I32 Index, POINT_DATA2 *Point );
I32 FNTYPE APS_point_table_continuous_move2( I32 Dimension, I32 *Axis_ID_Array );
I32 FNTYPE APS_point_table_single_move2( I32 Axis_ID, I32 Index );
I32 FNTYPE APS_get_running_point_index2( I32 Axis_ID, I32 *Index );
I32 FNTYPE APS_point_table_status2( I32 Axis_ID, I32 *Status );
//Point table Only for HSL-4XMO
I32 FNTYPE APS_set_point_table3( I32 Dimension, I32 *Axis_ID_Array, I32 Index, POINT_DATA3 *Point );
I32 FNTYPE APS_point_table_move3( I32 Dimension, I32 *Axis_ID_Array, I32 StartIndex, I32 EndIndex );
I32 FNTYPE APS_set_point_table_param3( I32 FirstAxid, I32 ParaNum, I32 ParaDat );
// Gantry functions. [Only for PCI-8392, PCI-8253/56]
I32 FNTYPE APS_set_gantry_param( I32 Board_ID, I32 GroupNum, I32 ParaNum, I32 ParaDat );
I32 FNTYPE APS_get_gantry_param( I32 Board_ID, I32 GroupNum, I32 ParaNum, I32 *ParaDat );
I32 FNTYPE APS_set_gantry_axis( I32 Board_ID, I32 GroupNum, I32 Master_Axis_ID, I32 Slave_Axis_ID );
I32 FNTYPE APS_get_gantry_axis( I32 Board_ID, I32 GroupNum, I32 *Master_Axis_ID, I32 *Slave_Axis_ID );
I32 FNTYPE APS_get_gantry_error( I32 Board_ID, I32 GroupNum, I32 *GentryError );
// Digital filter functions. [Only for PCI-8253/56]
I32 FNTYPE APS_set_filter_param( I32 Axis_ID, I32 Filter_paramNo, I32 param_val );
I32 FNTYPE APS_get_filter_param( I32 Axis_ID, I32 Filter_paramNo, I32 *param_val );
//Field bus master fucntions For PCI-8392(H)
I32 FNTYPE APS_set_field_bus_param( I32 Board_ID, I32 BUS_No, I32 BUS_Param_No, I32 BUS_Param );
I32 FNTYPE APS_get_field_bus_param( I32 Board_ID, I32 BUS_No, I32 BUS_Param_No, I32 *BUS_Param );
I32 FNTYPE APS_start_field_bus( I32 Board_ID, I32 BUS_No, I32 Start_Axis_ID );
I32 FNTYPE APS_stop_field_bus( I32 Board_ID, I32 BUS_No );
I32 FNTYPE APS_get_field_bus_device_info( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Info_No, I32 *Info );
I32 FNTYPE APS_get_field_bus_last_scan_info( I32 Board_ID, I32 BUS_No, I32 *Info_Array, I32 Array_Size, I32 *Info_Count );
I32 FNTYPE APS_get_field_bus_master_type( I32 Board_ID, I32 BUS_No, I32 *BUS_Type );
I32 FNTYPE APS_get_field_bus_slave_type( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 *MOD_Type );
I32 FNTYPE APS_get_field_bus_slave_name( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 *MOD_Name );
I32 FNTYPE APS_get_field_bus_slave_first_axisno( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 *AxisNo, I32 *TotalAxes );
//Field bus slave general functions
I32 FNTYPE APS_set_field_bus_slave_param( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, I32 ParaNum, I32 ParaDat );
I32 FNTYPE APS_get_field_bus_slave_param( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, I32 ParaNum, I32 *ParaDat );
I32 FNTYPE APS_get_slave_connect_quality( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 *Sts_data );
I32 FNTYPE APS_get_slave_online_status( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 *Live );
//Field bus DIO slave fucntions For PCI-8392(H)
I32 FNTYPE APS_set_field_bus_d_output( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 DO_Value );
I32 FNTYPE APS_get_field_bus_d_output( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 *DO_Value );
I32 FNTYPE APS_get_field_bus_d_input( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 *DI_Value );
I32 FNTYPE APS_set_field_bus_d_channel_output( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, I32 DO_Value );
I32 FNTYPE APS_get_field_bus_d_channel_output( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, I32 *DO_Value );
I32 FNTYPE APS_get_field_bus_d_channel_input( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, I32 *DI_Value );
//Field bus AIO slave function
I32 FNTYPE APS_set_field_bus_a_output( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, F64 AO_Value );
I32 FNTYPE APS_set_field_bus_a_output_plc( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, F64 AO_Value, I16 RunStep );
I32 FNTYPE APS_get_field_bus_a_output( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, F64 *AO_Value );
I32 FNTYPE APS_get_field_bus_a_input( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, F64 *AI_Value );
I32 FNTYPE APS_get_field_bus_a_input_plc( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, F64 *AI_Value, I16 RunStep );
//Field bus Comparing trigger functions
I32 FNTYPE APS_set_field_bus_trigger_param( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Param_No, I32 Param_Val );
I32 FNTYPE APS_get_field_bus_trigger_param( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Param_No, I32 *Param_Val );
I32 FNTYPE APS_set_field_bus_trigger_linear( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 LCmpCh, I32 StartPoint, I32 RepeatTimes, I32 Interval );
I32 FNTYPE APS_set_field_bus_trigger_table( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 TCmpCh, I32 *DataArr, I32 ArraySize );
I32 FNTYPE APS_set_field_bus_trigger_manual( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 TrgCh );
I32 FNTYPE APS_set_field_bus_trigger_manual_s( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 TrgChInBit );
I32 FNTYPE APS_get_field_bus_trigger_table_cmp( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 TCmpCh, I32 *CmpVal );
I32 FNTYPE APS_get_field_bus_trigger_linear_cmp( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 LCmpCh, I32 *CmpVal );
I32 FNTYPE APS_get_field_bus_trigger_count( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 TrgCh, I32 *TrgCnt );
I32 FNTYPE APS_reset_field_bus_trigger_count( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 TrgCh );
I32 FNTYPE APS_get_field_bus_linear_cmp_remain_count( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 LCmpCh, I32 *Cnt );
I32 FNTYPE APS_get_field_bus_table_cmp_remain_count( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 TCmpCh, I32 *Cnt );
I32 FNTYPE APS_get_field_bus_encoder( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 EncCh, I32 *EncCnt );
I32 FNTYPE APS_set_field_bus_encoder( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 EncCh, I32 EncCnt );
// Comparing trigger functions
I32 FNTYPE APS_set_trigger_param( I32 Board_ID, I32 Param_No, I32 Param_Val );
I32 FNTYPE APS_get_trigger_param( I32 Board_ID, I32 Param_No, I32 *Param_Val );
I32 FNTYPE APS_set_trigger_linear( I32 Board_ID, I32 LCmpCh, I32 StartPoint, I32 RepeatTimes, I32 Interval );
I32 FNTYPE APS_set_trigger_table( I32 Board_ID, I32 TCmpCh, I32 *DataArr, I32 ArraySize );
I32 FNTYPE APS_set_trigger_manual( I32 Board_ID, I32 TrgCh );
I32 FNTYPE APS_set_trigger_manual_s( I32 Board_ID, I32 TrgChInBit );
I32 FNTYPE APS_get_trigger_table_cmp( I32 Board_ID, I32 TCmpCh, I32 *CmpVal );
I32 FNTYPE APS_get_trigger_linear_cmp( I32 Board_ID, I32 LCmpCh, I32 *CmpVal );
I32 FNTYPE APS_get_trigger_count( I32 Board_ID, I32 TrgCh, I32 *TrgCnt );
I32 FNTYPE APS_reset_trigger_count( I32 Board_ID, I32 TrgCh );
// Pulser counter function
I32 FNTYPE APS_get_pulser_counter( I32 Board_ID, I32 *Counter );
I32 FNTYPE APS_set_pulser_counter( I32 Board_ID, I32 Counter );
// Reserved functions
I32 FNTYPE APS_field_bus_slave_set_param( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, I32 ParaNum, I32 ParaDat );
I32 FNTYPE APS_field_bus_slave_get_param( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, I32 ParaNum, I32 *ParaDat );
I32 FNTYPE APS_field_bus_d_set_output( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 DO_Value );
I32 FNTYPE APS_field_bus_d_get_output( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 *DO_Value );
I32 FNTYPE APS_field_bus_d_get_input( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 *DI_Value );
I32 FNTYPE APS_field_bus_A_set_output( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, F64 AO_Value );
I32 FNTYPE APS_field_bus_A_set_output_plc( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, F64 AO_Value, I16 RunStep );
I32 FNTYPE APS_field_bus_A_get_output( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, F64 *AO_Value );
I32 FNTYPE APS_field_bus_A_get_input( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, F64 *AI_Value );
I32 FNTYPE APS_field_bus_A_get_input_plc( I32 Board_ID, I32 BUS_No, I32 MOD_No, I32 Ch_No, F64 *AI_Value, I16 RunStep );
//Dpac Function
I32 FNTYPE APS_rescan_CF( I32 Board_ID );
I32 FNTYPE APS_get_battery_status( I32 Board_ID, I32 *Battery_status);
//DPAC Display & Display Button
I32 FNTYPE APS_get_display_data( I32 Board_ID, I32 displayDigit, I32 *displayIndex);
I32 FNTYPE APS_set_display_data( I32 Board_ID, I32 displayDigit, I32 displayIndex);
I32 FNTYPE APS_get_button_status( I32 Board_ID, I32 *buttonstatus);
//nv RAM funciton
I32 FNTYPE APS_set_nv_ram( I32 Board_ID, I32 RamNo, I32 DataWidth, I32 Offset, I32 Data );
I32 FNTYPE APS_get_nv_ram( I32 Board_ID, I32 RamNo, I32 DataWidth, I32 Offset, I32 *Data );
I32 FNTYPE APS_clear_nv_ram( I32 Board_ID, I32 RamNo );
//Override functions [Only for MNET series]
I32 FNTYPE APS_speed_override( I32 Axis_ID, I32 MaxSpeed );
//VAO function(Laser function) [Only for PCI-8256]
I32 FNTYPE APS_set_vao_param( I32 Board_ID, I32 Param_No, I32 Param_Val );
I32 FNTYPE APS_get_vao_param( I32 Board_ID, I32 Param_No, I32 *Param_Val );
I32 FNTYPE APS_set_vao_table( I32 Board_ID, I32 TableNum, I32 MinVelocity, I32 VelInterval, I32 TotalPoints, I32 *MappingDataArray );
I32 FNTYPE APS_start_vao( I32 Board_ID, I32 TableNum, I32 Enable );
//PWM function
I32 FNTYPE APS_set_pwm_width( I32 Board_ID, I32 PWM_Ch, I32 Width );
I32 FNTYPE APS_get_pwm_width( I32 Board_ID, I32 PWM_Ch, I32 *Width );
I32 FNTYPE APS_set_pwm_frequency( I32 Board_ID, I32 PWM_Ch, I32 Frequency );
I32 FNTYPE APS_get_pwm_frequency( I32 Board_ID, I32 PWM_Ch, I32 *Frequency );
I32 FNTYPE APS_set_pwm_on( I32 Board_ID, I32 PWM_Ch, I32 PWM_On );
#ifdef __cplusplus
}
#endif
#endif