📄 fuart.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 + -