日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

UNIX下用C寫MODEM傳輸程序

瀏覽:188日期:2024-06-11 15:37:06

首先要打開串口,然后通過串口來向modem發at指令來進行通訊,編程的時候要特別注意要用適當的方式打開串口,其實對TTY的操作跟一般的文件操作沒有特別的區別,區別就是在于串口通訊需要設置串口屬性.

/************************************************************** Function : open serial comport Param In : pszDevName : comport device name, eg.'/dev/tty1a' uiBaud : baudrate. 50 -- 9600 bParity : parity. NOPRAITY, ODDPARITY, EVENPARITY bByteSize : size of a byte. 5 - 8 bStopBits : stop bits. 1 - 2 bFlowControl : flow control. NOFLOW, CTSRTS, XONXOFF uiOutQueueLen : length of output buffer queue uiInQueueLen : length of input buffer queue iDefTimeOut : default timeout bOperFlag : OP_READ , OP_WRITE Param Out : none Return Code >=0 : success, handle of this comport <0 : serOpenMany serAllocMem serOpenInFp serOpenOutFp serFlowCtrlBad serBaudBad serByteSizeBad serStopBitsBad serParityBad serSetInBuffer serSetOutBuffer ***************************************************************/ int serOpen(char *pszDevName, uint uiBaud, uchar bParity, uchar bByteSize, uchar bStopBits, uchar bFlowControl, uint uiOutQueueLen, uint uiInQueueLen, int iDefTimeOut, uchar bOperFlag ) { struct serialDef *pSer; struct termio termioNew; int i, fdIn, fdOut; int serHandle;

if( iSerNum == -1 ) // initial struct pSerial { for( i=0; i<MAXSERIALNUM; i++ ) pSerial[i] = NULL; iSerNum = 0; }

if( iSerNum >= MAXSERIALNUM ) return (serOpenMany);

i = 0; while( i<MAXSERIALNUM && pSerial[i]!=NULL ) i++; if( i >= MAXSERIALNUM ) return (serOpenMany); pSerial[i] = (struct serialDef *)malloc(sizeof(struct serialDef)); if( pSerial[i] == NULL ) return (serAllocMem);

pSer = pSerial[i]; pSer->pusInBuffer = (uchar *)malloc(uiInQueueLen); if( pSer->pusInBuffer==NULL ) { free(pSer); return (serAllocMem); } pSer->pusOutBuffer = (uchar *)malloc(uiOutQueueLen); if( pSer->pusOutBuffer==NULL ) { free(pSer->pusInBuffer); free(pSer); return (serAllocMem); } pSer->uiInQueueLen = uiInQueueLen; pSer->uiOutQueueLen = uiOutQueueLen;

serHandle = i;

if( bOperFlag & OP_READ ) { if( (pSer->fpIn=fopen(pszDevName, 'rb')) == NULL ) return (serOpenInFp); fdIn = fileno(pSer->fpIn); ioctl( fdIn, TCGETA, &termioNew ); }

if( bOperFlag & OP_WRITE ) { if( (pSer->fpOut=fopen(pszDevName, 'wb')) == NULL ) return (serOpenOutFp); fdOut = fileno(pSer->fpOut); ioctl( fdOut, TCGETA, &termioNew ); }

pSer->iDefTimeOut = iDefTimeOut;

/* termioNew.c_iflag=0; termioNew.c_oflag=0; termioNew.c_lflag=0; termioNew.c_line=0; termioNew.c_cflag = ( 0x0CBD&~CBAUD | CTSFLOW | RTSFLOW ) ; termioNew.c_cc[VEOF]=1; termioNew.c_cc[VEOL]=0; */

termioNew.c_cflag = ( 0x0CBD&~CBAUD ) ; termioNew.c_cc[VMIN] = 1; // A read operation is not satisfIEd until receive // one character termioNew.c_cc[VTIME] = 0; // A read operation will waiting

switch( bFlowControl ) { case NOFLOW: break; case CTSRTS: termioNew.c_cflag |= CTSFLOW | RTSFLOW; break; case XONXOFF: termioNew.c_iflag |= IXON | IXOFF; break; default : return (serFlowCtrlBad); }//switch;

switch( uiBaud ) { case 50: termioNew.c_cflag|=B50; break; case 75: termioNew.c_cflag|=B75; break; case 110: termioNew.c_cflag|=B110; break; case 134: termioNew.c_cflag|=B134; break; case 150: termioNew.c_cflag|=B150; break; case 200: termioNew.c_cflag|=B200; break; case 300: termioNew.c_cflag|=B300; break; case 600: termioNew.c_cflag|=B600; break; case 1200: termioNew.c_cflag|=B1200; break; case 1800: termioNew.c_cflag|=B1800; break; case 2400: termioNew.c_cflag|=B2400; break; case 4800: termioNew.c_cflag|=B4800; break; 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 );

for( iCnt=0; iCnt<uiRecvCnt; iCnt++ ) { while( ( iRet=read(fdIn,psBuf+iCnt,1) ) == 0 ); if( iRet<0 ) { alarm(0); return (serRecvFail); } } alarm(0); return (serOK); }

