⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 apci1710_chrono.c

📁 最新版comedi的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
			  				*pul_ChronoValue= inl(devpriv->s_BoardInfos.				 ui_Address + 4 + (64 * b_ModulNbr));			  if (*pul_ChronoValue != 0)			     {			     *pul_ChronoValue = *pul_ChronoValue - 1;			     }			  }		       else			  {			  /*************************/			  /* Test if timeout occur */			  /*************************/			  if ((*pb_ChronoStatus != 3) && (dw_TimeOut == ui_TimeOut) && (ui_TimeOut != 0))			     {			     /*****************/			     /* Timeout occur */			     /*****************/			     *pb_ChronoStatus = 4;			     }			  }		     		    }		 else		    {		    /******************************/		    /* Timeout parameter is wrong */		    /******************************/                    DPRINTK("Timeout parameter is wrong\n");		    i_ReturnValue = -5;		    }		 }	      else		 {		 /*******************************/		 /* Chronometer not initialised */		 /*******************************/		 DPRINTK("Chronometer not initialised\n");		 i_ReturnValue = -4;		 }	      }	   else	      {	      /******************************************/	      /* The module is not a Chronometer module */	      /******************************************/	      DPRINTK("The module is not a Chronometer module\n");		      i_ReturnValue = -3;	      }	   }	else	   {	   /***********************/	   /* Module number error */	   /***********************/	   DPRINTK("Module number error\n");	   i_ReturnValue = -2;	   }	return (i_ReturnValue);	}/*+----------------------------------------------------------------------------+| Function Name     : _INT_ i_APCI1710_ConvertChronoValue                    ||                               (BYTE_     b_BoardHandle,                    ||                                BYTE_     b_ModulNbr,                       ||                                ULONG_   ul_ChronoValue,                    ||                                PULONG_ pul_Hour,                           ||                                PBYTE_   pb_Minute,                         ||                                PBYTE_   pb_Second,                         ||                                PUINT_  pui_MilliSecond,                    ||                                PUINT_  pui_MicroSecond,                    ||                                PUINT_  pui_NanoSecond)                     |+----------------------------------------------------------------------------+| Task              : Convert the chronometer measured timing                ||                     (ul_ChronoValue) in to h, mn, s, ms, µs, ns.           |+----------------------------------------------------------------------------+| Input Parameters  : BYTE_   b_BoardHandle : Handle of board APCI-1710      ||                     BYTE_   b_ModulNbr    : Selected module number (0 to 3)||                     ULONG_ ul_ChronoValue : Measured chronometer timing    ||                                             value.                         ||                                             See"i_APCI1710_ReadChronoValue"|+----------------------------------------------------------------------------+| Output Parameters : PULONG_   pul_Hour        : Chronometer timing hour    ||                     PBYTE_     pb_Minute      : Chronometer timing minute  ||                     PBYTE_     pb_Second      : Chronometer timing second  ||                     PUINT_    pui_MilliSecond  : Chronometer timing mini   ||                                                 second                     ||                     PUINT_    pui_MicroSecond : Chronometer timing micro   ||                                                 second                     ||                     PUINT_    pui_NanoSecond  : Chronometer timing nano    ||                                                 second                     |+----------------------------------------------------------------------------+| Return Value      :  0: No error                                           ||                     -1: The handle parameter of the board is wrong         ||                     -2: Module selection wrong                             ||                     -3: The module is not a Chronometer module             ||                     -4: Chronometer not initialised see function           ||                         "i_APCI1710_InitChrono"                            |+----------------------------------------------------------------------------+*/INT i_APCI1710_ConvertChronoValue     (comedi_device *dev,					 BYTE     b_ModulNbr,					 ULONG   ul_ChronoValue,					 PULONG pul_Hour,					 PBYTE   pb_Minute,					 PBYTE   pb_Second,					 PUINT  pui_MilliSecond,					 PUINT  pui_MicroSecond,					 PUINT  pui_NanoSecond)	{	INT    i_ReturnValue = 0;	double d_Hour;	double d_Minute;	double d_Second;	double d_MilliSecond;	double d_MicroSecond;	double d_NanoSecond;		/**************************/	/* Test the module number */	/**************************/	if (b_ModulNbr < 4)	   {	   /***********************/	   /* Test if chronometer */	   /***********************/	   if ((devpriv->		s_BoardInfos.		dw_MolduleConfiguration [b_ModulNbr] & 0xFFFF0000UL) == APCI1710_CHRONOMETER)	      {	      /***********************************/	      /* Test if chronometer initialised */	      /***********************************/	      if (devpriv->		  s_ModuleInfo [b_ModulNbr].		  s_ChronoModuleInfo.		  b_ChronoInit == 1)		 {		 fpu_begin ();		 		    d_Hour = (double) ul_ChronoValue * (double) devpriv->								s_ModuleInfo [b_ModulNbr].								s_ChronoModuleInfo.								d_TimingInterval;		    switch (devpriv->			    s_ModuleInfo [b_ModulNbr].			    s_ChronoModuleInfo.			    b_TimingUnit)		       {		       case 0:			    d_Hour = d_Hour / (double) 1000.0;		       case 1:			    d_Hour = d_Hour / (double) 1000.0;		       case 2:			    d_Hour = d_Hour / (double) 1000.0;		       case 3:			    d_Hour = d_Hour / (double) 60.0;		       case 4:			    /**********************/			    /* Calculate the hour */			    /**********************/			    d_Hour    = d_Hour / (double) 60.0;			    *pul_Hour = (ULONG) d_Hour;			    /************************/			    /* Calculate the minute */			    /************************/			    d_Minute   = d_Hour - *pul_Hour;			    d_Minute   = d_Minute * 60;			    *pb_Minute = (BYTE) d_Minute;			    /************************/			    /* Calculate the second */			    /************************/			    d_Second   = d_Minute - *pb_Minute;			    d_Second   = d_Second * 60;			    *pb_Second = (BYTE) d_Second;			    /*****************************/			    /* Calculate the mini second */			    /*****************************/			    d_MilliSecond    = d_Second - *pb_Second;			    d_MilliSecond    = d_MilliSecond * 1000;			    *pui_MilliSecond = (UINT) d_MilliSecond;			    /******************************/			    /* Calculate the micro second */			    /******************************/			    d_MicroSecond    = d_MilliSecond - *pui_MilliSecond;			    d_MicroSecond    = d_MicroSecond * 1000;			    *pui_MicroSecond = (UINT) d_MicroSecond;			    /******************************/			    /* Calculate the micro second */			    /******************************/			    d_NanoSecond    = d_MicroSecond - *pui_MicroSecond;			    d_NanoSecond    = d_NanoSecond * 1000;			    *pui_NanoSecond = (UINT) d_NanoSecond;			    break;		       }		    		 fpu_end ();		 }	      else		 {		 /*******************************/		 /* Chronometer not initialised */		 /*******************************/		 DPRINTK("Chronometer not initialised\n");		 i_ReturnValue = -4;		 }	      }	   else	      {	      /******************************************/	      /* The module is not a Chronometer module */	      /******************************************/	      DPRINTK("The module is not a Chronometer module\n");		      i_ReturnValue = -3;	      }	   }	else	   {	   /***********************/	   /* Module number error */	   /***********************/	   DPRINTK("Module number error\n");		   i_ReturnValue = -2;	   }	return (i_ReturnValue);	}/*+----------------------------------------------------------------------------+| Function Name     : INT i_APCI1710_InsnBitsChronoDigitalIO(comedi_device *dev,comedi_subdevice *s,	comedi_insn *insn,lsampl_t *data)                    |+----------------------------------------------------------------------------+| Task              : Sets the output witch has been passed with the         ||                     parameter b_Channel. Setting an output means setting an||                     output high.                                           |+----------------------------------------------------------------------------+| Input Parameters  : BYTE_ b_BoardHandle   : Handle of board APCI-1710      ||                     BYTE_ b_ModulNbr      : Selected module number (0 to 3)||                     BYTE_ b_OutputChannel : Selection from digital output  ||                           CR_CHAN()                  channel (0 to 2)               ||                                              0 : Channel H                 ||                                              1 : Channel A                 ||                                              2 : Channel B                 |+----------------------------------------------------------------------------+| Output Parameters : -                                                      |+----------------------------------------------------------------------------+| Return Value      :  0: No error                                           ||                     -1: The handle parameter of the board is wrong         ||                     -2: Module selection wrong                             ||                     -3: The module is not a Chronometer module             ||                     -4: The selected digital output is wrong               ||                     -5: Chronometer not initialised see function           ||                         "i_APCI1710_InitChrono"                            |+----------------------------------------------------------------------------+*//*+----------------------------------------------------------------------------+| Function Name     : _INT_ i_APCI1710_SetChronoChlOff                       ||                               (BYTE_  b_BoardHandle,                       ||                                BYTE_  b_ModulNbr,                          ||                                BYTE_  b_OutputChannel)                     |+----------------------------------------------------------------------------+| Task              : Resets the output witch has been passed with the       ||                     parameter b_Channel. Resetting an output means setting ||                     an output low.                                         |+----------------------------------------------------------------------------+| Input Parameters  : BYTE_ b_BoardHandle   : Handle of board APCI-1710                         data[0] : Chl ON, Chl OFF , Chl Read , Port Read 						         |                     BYTE_ b_ModulNbr  CR_AREF    : Selected module number (0 to 3)||                     BYTE_ b_OutputChannel CR_CHAN : Selection from digital output  ||                                             channel (0 to 2)               ||                                              0 : Channel H                 ||                                              1 : Channel A                 ||                                              2 : Channel B                 |+----------------------------------------------------------------------------+| Output Parameters : -                                                      |+----------------------------------------------------------------------------+| Return Value      :  0: No error                                           ||                     -1: The handle parameter of the board is wrong         ||                     -2: Module selection wrong                             ||                     -3: The module is not a Chronometer module             ||                     -4: The selected digital output is wrong               ||                     -5: Chronometer not initialised see function           ||                         "i_APCI1710_InitChrono"                            |+----------------------------------------------------------------------------+*//*+----------------------------------------------------------------------------+| Function Name     : _INT_ i_APCI1710_ReadChronoChlValue                    ||                               (BYTE_   b_BoardHandle,                      ||                                BYTE_   b_ModulNbr,                         ||                                BYTE_   b_InputChannel,                     ||                                PBYTE_ pb_ChannelStatus)                    |+----------------------------------------------------------------------------+| Task              : Return the status from selected digital input          ||                     (b_InputChannel) from selected chronometer             ||                     module (b_ModulNbr).                                   |+----------------------------------------------------------------------------+| Input Parameters  : BYTE_ b_BoardHandle   : Handle of board APCI-1710      ||                     BYTE_ b_ModulNbr      : Selected module number (0 to 3)||                     BYTE_ b_InputChannel  : Selection from digital input   ||                                             channel (0 to 2)               ||                                   CR_CHAN()             0 : Channel E               ||                                                1 : Channel F               ||                                                2 : Channel G          

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -