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

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

UNIX下用C寫MODEM傳輸程序

瀏覽:185日期: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久久,三上悠亚国产精品一区二区三区
色婷婷久久久| 日韩精品网站| 精品91久久久久| 欧美日韩三区| 久久av一区| 亚洲精品伊人| 国产图片一区| 老牛国内精品亚洲成av人片| 六月丁香综合在线视频| 四虎成人av| 美女网站视频一区| 国产不卡一区| 久久久久久色 | 日本不卡高清| 国产精品免费不| 成人在线免费观看网站| 日韩精品免费一区二区在线观看 | 亚洲伦乱视频| 视频一区在线视频| 国产精品欧美一区二区三区不卡| 亚洲啊v在线| 免费成人av在线播放| 欧美a级一区二区| 欧美亚洲国产一区| 婷婷综合成人| 精品亚洲成人| 午夜在线视频观看日韩17c| 欧美性www| 国产a亚洲精品| 国产精品婷婷| 精品99久久| 亚洲狼人精品一区二区三区| 福利一区二区免费视频| 久久99伊人| 精品久久久久中文字幕小说| 三级在线观看一区二区| 国产精品久久观看| 亚洲精品在线a| 日韩国产激情| 日本免费在线视频不卡一不卡二| 四虎884aa成人精品最新| 青青伊人久久| 欧美精选一区二区三区| 国产欧美丝祙| 欧美日韩国产免费观看| 美女精品一区二区| 亚洲一卡久久| 亚洲最新无码中文字幕久久| 亚洲影院天堂中文av色| 日韩欧美另类一区二区| 国产日韩精品视频一区二区三区| 日韩一区二区免费看| 国产精品99一区二区三| 日韩高清中文字幕一区| 国产韩日影视精品| 成人亚洲欧美| 你懂的亚洲视频| 亚洲精品字幕| 在线日韩欧美| 国产精品成人一区二区不卡| 欧美视频一区| 亚洲欧美网站在线观看| 日韩视频一区二区三区在线播放免费观看| 久久亚洲精品中文字幕| 日韩超碰人人爽人人做人人添| 国产字幕视频一区二区| 国产在线观看www| 麻豆成人综合网| 国产精品最新| 欧美亚洲国产日韩| 日本久久一区| 五月亚洲婷婷| 人人精品人人爱| 欧美一区二区三区高清视频 | 日本va欧美va精品发布| 国产精品婷婷| 黄色在线一区| 激情久久久久久| 色88888久久久久久影院| 日本一二区不卡| 欧美aⅴ一区二区三区视频| 日韩激情一区二区| 视频精品一区二区| 国产精品外国| 亚洲作爱视频| aa亚洲婷婷| 亚洲成人免费| 午夜国产精品视频| av成人国产| 性色av一区二区怡红| 国产精品色网| 中文一区一区三区免费在线观 | 久久国产精品免费精品3p| 日韩福利视频导航| 国产探花在线精品| 国产欧美激情| 国产欧美一区二区三区米奇 | 久久国产生活片100| 国产精品一区毛片| 久久av资源| 国产91欧美| 色一区二区三区| 蜜桃av.网站在线观看| 亚洲www啪成人一区二区| 久久天堂成人| 欧美日韩国产亚洲一区| 天堂av在线一区| 亚洲精品日本| 国产精品激情| 国产一区二区三区四区大秀| 免费视频一区二区三区在线观看| 久久99久久久精品欧美| 国产精品麻豆久久| 精品一区欧美| 日日夜夜免费精品| 麻豆精品视频在线| 群体交乱之放荡娇妻一区二区| av亚洲免费| 亚洲欧美久久精品| 久久久久九九精品影院| 蜜桃精品在线| 视频在线观看国产精品| 久久国产婷婷国产香蕉| 国产成人免费视频网站视频社区| 日韩中文字幕91| 日韩国产成人精品| 国产精品黑丝在线播放| 亚洲欧美日本视频在线观看| 欧美一级久久| 久久久精品五月天| 亚洲乱码一区| 97精品国产| 一区二区国产在线观看| 免费亚洲婷婷| 欧美午夜不卡| 国产欧美精品| 久久久久国产| 青草久久视频| 免费观看久久av| 国产欧美一区二区三区精品观看 | 欧美日韩网址| 欧美日韩在线二区| 欧美一区在线观看视频| 久久久久国产精品一区二区| 亚洲精品国产精品粉嫩| 日韩在线观看| 欧美日本精品| 日韩午夜在线| 成人在线超碰| 亚洲深夜福利在线观看| 福利一区二区三区视频在线观看| 久久国产精品99国产| 国产一区国产二区国产三区| 亚洲视频播放| 国产一区三区在线播放| 亚洲欧美久久精品| www成人在线视频| 欧美一区自拍| 国产视频一区在线观看一区免费| 精品国产中文字幕第一页| 天使萌一区二区三区免费观看| 欧美好骚综合网| 日韩一区免费| 亚洲大全视频| 中文一区一区三区高中清不卡免费| 日精品一区二区三区| 国户精品久久久久久久久久久不卡| 国产极品嫩模在线观看91精品| 在线一区视频观看| 国产精品久久久久av蜜臀| 伊人久久一区| 伊人成人在线视频| 日本免费一区二区三区四区| 国产精品久久久久毛片大屁完整版| 日韩精品一级二级 | 国产精品一区毛片| 日韩一区精品视频| 色婷婷久久久| 98精品久久久久久久| 欧美午夜三级| 蜜桃视频一区二区三区在线观看| 久久影视一区| 国产v日韩v欧美v| 久久精品国产一区二区| 国产欧美一区二区三区米奇| 四虎成人精品一区二区免费网站 | 久久天堂成人| 国产欧美一区二区三区精品酒店| 国产精品午夜一区二区三区| 日韩精品免费视频人成 | 免费黄网站欧美| 蜜桃一区二区三区| 免费高潮视频95在线观看网站| 精品国产乱码| 麻豆精品视频在线观看免费| 国产图片一区| 欧美中文一区| 久久精品99国产国产精| 91午夜精品| 国产日韩一区二区三区在线|