標簽: Unix系統
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
天堂精品久久久久| 亚洲精品韩国| 久久亚州av| 久久影视三级福利片| 嫩呦国产一区二区三区av| 麻豆精品在线| 成人污污视频| 色吊丝一区二区| 久久久噜噜噜| 影院欧美亚洲| 亚洲精品国产日韩| 喷白浆一区二区| 日本欧美一区二区在线观看| 日韩国产一区二| 久久av影视| 天堂а√在线最新版中文在线| 亚洲精品在线影院| 亚洲激情久久| 一级欧美视频| 国产精品欧美日韩一区| 国产粉嫩在线观看| 欧美二区视频| 一区二区三区四区在线观看国产日韩| 亚洲精品成人一区| 久久av免费| 99久久久国产精品美女| 亚洲精品一二三区区别| 日韩一区二区三免费高清在线观看 | 国产精品伊人| 日产精品一区二区| 国产视频久久| 久久国产免费看| 91麻豆国产自产在线观看亚洲| 久久要要av| 亚洲精品人人| 精品精品99| 欧美日韩在线播放视频| 巨乳诱惑日韩免费av| 国产日韩一区二区三免费高清 | 麻豆成人91精品二区三区| 福利欧美精品在线| 另类激情亚洲| 麻豆精品视频在线观看视频| 1000部精品久久久久久久久| 亚洲人www| 欧美香蕉视频| 天堂av一区| 天堂8中文在线最新版在线| 最新国产精品视频| 精品国产亚洲一区二区三区| 欧美日韩国产在线观看网站 | 国产字幕视频一区二区| 欧美日韩1区2区3区| 欧美三级精品| 国产欧美日韩视频在线| av一区二区高清| 国产日韩欧美一区二区三区在线观看| 久久电影tv| 日韩综合小视频| 久久久一二三| 国产乱子精品一区二区在线观看| 久久久一本精品| 青青草91视频| 亚洲精品一二三区区别| 国产成人免费av一区二区午夜| 性欧美长视频| 日韩欧美网址| 欧美视频精品全部免费观看| 亚洲高清二区| 国产一区二区三区探花| 热久久久久久久| 日韩精品欧美激情一区二区| 国产日韩欧美一区二区三区在线观看| 欧美日韩国产欧| 国产成人免费精品| 青青草精品视频| 欧美.日韩.国产.一区.二区| 国产毛片久久久| 日韩在线观看一区二区| 91精品一区二区三区综合在线爱| 欧美激情网址| 日韩不卡手机在线v区| aⅴ色国产欧美| 久久久久美女| 日韩综合一区| 欧美成人精品一级| 日本少妇精品亚洲第一区| 不卡在线一区二区| 日韩在线综合| 久久精品国产99国产精品| 色综合视频一区二区三区日韩| 999久久久亚洲| 日韩a一区二区| 麻豆精品国产91久久久久久| 日韩美女国产精品| 六月婷婷一区| 午夜日本精品| 久久精品国产大片免费观看| 日韩专区精品| 麻豆视频在线观看免费网站黄| 国产精品一区二区精品| 日韩精品导航| 日韩有吗在线观看| 蜜臀va亚洲va欧美va天堂| 在线成人直播| 欧美精品一区二区久久| 日韩高清成人| 正在播放日韩精品| 超碰在线99| 欧美国产中文高清| 国产日韩欧美在线播放不卡| 日本强好片久久久久久aaa| 日韩免费精品| 久久国内精品| 国产免费av国片精品草莓男男 | 婷婷精品久久久久久久久久不卡| 国产精品毛片在线看| 欧美女激情福利| 国产精品美女久久久| 国产日韩综合| 国产精品毛片在线| 丝袜美腿亚洲一区| 在线精品国产亚洲| 亚洲精品一级| 国产欧美视频在线| 麻豆视频久久| 成人台湾亚洲精品一区二区| 色爱综合网欧美| 中文字幕在线官网| 日本美女一区| 欧美不卡在线| 蜜臀va亚洲va欧美va天堂| 日韩和欧美一区二区三区| 国产精品亚洲产品| 国产videos久久| 伊人久久视频| 欧美sss在线视频| 免费视频国产一区| 免费不卡在线观看| 久久国产婷婷国产香蕉| 红杏一区二区三区| 亚洲91视频| 日韩精品一级中文字幕精品视频免费观看| 综合干狼人综合首页| 国产乱码精品一区二区三区亚洲人| 精品资源在线| 精品捆绑调教一区二区三区| 蜜臀91精品国产高清在线观看| 丝袜美腿成人在线| 久久激五月天综合精品| 嫩呦国产一区二区三区av| 国产资源在线观看入口av| 亚洲一级影院| 美国三级日本三级久久99| 国产日韩高清一区二区三区在线 | 卡一卡二国产精品| 日韩不卡免费高清视频| 欧美一级专区| 国产精品一级在线观看| 国产91在线播放精品| 一区二区小说| 丝袜亚洲另类欧美| 国产免费久久| 九九精品调教| 亚洲日本欧美| 国产一区二区三区四区五区传媒| 亚洲婷婷免费| 日韩一区二区三区高清在线观看| 精品国产一区二区三区2021| 免费观看不卡av| 久久黄色影视| 免费国产自久久久久三四区久久| 日韩和欧美的一区| | 国产视频网站一区二区三区| 精品国产鲁一鲁****| 亚洲精品va| 欧美黄色精品| 影音先锋久久| 国产经典一区| 婷婷激情图片久久| 国产欧美丝祙| 91久久久精品国产| 国产精品美女午夜爽爽| 久久国产中文字幕| 91九色综合| 亚洲国内精品| 久久精品日韩欧美| 免费观看日韩电影| 日韩欧美一区二区三区在线观看 | 六月婷婷一区| 色在线视频观看| 欧美日韩va| 国产91一区| 欧美韩一区二区| 亚洲97av| 亚洲二区三区不卡| 激情久久99| 日韩有吗在线观看| 激情自拍一区|