using System.Runtime.InteropServices;
/********************************************************************************************************************************************************************                                                   
1 每个相机可以单独设置触发参数,适应给更多不同相机
2 物件状态实时可以存储10组数据,防止计算机不实时
3 根据物件编号下达动作,方便用户使用
4 吹气口各种工作,防止OK与NG占用同一个通道													  
********************************************************************************************************************************************************************/
namespace MCDLL_NET
{
    public class CMCDLL_NET_Sorting
    {
        /********************************************************************************************************************************************************************
                                                              1 系统设置函数  
        ********************************************************************************************************************************************************************/
        //1.0 筛选功能初始化函数 必须在 MCF_Open_Net() 前调用
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Init_Net")]
        public static extern short MCF_Sorting_Init_Net(ushort StationNumber = 0);
        //1.1 控制卡打开关闭函数                              [1,100]                          [0,99]                          宏定义1.1                     
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Open_Net")]
        public static extern short MCF_Open_Net(ushort Connection_Number, ref ushort Station_Number, ref ushort Station_Type);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Get_Open_Net")]
        public static extern short MCF_Get_Open_Net(ref ushort Connection_Number, ref ushort Station_Number, ref ushort Station_Type);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Close_Net")]
        public static extern short MCF_Close_Net();
        //1.2 链接超时紧急停止函数                             [0,60000]
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Set_Link_TimeOut_Net")]
        public static extern short MCF_Set_Link_TimeOut_Net(uint Time_1MS, uint TimeOut_Output, ushort StationNumber = 0);
        //    链接超时紧急停止触发使能函数             
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Set_Trigger_Output_Bit_Net")]
        public static extern short MCF_Set_Trigger_Output_Bit_Net(ushort Bit_Output_Number, ushort Bit_Output_Enable, ushort StationNumber = 0);

        //1.3 链接监测函数
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Get_Link_State_Net")]
        public static extern short MCF_Get_Link_State_Net(ushort StationNumber = 0);

