case 9600:
termioNew.c_cflag|=B9600;
break;
default:
return (serBaudBad);
}switch( bByteSize )
{
case 5:
termioNew.c_cflag|=CS5;
break;
case 6:
termioNew.c_cflag|=CS6;
break;
case 7:
termioNew.c_cflag|=CS7;
break;
case 8:
termioNew.c_cflag|=CS8;
break;
default:
return (serByteSizeBad);
}switch( bStopBits )
{
case 1:
break;
case 2:
termioNew.c_cflag|=CSTOPB;
break;
default:
return (serStopBitsBad);
}switch( bParity )
{
case NOPARITY:
break;
case ODDPARITY:
termioNew.c_cflag|=PARODD;
break;
case EVENPARITY:
termioNew.c_cflag|=PARENB;
break;
default:
return (serParityBad);
}
termioNew.c_cflag |= CLOCAL;
if( bOperFlag & OP_WRITE )
{
ioctl(fdOut, TCGETA, &pSer->termioOld);
ioctl(fdOut, TCSETA, &termioNew);
}if(bOperFlag & OP_READ)
{
ioctl( fdIn, TCGETA, &pSer->termioOld );
termioNew.c_cflag|=CREAD;
ioctl( fdIn, TCSETA, &termioNew);
}if(bOperFlag & OP_READ)
{
if( setvbuf( pSer->fpIn,(char *)pSer->pusInBuffer,_IOFBF,uiInQueueLen ))
return (serSetInBuffer);
fflush(pSer->fpIn);
}
if(bOperFlag & OP_WRITE)
{
if( setvbuf(pSer->fpOut,(char *)pSer->pusOutBuffer,_IOFBF,uiOutQueueLen ))
return (serSetOutBuffer);
fflush(pSer->fpOut);
}
pSer->bOperFlag = bOperFlag;iSerNum;return (serHandle);
}
/**************************************************************
Function : receive bytes from serial comport
Param In :
iHandle : handle returned by serOpen
uiRecvCnt: bytes of accii buffer
iTimeOut : timeout if equals 0 use default timeout
Param Out :
psBuf : ascii buffer which will be received
Return Code:
=0 : OK
<0 : serTimeOut
serRecvFail
***************************************************************/
int serReceiveBuf( int iHandle, char *psBuf, uint uiRecvCnt, int iTimeOut )
{
int iCnt, iRet;
int fdIn;
fdIn = fileno( pSerial[iHandle]->fpIn );if( setjmp(tohere2) ) return (serTimeOut);
signal( SIGALRM, alrm2 );
if( iTimeOut>0 ) alarm(iTimeOut);
else if( iTimeOut==0 ) alarm( pSerial[iHandle]->iDefTimeOut );【UNIX下用C写MODEM传输程序】 for( iCnt=0; iCnt
while( ( iRet=read(fdIn,psBuf iCnt,1) ) == 0 );
if( iRet<0 )
{
alarm(0);
return (serRecvFail);
}
}
alarm(0);
return (serOK);
}
推荐阅读
- 什么叫微写作
- UnixWare 7.1安装
- 824除以4的竖式怎么写 824÷4用竖式计算
- UNIX SHELL脚本编程
- 对话 UNIX,第 4 部分: UNIX 所有权和权限管理
- informix-4gl 7.2编写的通用菜单函数
- UNIX 常用的指令
- 不同的类UNIX操作系统密码破解方法介绍
- 对话 UNIX: 启动
- 在 UNIX 中安装和配置开发 Web 服务器
