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

📄 fuart.c

📁 这是一个潜入式开发的c语言代码
💻 C
字号:

/*#########################################################################

  Copyright (c) 2005,
  All rights reserved.
  
  File name     :fsrs.c
  Description   :series c

  Version       :1.00
  Author        :
  Complete Date :

  Function List :
  History       :
  _________________________________________________________________________
  DATE          AUTHOR                  VERSION    DESCRIBE
  -------------------------------------------------------------------------
  2006-04-24    zhangliangzhao          Ver0.01    Create
  2006-05-14    zhangliangzhao          Ver0.10    Add fiio(interface)

#########################################################################*/


#include "fuart.h"
#include "fiio.h"


struct termios oldtio,newtio;
FIIO FioUart;

FIIO* UartCreate(UDATA aFudUartInf)
{

	
/* init uart i/o config */	
	FioUart.pObj       =  (FUART*)aFudUartInf.p;
	FioUart.pConfig    =  UartConfig   ;
	FioUart.pOpen      =  UartOpen     ;
	FioUart.pRead      =  UartRead     ;
	FioUart.pWrite     =  UartWrite    ;
	FioUart.pClose     =  UartClose    ;

	DBG_MSG2("%x \n",FioUart.pOpen);
	DBG_MSG2("%x \n",UartOpen);
	                  
	return &FioUart;	
}          
	
Boolean UartDestroy (OBJECT *pFuc)
{}
          
          

           

Boolean UartConfig(OBJECT *pFuc, UDATA aFudUartInf)
{        
	 FUART *pconf , *pFuconf;
	 ASSERT(pFuc == NULL);
	 /*todo: type check  */

	 pconf   = (FUART*)aFudUartInf.p;
	 tcgetattr(pconf->rHuart,&oldtio);               /* 储存目前的设定 */

	 bzero(&newtio, sizeof(newtio));
	 newtio.c_cflag        = pconf->n16C_cflag  ;
	 newtio.c_iflag        = pconf->N16C_iflag  ;
	 newtio.c_oflag        = pconf->n16C_oflag  ;
	 newtio.c_lflag        = pconf->N16C_lflag  ;
	 newtio.c_cc[VTIME]    = pconf->n16Vtime    ;
	 newtio.c_cc[VMIN]     = pconf->N16Vvmin    ;


	 tcflush(pconf->rHuart, TCIFLUSH);
	 tcsetattr(pconf->rHuart,TCSANOW,&newtio);

	 return True;
}


Boolean UartOpen(OBJECT *pFuc)
{

	FUART *pconf ;
	ASSERT(pFuc == NULL);
	 /*todo: type check  */

	pconf   = (FUART*)pFuc;
	pconf->rHuart = open(pconf->pbUartName, O_RDWR | O_NOCTTY | O_NONBLOCK); 
	if ((pconf->rHuart) <0) 
	{
		perror(pconf->pbUartName); 
		return False;
	}
	return True;
}

REGINT  UartRead    (OBJECT *pFuc,BYTE *pBuff, REGINT aSize)
{
	REGINT res, i;
	FUART *pconf ;
	ASSERT(pFuc == NULL);
	 /*todo: type check  */
	pconf   = (FUART*)pFuc;

#ifdef __F_DEBUG__
	printf("\nReading...\n");
#endif
 	res = read(pconf->rHuart, pBuff, aSize);
#ifdef __F_DEBUG__
 		printf("\n%d read:\n", res);
    for( i = 0 ; i < res ; i++)
    	printf(" %02x", pBuff[i]);      
    printf("\n");
#endif    
	return res;	
}   

REGINT  UartWrite   (OBJECT *pFuc,BYTE *pBuff, REGINT aSize)
{
	REGINT wes, i;
	FUART *pconf ;
	ASSERT(pFuc == NULL);
	 /*todo: type check  */
	pconf   = (FUART*)pFuc;

#ifdef __F_DEBUG__
	printf("\nWriting...\n");
	
#endif	
	wes = write(pconf->rHuart, pBuff, aSize);
#ifdef __F_DEBUG__	
	for( i = 0 ; i < wes ; i++)
	printf(" %02x", pBuff[i]); 
	printf("\n");
#endif
	return wes;	
}
  
Boolean UartClose   (OBJECT *pFuc)
{
	FUART *pconf ;
	ASSERT(pFuc == NULL);
	 /*todo: type check  */
	pconf   = (FUART*)pFuc;
	tcsetattr(pconf->rHuart,TCSANOW,&oldtio);
	close(pconf->rHuart);
	return 1;	
}


⌨️ 快捷键说明

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