        /********************************************************************************************************************************************************************
                                                              2 通用输入输出函数
        ********************************************************************************************************************************************************************/
        //2.1 通用IO全部输出函数                               [OUT31,OUT0]                     [0,99]   [10000,10099]               
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Set_Output_Net")]
        public static extern short MCF_Set_Output_Net(uint All_Output_Logic, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Get_Output_Net")]
        public static extern short MCF_Get_Output_Net(ref uint All_Output_Logic, ushort StationNumber = 0);
        //2.2 通用IO按位输出函数                               宏定义2.3.1                      宏定义2.3.2                      [0,99]  [10000,10099]   
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Set_Output_Bit_Net")]
        public static extern short MCF_Set_Output_Bit_Net(ushort Bit_Output_Number, ushort Bit_Output_Logic, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Get_Output_Bit_Net")]
        public static extern short MCF_Get_Output_Bit_Net(ushort Bit_Output_Number, ref ushort Bit_Output_Logic, ushort StationNumber = 0);
        //2.4 通用IO全部输入函数                               [Input31,Input0]                 [Input48,Input32]               [0,99]  [10000,10099]  
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Get_Input_Net")]
        public static extern short MCF_Get_Input_Net(ref uint All_Input_Logic1, ref uint All_Input_Logic2, ushort StationNumber = 0);
        //2.5 通用IO按位输入函数                               宏定义2.4.1                      宏定义2.4.2                     [0,99] 
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Get_Input_Bit_Net")]
        public static extern short MCF_Get_Input_Bit_Net(ushort Bit_Input_Number, ref ushort Bit_Input_Logic, ushort StationNumber = 0);

        /********************************************************************************************************************************************************************
                                                              3 轴专用输入输出函数
        ********************************************************************************************************************************************************************/
        //3.1 伺服使能设置函数                              						 宏定义0.0    宏定义3.1          [0,99] 
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Set_Servo_Enable_Net")]
        public static extern short MCF_Set_Servo_Enable_Net(ushort Axis, ushort Servo_Logic, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Get_Servo_Enable_Net")]
        public static extern short MCF_Get_Servo_Enable_Net(ushort Axis, ref ushort Servo_Logic, ushort StationNumber = 0);
        //3.2 伺服报警复位设置函数                         							 宏定义0.0    宏定义3.2           [0,99] 
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Set_Servo_Alarm_Reset_Net")]
        public static extern short MCF_Set_Servo_Alarm_Reset_Net(ushort Axis, ushort Alarm_Logic, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Get_Servo_Alarm_Reset_Net")]
        public static extern short MCF_Get_Servo_Alarm_Reset_Net(ushort Axis, ref ushort Alarm_Logic, ushort StationNumber = 0);
        //3.3 伺服报警输入获取函数                         							 宏定义0.0    宏定义3.3                    [0,99] 
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Get_Servo_Alarm_Net")]
        public static extern short MCF_Get_Servo_Alarm_Net(ushort Axis, ref ushort Servo_Alarm_State, ushort StationNumber = 0);
        /********************************************************************************************************************************************************************
                                                              4 轴设置函数
        ********************************************************************************************************************************************************************/
        //4.1 脉冲通道输出设置函数                        							 宏定义0.0    宏定义4.1  [0,99] 
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Set_Pulse_Mode_Net")]
        public static extern short MCF_Set_Pulse_Mode_Net(ushort Axis, uint Pulse_Mode, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Get_Pulse_Mode_Net")]
        public static extern short MCF_Get_Pulse_Mode_Net(ushort Axis, ref uint Pulse_Mode, ushort StationNumber = 0);
        //4.2 位置设置函数 															 宏定义0.0    [-2^31,(2^31-1)]    [0,99] 
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Set_Position_Net")]
        public static extern short MCF_Set_Position_Net(ushort Axis, int Position, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Get_Position_Net")]
        public static extern short MCF_Get_Position_Net(ushort Axis, ref int Position, ushort StationNumber = 0);
        //4.3 编码器设置函数                          								 宏定义0.0    [-2^31,(2^31-1)]  [0,99] 
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Set_Encoder_Net")]
        public static extern short MCF_Set_Encoder_Net(ushort Axis, int Encoder, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Get_Encoder_Net")]
        public static extern short MCF_Get_Encoder_Net(ushort Axis, ref int Encoder, ushort StationNumber = 0);
        //4.4 速度获取                            									 宏定义0.0    [-2^15,(2^15-1)]      [-2^15,(2^15-1)]        [0,99] 
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Get_Vel_Net")]
        public static extern short MCF_Get_Vel_Net(ushort Axis, ref double Command_Vel, ref double Encode_Vel, ushort StationNumber = 0);
        /********************************************************************************************************************************************************************
                                                              5 轴硬件触发停止运动函数
        ********************************************************************************************************************************************************************/
        //5.1 通用IO输入复用:做为紧急停止函数                 					宏定义2.4.1              宏定义5.1      [0,99] 
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Set_EMG_Bit_Net")]
        public static extern short MCF_Set_EMG_Bit_Net(ushort EMG_Input_Number, ushort EMG_Mode, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Set_EMG_Output_Net")]
        public static extern short MCF_Set_EMG_Output_Net(ushort EMG_Input_Number, ushort EMG_Mode, uint EMG_Output, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Set_EMG_Output_Enable_Net")]
        public static extern short MCF_Set_EMG_Output_Enable_Net(ushort Bit_Output_Number, ushort Bit_Output_Enable, ushort StationNumber = 0);
        //5.11 轴状态触发停止运动查询函数                             				宏定义0.0           MC_Retrun.h[0,28]      [0,99]  
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Get_Axis_State_Net")]
        public static extern short MCF_Get_Axis_State_Net(ushort Axis, ref short Reason, ushort StationNumber = 0);
        /********************************************************************************************************************************************************************
                                                              7 点位运动控制函数
        ********************************************************************************************************************************************************************/
        //7.1 速度控制函数                     										 宏定义0.0    (0,10M]P/S   (0,1T]P^2/S    [0,99]
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_JOG_Net")]
        public static extern short MCF_JOG_Net(ushort Axis, double dMaxV, double dMaxA, ushort StationNumber = 0);
        //7.4 单轴曲线函数                                  						 宏定义0.0    [0,dMaxV]      (0,10M]P/S   (0,1T]P^2/S   (0,100T]P^3/S [0,dMaxV]       宏定义0.4       [0,99] 
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Set_Axis_Profile_Net")]
        public static extern short MCF_Set_Axis_Profile_Net(ushort Axis, double dV_ini, double dMaxV, double dMaxA, double dJerk, double dV_end, ushort Profile, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Get_Axis_Profile_Net")]
        public static extern short MCF_Get_Axis_Profile_Net(ushort Axis, ref double dV_ini, ref double dMaxV, ref double dMaxA, ref double dJerk, ref double dV_end, ref ushort Profile, ushort StationNumber = 0);
        //7.5 单轴运动函数                          								 宏定义0.0   [-2^31,(2^31-1)]  宏定义0.3       [0,99] 
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Uniaxial_Net")]
        public static extern short MCF_Uniaxial_Net(ushort Axis, int dDist, ushort Position_Mode, ushort StationNumber = 0);
        //7.6 单轴停止曲线函数                                  					 	宏定义0.0     (0,1T]P^2/S  (0,100T]P^3/S  宏定义0.4       [0,99]   
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Set_Axis_Stop_Profile_Net")]
        public static extern short MCF_Set_Axis_Stop_Profile_Net(ushort Axis, double dMaxA, double dJerk, ushort Profile, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Get_Axis_Stop_Profile_Net")]
        public static extern short MCF_Get_Axis_Stop_Profile_Net(ushort Axis, ref double dMaxA, ref double dJerk, ref ushort Profile, ushort StationNumber = 0);
        //7.7 轴停止函数                             								 宏定义0.0    宏定义7.7              [0,99] 
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Axis_Stop_Net")]
        public static extern short MCF_Axis_Stop_Net(ushort Axis, ushort Axis_Stop_Mode, ushort StationNumber = 0);
        /********************************************************************************************************************************************************************
															  16 光源控制器函数
		********************************************************************************************************************************************************************/
        //16.1 设置光源模式(1MS阻塞函数)                  宏定义16.1.1         0:关闭 1:24V常亮 2:24V频闪 3:48V爆闪  
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Set_Light_Mode_Net")]
        public static extern short MCF_Set_Light_Mode_Net(ushort Channel, ushort Light_Mode, ushort StationNumber = 0);
        //16.2 设置电流保护(1MS阻塞函数)                     宏定义16.1.1           [0,15000] 单位:MA      Over_Current/1000*0.1*11/3.3 * 4095  
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Set_Light_Current_Net")]
        public static extern short MCF_Set_Light_Current_Net(ushort Channel, ushort Max_Current, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Get_Light_Current_1_4_Net")]
        public static extern short MCF_Get_Light_Current_1_4_Net(ref ushort Current_1, ref ushort Current_2, ref ushort Current_3, ref ushort Current_4, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Get_Light_Current_5_8_Net")]
        public static extern short MCF_Get_Light_Current_5_8_Net(ref ushort Current_5, ref ushort Current_6, ref ushort Current_7, ref ushort Current_8, ushort StationNumber = 0);
        //16.3 设置光源输出(1MS阻塞函数)                       宏定义16.1.1           常亮:[0,255] 频闪[0,1000]
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Set_Light_Output_Net")]
        public static extern short MCF_Set_Light_Output_Net(ushort Channel, ushort Light_Size, ushort StationNumber = 0);

        /********************************************************************************************************************************************************************
                                                               17 系统函数
        ********************************************************************************************************************************************************************/
        //17.1 模块版本号                              								[0x00000000,0xFFFFFFFF] [0,99]  
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Get_Version_Net")]
        public static extern short MCF_Get_Version_Net(ref uint Version, ushort StationNumber = 0);
        //17.2 序列号                                         						[0x00000000,0xFFFFFFFF] [0,99]  
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Get_Serial_Number_Net")]
        public static extern short MCF_Get_Serial_Number_Net(ref long Serial_Number, ushort StationNumber = 0);
        //17.3 模块运行时间                                        					[0x00000000,0xFFFFFFFF] [0,99]    单位:秒  
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Get_Run_Time_Net")]
        public static extern short MCF_Get_Run_Time_Net(ref uint Run_Time, ushort StationNumber = 0);
        //17.4 Flash 读写功能目前暂时大小2Kbytes,也即定义一个 unsigned int Array[256] 存放数据
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Flash_Write_Net")]
        public static extern short MCF_Flash_Write_Net(uint Pass_Word_Setup, ref uint Flash_Write_Data, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Flash_Read_Net")]
        public static extern short MCF_Flash_Read_Net(uint Pass_Word_Check, ref uint Flash_Read_Data, ushort StationNumber = 0);
        //17.8 系统定时回调函数
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Set_CallBack_Net")]
        public static extern short MCF_Set_CallBack_Net(int CallBack, uint Time_1MS);



        /********************************************************************************************************************************************************************
                                                              101 关闭自动筛选功能并清除来料,相机,吹气计数      注意:调用该函数后才可以设置102,103,104项目参数    
        ********************************************************************************************************************************************************************/
        //101.1 设置参数前必须调用先关闭筛选功能
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Close_Net")]
        public static extern short MCF_Sorting_Close_Net(ushort StationNumber = 0);
        /********************************************************************************************************************************************************************
                                                              102 设置来料检测功能,用户根据需要设置             注意:自动筛选时禁止设置
        ********************************************************************************************************************************************************************/
        //102.1 物件最大最小尺寸
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Piece_Size_Net")]
        public static extern short MCF_Sorting_Set_Piece_Size_Net(uint Max_Size, uint Min_Size, ushort StationNumber = 0);
        //102.2 物件安全距离,安全时间
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Piece_Place_Net")]
        public static extern short MCF_Sorting_Set_Piece_Place_Net(uint Min_Distance, uint Min_Time_Intervel, ushort StationNumber = 0);
        //102.3 来料检测设置
        //      来料检测使能(默认Bit_Output_0,Bit_Output_1开,0:关 1:开) [Bit_Input_0,Bit_Input_3]
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Input_Enable_Net")]
        public static extern short MCF_Sorting_Set_Input_Enable_Net(ushort Bit_Input_Number, ushort Bit_Input_Enable, ushort StationNumber = 0);
        //      来料检测电平(默认全部低电平,  0:低电平  1:高电平)      [Bit_Input_0,Bit_Input_3]
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Input_Logic_Net")]
        public static extern short MCF_Sorting_Set_Input_Logic_Net(ushort Bit_Input_Number, ushort Bit_Input_Logic, ushort StationNumber = 0);
        //      来料检测编码器(默认全部跟随Axis_1编码器)                  [Bit_Input_0,Bit_Input_3]
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Input_Source_Net")]
        public static extern short MCF_Sorting_Set_Input_Source_Net(ushort Bit_Input_Number, ushort Axis, ushort Source, ushort StationNumber = 0);
        //      来料检测捕获位置(默认全部捕获前部,  0:前部  1:中间)    [Bit_Input_0,Bit_Input_3]
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Input_Position_Net")]
        public static extern short MCF_Sorting_Set_Input_Position_Net(ushort Bit_Input_Number, ushort Mode, ushort StationNumber = 0);

        //102.4 DI00 检测不连续物件强制保持连续
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Piece_Keep_Net")]
        public static extern short MCF_Sorting_Set_Piece_Keep_Net(uint Keep_Length, ushort StationNumber = 0);
        //102.5 DI00 物件检测无料超时停止轴运动(默认时间0,表示不启动)       [0,60000]             &Array[DO00,DO15],0:低 1:高 2:关闭  
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Input_0_TimeOut_Net")]
        public static extern short MCF_Sorting_Set_Input_0_TimeOut_Net(uint Time_1MS, ref uint TimeOut_Output, ushort StationNumber = 0);
        //102.6 通用IO按位输入滤波函数                                      [Bit_Input_0,Bit_Input_1]        [1,100]MS                     [0,99] 
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Set_Input_Filter_Time_Bit_Net")]
        public static extern short MCF_Set_Input_Filter_Time_Bit_Net(ushort Bit_Input_Number, uint Filter_Time_1MS, ushort StationNumber = 0);
        //102.7 多个来料检测绑定相机触发,OK吹气,NG吹气                    [Bit_Input_1]
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Input_Bind_Net")]
        public static extern short MCF_Sorting_Set_Input_Bind_Net(ushort Bit_Input_Number, ushort Camera_Start_Number, ushort Bond_Start_Number, ushort StationNumber = 0);
        /********************************************************************************************************************************************************************
                                                              103 设置OK,NG安全保护参数,用户根据需要设置       注意:自动筛选时禁止设置
        ********************************************************************************************************************************************************************/
        //103.1 物件吹气OK超时停止轴运动(默认时间0,表示不启动)              [0,60000]             &Array[DO00,DO15],0:低 1:高 2:关闭 
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Trig_Blow_OK_TimeOut_Net")]
        public static extern short MCF_Sorting_Set_Trig_Blow_OK_TimeOut_Net(uint Time_1MS, ref uint TimeOut_Output, ushort StationNumber = 0);
        //103.2 物件吹气连续NG停止轴运动(默认时间0,表示不启动)              [0,60000]              &Array[DO00,DO15],0:低 1:高 2:关闭  
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Trig_Blow_NG_NumberOut_Net")]
        public static extern short MCF_Sorting_Set_Trig_Blow_NG_NumberOut_Net(uint NG_Number, ref uint NumberOut_Output, ushort StationNumber = 0);
        //103.3 HMC3432S/HMC3412S 可以设置物件重新检测确定功能,以此判定是否误吹
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Blow_Check_Again_Net")]
        public static extern short MCF_Sorting_Set_Blow_Check_Again_Net(ushort Bit_Input_Number, ushort Bit_Input_Logic, int Input_Position, uint Piece_Size,
                                                                        ushort Blow_OK_Check,
                                                                        ushort Blow_NG_Check,
                                                                        ushort Blow_1_Check,
                                                                        ushort Blow_2_Check,
                                                                        ushort Blow_3_Check,
                                                                        ushort Blow_4_Check,
                                                                        ushort Blow_5_Check,
                                                                        ushort Blow_6_Check,
                                                                        ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Get_Blow_Check_Lose_Number_Net")]
        public static extern short MCF_Sorting_Get_Blow_Check_Lose_Number_Net(ref uint Lose_Number, ushort StationNumber = 0);
        /********************************************************************************************************************************************************************
                                                              104 设置相机吹气参数,用户必须设置                注意:自动筛选时禁止设置
        ********************************************************************************************************************************************************************/
        //104.1 HMC3432S 可以配置相机和吹气个数                             [1,30]                        [1,30]
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Camera_Blow_Config_Net")]
        public static extern short MCF_Sorting_Camera_Blow_Config_Net(ushort Camera_Number, ushort Blow_Number, ushort StationNumber = 0);
        //104.2 设置相机参数                                                                              与检测装置的相对位置   编码器反馈的运行方向 
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Camera_Net")]
        public static extern short MCF_Sorting_Set_Camera_Net(ushort Camera_Number, int Camera_Position, ushort Motion_Dir, ushort Action_Mode, ushort Action_IO, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Camera_Light_Frequency_Net")]
        public static extern short MCF_Sorting_Set_Camera_Light_Frequency_Net(ushort Camera_Number, ushort Light_Number, ushort Frequency_Enable, ushort StationNumber = 0);
        //104.3 设置运动控制卡触发相机拍照后,延时多少毫秒计数增加1,一般设置为 大于 控制卡从触发相机拍照到软件出图像结果需要的时间,
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Trig_Camera_Delay_Count_Net")]
        public static extern short MCF_Sorting_Set_Trig_Camera_Delay_Count_Net(ushort Camera_Number, double Camera_Delay_Count_MS, ushort StationNumber = 0);
        //104.4 设置OK吹气参数
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Blow_OK_Net")]
        public static extern short MCF_Sorting_Set_Blow_OK_Net(int Blow_OK_Position, ushort Motion_Dir, ushort Action_Mode, ushort Action_IO, ushort StationNumber = 0);
        //104.5 设置NG吹气参数
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Blow_NG_Net")]
        public static extern short MCF_Sorting_Set_Blow_NG_Net(int Blow_NG_Position, ushort Motion_Dir, ushort Action_Mode, ushort Action_IO, ushort StationNumber = 0);
        //104.6 设置吹气1到30参数                                          [1,30]                  
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Blow_Net")]
        public static extern short MCF_Sorting_Set_Blow_Net(ushort Blow_Number, int Blow_Position, ushort Motion_Dir, ushort Action_Mode, ushort Action_IO, ushort StationNumber = 0);
        /********************************************************************************************************************************************************************
                                                              105 自动筛选功能启动函数                         注意:调用该函数后禁止设置102,103,104项目参数
        ********************************************************************************************************************************************************************/
        //105.1 筛选启动函数,在设置好参数后启动
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Start_Net")]
        public static extern short MCF_Sorting_Start_Net(ushort Mode = 0, ushort StationNumber = 0);
        /********************************************************************************************************************************************************************
                                                              106 物料图像结果处理
        ********************************************************************************************************************************************************************/
        //106.0 设置相机处理结果最短时间和最大超时时间,允许连续超时最大个数
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Camera_Handle_Time_Net")]
        public static extern short MCF_Sorting_Set_Camera_Handle_Time_Net(ushort Camera_Number, double Handle_Time_1MS, double Handle_TimeOut_1MS, uint Handle_TimeOut_Number, ushort StationNumber = 0);
        //106.1 吹气模式0:用户综合所有相机结果后发送吹气指令 
        //      用户在图像处理回调函数中调用该函数通知图像处理结果
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Camera_Result_Data_Net")]
        public static extern short MCF_Sorting_Set_Camera_Result_Data_Net(ushort Camera_Number, uint Result_Data, ushort StationNumber = 0);
        //      用户开辟线程检查物料最新的图像结果
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Get_Camera_Result_Updata_Net")]
        public static extern short MCF_Sorting_Get_Camera_Result_Updata_Net(ushort Camera_Number, ref uint Piece_Number, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Get_Camera_Result_Buffer_Net")]
        public static extern short MCF_Sorting_Get_Camera_Result_Buffer_Net(ushort Camera_Number, uint Piece_Number, ref uint Result_Buffer, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Get_Camera_Handle_Time_Net")]
        public static extern short MCF_Sorting_Get_Camera_Handle_Time_Net(ushort Camera_Number, uint Piece_Number, ref uint Handle_Time, ushort StationNumber = 0);
        //      用户根据图像结果吹气	
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Trig_Blow_OK_Net")]
        public static extern short MCF_Sorting_Set_Trig_Blow_OK_Net(uint Piece_Number, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Trig_Blow_NG_Net")]
        public static extern short MCF_Sorting_Set_Trig_Blow_NG_Net(uint Piece_Number, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Trig_Blow_Net")]
        public static extern short MCF_Sorting_Set_Trig_Blow_Net(ushort Blow_Number, uint Piece_Number, ushort StationNumber = 0);
        //106.2 吹气模式1:用户直接发送每个相机结果,控制卡自动综合结果后吹气
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Camera_Result_OK_Net")]
        public static extern short MCF_Sorting_Set_Camera_Result_OK_Net(ushort Camera_Number, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Camera_Result_NG_Net")]
        public static extern short MCF_Sorting_Set_Camera_Result_NG_Net(ushort Camera_Number, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Get_Blow_Result_OK_Net")]
        public static extern short MCF_Sorting_Get_Blow_Result_OK_Net(ref uint Result_OK_Number, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Get_Blow_Result_NG_Net")]
        public static extern short MCF_Sorting_Get_Blow_Result_NG_Net(ref uint Result_NG_Number, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Get_Blow_Result_Miss_Net")]
        public static extern short MCF_Sorting_Get_Blow_Result_Miss_Net(ref uint Result_Miss_Number, ushort StationNumber = 0);

        //106.3 吹气模式2:用户不需要发送相机结果,控制卡通过IO综合结果后吹气,全程通过硬件实现,可以直接替代PLC       (0,500]
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Camera_Result_Input_OK_Net")]
        public static extern short MCF_Sorting_Set_Camera_Result_Input_OK_Net(ushort Camera_Number, ushort Input_Number, ushort Logic, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Set_Camera_Result_Input_NG_Net")]
        public static extern short MCF_Sorting_Set_Camera_Result_Input_NG_Net(ushort Camera_Number, ushort Input_Number, ushort Logic, ushort StationNumber = 0);
        /********************************************************************************************************************************************************************
                                                              107 物件,相机,吹气状态监测函数
        ********************************************************************************************************************************************************************/
        //107.0 筛选监测函数
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Get_State_Net")]
        public static extern short MCF_Sorting_Get_State_Net(ref ushort State, ushort StationNumber = 0);

        //107.1 获取DI00物件不合格计数个数
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Get_Piece_Pass_Net")]
        public static extern short MCF_Sorting_Get_Piece_Pass_Net(ushort Piece_Input_Number, ref uint Piece_Pass, ushort StationNumber = 0);
        //107.2 获取DI00物件计数个数
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Get_Piece_State_Net")]
        public static extern short MCF_Sorting_Get_Piece_State_Net(ushort Piece_Input_Number,        //物件计数的输入端口号 
                                                                    ref uint Piece_Find,             //物件匹配统计数量
                                                                    ref uint Piece_Size,             //物件大小,10组
                                                                    ref uint Piece_Distance_To_next, //物件间距,10组
                                                                    ref uint Piece_Cross_Camera,     //物件经过所有相机个数	
                                                                    ushort StationNumber = 0);
        //107.3 获取判断控制卡触发相机拍照计数,图像结果输出结果一定要先于延时后的控制卡相机拍照计数,而且要一一对应,否则做为图像异常或者漏拍处理
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Get_Trig_Camera_Count_Net")]
        public static extern short MCF_Sorting_Get_Trig_Camera_Count_Net(ushort Camera_Number, ref uint Trig_Camera_Count, ushort StationNumber = 0);
        //107.4 获取OK,NG触发计数
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Get_Trig_Blow_NG_Count_Net")]
        public static extern short MCF_Sorting_Get_Trig_Blow_NG_Count_Net(ref uint Trig_Blow_NG_Count, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Get_Trig_Blow_OK_Count_Net")]
        public static extern short MCF_Sorting_Get_Trig_Blow_OK_Count_Net(ref uint Trig_Blow_OK_Count, ushort StationNumber = 0);
        //107.5 获取OK,NG漏触发计数
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Get_Lose_Blow_NG_Count_Net")]
        public static extern short MCF_Sorting_Get_Lose_Blow_NG_Count_Net(ref uint Lose_Blow_NG_Count, ushort StationNumber = 0);
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Get_Lose_Blow_OK_Count_Net")]
        public static extern short MCF_Sorting_Get_Lose_Blow_OK_Count_Net(ref uint Lose_Blow_OK_Count, ushort StationNumber = 0);
        //107.6 获取气阀吹气计数
        [DllImport("MCDLL_NET.DLL", EntryPoint = "MCF_Sorting_Get_Trig_Blow_Count_Net")]
        public static extern short MCF_Sorting_Get_Trig_Blow_Count_Net(ushort Blow_Number, ref uint Trig_Blow_Count, ushort StationNumber = 0);

    }
}