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

📄 apci1710_ttl.c

📁 最新版comedi的源码
💻 C
📖 第 1 页 / 共 3 页
字号:
          DPRINTK("Module number error\n");	   i_ReturnValue = -2;	   }	return (i_ReturnValue);	}/*+----------------------------------------------------------------------------+|                            INPUT FUNCTIONS                                 |+----------------------------------------------------------------------------+*//*+----------------------------------------------------------------------------+| Function Name     : _INT_   i_APCI1710_ReadTTLIOChannelValue               ||                                       (BYTE_     b_BoardHandle,            ||                                        BYTE_     b_ModulNbr,               ||                                        BYTE_     b_SelectedPort,           ||                                        BYTE_     b_InputChannel,           ||                                        PBYTE_   pb_ChannelStatus)          |+----------------------------------------------------------------------------+| Task              : Read the status from selected TTL digital input        ||                     (b_InputChannel) +----------------------------------------------------------------------------+| Task              : Read the status from digital input port                ||                     (b_SelectedPort) from selected TTL module (b_ModulNbr) |+----------------------------------------------------------------------------+ +----------------------------------------------------------------------------+| Input Parameters  : BYTE_ b_BoardHandle         : Handle of board APCI-1710||                     BYTE_ b_ModulNbr            : Module number to         ||                                                   configure (0 to 7)       ||                     BYTE_ b_SelectedPort,       : Selection from TTL I/O   ||                                                   port (0 to 2)            ||                                                      0 : Port A selection  ||                                                      1 : Port B selection  ||                                                      2 : Port C selection  ||                                                      3 : Port D selection  ||                     BYTE_ b_InputChannel        : Selection from digital   ||                                                   input ( 0 to 2)        APCI1710_TTL_READCHANNEL  	b_ModulNbr	  = CR_AREF(insn->chanspec);	b_SelectedPort= CR_RANGE(insn->chanspec);	b_InputChannel= CR_CHAN(insn->chanspec);	b_ReadType	  = (BYTE) data[0]; APCI1710_TTL_READPORT|	b_ModulNbr	  = CR_AREF(insn->chanspec);	b_SelectedPort= CR_RANGE(insn->chanspec);	b_ReadType	  = (BYTE) data[0];+----------------------------------------------------------------------------+| Output Parameters : data[0]	PBYTE_  pb_ChannelStatus    : Digital input channel    ||                                                   status                   ||                                                   0 : Channle is not active||                                                   1 : Channle is active    |+----------------------------------------------------------------------------+| Return Value      : 0: No error                                            ||                    -1: The handle parameter of the board is wrong          ||                    -2: The module parameter is wrong                       ||                    -3: The module is not a TTL module                      ||                    -4: The selected TTL input port is wrong                ||                    -5: The selected TTL digital input is wrong             ||                    -6: TTL I/O not initialised                             |+----------------------------------------------------------------------------+*/INT  i_APCI1710_InsnBitsReadTTLIO(comedi_device *dev,comedi_subdevice *s,	comedi_insn *insn,lsampl_t *data)	{	INT    i_ReturnValue = 0;	DWORD dw_StatusReg;	BYTE    b_ModulNbr;	BYTE    b_SelectedPort;	BYTE    b_InputChannel;	BYTE    b_ReadType;	PBYTE   pb_ChannelStatus;	PBYTE  pb_PortValue;				i_ReturnValue = insn->n;	b_ReadType	  = (BYTE) data[0];	b_ModulNbr	  = CR_AREF(insn->chanspec);	b_SelectedPort= CR_RANGE(insn->chanspec);	b_InputChannel= CR_CHAN(insn->chanspec);				/**************************/	/* Test the module number */	/**************************/	if (b_ModulNbr < 4)	   {	   /**************************/	   /* Test if TTL I/O module */	   /**************************/	   if ((devpriv->s_BoardInfos.		dw_MolduleConfiguration [b_ModulNbr] & 0xFFFF0000UL) == APCI1710_TTL_IO)	      {		   switch(b_ReadType)		   {		   case APCI1710_TTL_READCHANNEL:			pb_ChannelStatus = (PBYTE) &data[0];	      /********************************/	      /* Test the TTL I/O port number */	      /********************************/	      if (((b_SelectedPort <= 2) && ((devpriv->s_BoardInfos.					      dw_MolduleConfiguration [b_ModulNbr] & 0xFFFF) == 0x3130)) ||		  ((b_SelectedPort <= 3) && ((devpriv->s_BoardInfos.					     dw_MolduleConfiguration [b_ModulNbr] & 0xFFFF) >= 0x3230)))		 {		 /******************************************/		 /* Test the digital imnput channel number */		 /******************************************/		 if (((b_InputChannel <= 7) && (b_SelectedPort < 3)) ||		     ((b_InputChannel <= 1) && (b_SelectedPort == 3)))		    {		    /******************************************/		    /* Test if the TTL I/O module initialised */		    /******************************************/		    if (devpriv->s_ModuleInfo [b_ModulNbr].			s_TTLIOInfo.			b_TTLInit == 1)		       {		       /***********************************/		       /* Test if TTL port used for input */		       /***********************************/		       if (((devpriv->s_BoardInfos.			     dw_MolduleConfiguration [b_ModulNbr] & 0xFFFF) == 0x3130) ||			   (((devpriv->s_BoardInfos.			      dw_MolduleConfiguration [b_ModulNbr] & 0xFFFF) >= 0x3230) &&			    (devpriv->s_ModuleInfo [b_ModulNbr].			     s_TTLIOInfo.			     b_PortConfiguration [b_SelectedPort] == 0)))			  {			  /**************************/			  /* Read all digital input */			  /**************************/							dw_StatusReg = inl(devpriv->s_BoardInfos.ui_Address + (64 * b_ModulNbr));			  *pb_ChannelStatus = (BYTE) ((dw_StatusReg >> (8 * b_SelectedPort)) >> b_InputChannel) & 1;			  }		       else			  {			  /*******************************/			  /* Selected TTL I/O port error */			  /*******************************/			  DPRINTK("Selected TTL I/O port error\n");			  i_ReturnValue = -4;			  }		       }		    else		       {		       /***************************/		       /* TTL I/O not initialised */		       /***************************/			   DPRINTK("TTL I/O not initialised\n");			       i_ReturnValue = -6;		       }		    }		 else		    {		    /********************************/		    /* Selected digital input error */		    /********************************/			DPRINTK("Selected digital input error\n");		    i_ReturnValue = -5;		    }		 }	      else		 {		 /*******************************/		 /* Selected TTL I/O port error */		 /*******************************/                DPRINTK("Selected TTL I/O port error\n");		 i_ReturnValue = -4;		 }		  break;		  case APCI1710_TTL_READPORT:			  pb_PortValue = (PBYTE) &data[0];			  /********************************/	      		  /* Test the TTL I/O port number */	      		  /********************************/	      if (((b_SelectedPort <= 2) && ((devpriv->s_BoardInfos.					      dw_MolduleConfiguration [b_ModulNbr] & 0xFFFF) == 0x3130)) ||		  ((b_SelectedPort <= 3) && ((devpriv->s_BoardInfos.					      dw_MolduleConfiguration [b_ModulNbr] & 0xFFFF) >= 0x3230)))		 {		 /******************************************/		 /* Test if the TTL I/O module initialised */		 /******************************************/		 if (devpriv->s_ModuleInfo [b_ModulNbr].		     s_TTLIOInfo.		     b_TTLInit == 1)		    {		    /***********************************/		    /* Test if TTL port used for input */		    /***********************************/		    if (((devpriv->s_BoardInfos.			  dw_MolduleConfiguration [b_ModulNbr] & 0xFFFF) == 0x3130) ||			(((devpriv->s_BoardInfos.			   dw_MolduleConfiguration [b_ModulNbr] & 0xFFFF) >= 0x3230) &&			 (devpriv->s_ModuleInfo [b_ModulNbr].			  s_TTLIOInfo.			  b_PortConfiguration [b_SelectedPort] == 0)))                       {		       /**************************/		       /* Read all digital input */		       /**************************/								dw_StatusReg=inl(devpriv->s_BoardInfos.ui_Address + (64 * b_ModulNbr));		       *pb_PortValue = (BYTE) ((dw_StatusReg >> (8 * b_SelectedPort)) & 0xFF);		       }		    else		       {		       /*******************************/		       /* Selected TTL I/O port error */		       /*******************************/                      DPRINTK("Selected TTL I/O port error\n");		       i_ReturnValue = -4;		       }		    }		 else		    {		    /***************************/		    /* TTL I/O not initialised */		    /***************************/			DPRINTK("TTL I/O not initialised\n");		    i_ReturnValue = -5;		    }		 }	      else		 {		 /*******************************/		 /* Selected TTL I/O port error */		 /*******************************/		 DPRINTK("Selected TTL I/O port error\n");			 i_ReturnValue = -4;		 }		  break;		  default:			   printk("Bad ReadType\n");		   		   }//End Switch	      }	   else	      {	      /**********************************/	      /* The module is not a TTL module */	      /**********************************/	      DPRINTK("The module is not a TTL 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_InsnReadTTLIOAllPortValue(comedi_device *dev,comedi_subdevice *s,comedi_insn *insn,lsampl_t *data)              |+----------------------------------------------------------------------------+| Task              : Read the status from all digital input ports           ||                     (port A, port B and port C) from selected TTL          ||		      module (b_ModulNbr) 				     |+----------------------------------------------------------------------------+| Input Parameters  : BYTE_ b_BoardHandle         : Handle of board APCI-1710||                     BYTE_ b_ModulNbr            : Module number to         ||                                                   configure (0 to 3)       |+----------------------------------------------------------------------------+| Output Parameters : PULONG_  pul_PortValue      : Digital TTL inputs port  ||                                                   status                   |+----------------------------------------------------------------------------+| Return Value      : 0: No error                                            ||                    -1: The handle parameter of the board is wrong          ||                    -2: The module parameter is wrong                       ||                    -3: The module is not a TTL module                      ||                    -4: TTL I/O not initialised                             |+----------------------------------------------------------------------------+*/INT i_APCI1710_InsnReadTTLIOAllPortValue(comedi_device *dev,comedi_subdevice *s,comedi_insn *insn,lsampl_t *data)	{	INT    i_ReturnValue = 0;	DWORD dw_StatusReg;	BYTE    b_ModulNbr;        PULONG pul_PortValue;              b_ModulNbr=(BYTE) CR_AREF(insn->chanspec);         i_ReturnValue=insn->n;        pul_PortValue=(PULONG) &data[0]; 

⌨️ 快捷键说明

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