📄 apci1710_chrono.c
字号:
*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 + -