亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? serial.cpp

?? 用VC++API函數(shù)寫的串口類
?? CPP
字號(hào):
#include "stdafx.h"
#include "com232.h"

BYTE  XwCom=0x40;
BYTE  sCom1[5],sCom2[MAXBLOCKLENGTH+12],sCom3[MAXBLOCKLENGTH+12];
BYTE  opation;
short ComNum;


CSerial::CSerial()
{
	m_hCom = NULL;
	m_bComId = (char)ComNum;	//COM1

	m_bByteSize=8;
	m_bStopBits=ONESTOPBIT;
	m_bParity=NOPARITY;
	m_dwBaudRate=9600;
	m_bEvtChar=EVENTCHAR;
	m_fBinary=1;

	m_bConnected = FALSE;
	m_bFlowCtrl = FC_XONXOFF ;
	m_fXonXoff = FALSE;
}
CSerial::CSerial(BYTE bComId,BYTE bByteSize,BYTE bStopBits,BYTE bParity,
		DWORD dwBaudRate,char bEvtChar,DWORD fBinary)
{
	m_hCom = NULL;
	m_bComId = bComId;

	m_bByteSize=bByteSize;
	m_bStopBits=bStopBits;
	m_bParity=bParity;
	m_dwBaudRate=dwBaudRate;
	m_bEvtChar=bEvtChar;
	m_fBinary=fBinary;

	m_bConnected = FALSE;

	m_bFlowCtrl = FC_XONXOFF ;
	m_fXonXoff = FALSE;

}

BOOL CSerial::OpenConnection()
{
	char csCom[10];
    COMMTIMEOUTS  CommTimeOuts ;

    if((m_bComId < 0) || (m_bComId > 4))
		return FALSE; //從COM1到COM4
	if(m_hCom)        //串口已經(jīng)打開
		return FALSE;
    //OVERLAPPED包含異步I/O信息
	m_rdos.Offset = 0;
	m_rdos.OffsetHigh = 0;
	m_rdos.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
	if(m_rdos.hEvent == NULL)
		return FALSE;
	m_wtos.Offset = 0;
	m_wtos.OffsetHigh = 0;
	m_wtos.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
	if(m_wtos.hEvent == NULL)
	{
		CloseHandle(m_rdos.hEvent);
		return FALSE;
	}
	
	wsprintf(csCom,"COM%d",m_bComId);
	m_hCom = CreateFile(csCom,GENERIC_READ | GENERIC_WRITE,
    0,
    NULL,
    OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
    NULL
	);

	if(m_hCom == INVALID_HANDLE_VALUE) {
		return FALSE;
	}
	else
	{
       SetCommMask( m_hCom, EV_RXCHAR ) ;
      // 分配設(shè)備緩沖區(qū)
      SetupComm( m_hCom, 4096, 4096 ) ;

      // 初始化緩沖區(qū)中的信息
      PurgeComm( m_hCom, PURGE_TXABORT | PURGE_RXABORT |
                         PURGE_TXCLEAR | PURGE_RXCLEAR) ;

      // set up for overlapped I/O
	  DWORD dwTemp = 1000 / (this->m_dwBaudRate / 8);
      CommTimeOuts.ReadIntervalTimeout = 0xFFFFFFFF ;
      CommTimeOuts.ReadTotalTimeoutMultiplier = 0;
      CommTimeOuts.ReadTotalTimeoutConstant = 1000 ;
     
      CommTimeOuts.WriteTotalTimeoutMultiplier = 2*CBR_9600/this->m_dwBaudRate;//( npTTYInfo ) ;
      CommTimeOuts.WriteTotalTimeoutConstant = 0;//1000 ;
      SetCommTimeouts( m_hCom, &CommTimeOuts ) ;
	}
	if(!SetupConnection())
	{
		CloseConnection();
		return FALSE;
	}
	EscapeCommFunction( m_hCom, SETDTR );
	m_bConnected = TRUE;
	return TRUE;
}

BOOL CSerial::CloseConnection()
{
   if (NULL == m_hCom)
      return ( TRUE ) ;
   // 設(shè)置連接屬性為FALSE
	m_bConnected = FALSE;
   // 使事件消息無效并等待線程停止
   SetCommMask( m_hCom, 0 ) ;

   // 阻塞至線程停止
   EscapeCommFunction( m_hCom, CLRDTR ) ;

   PurgeComm( m_hCom, PURGE_TXABORT | PURGE_RXABORT |
                      PURGE_TXCLEAR | PURGE_RXCLEAR ) ;
   CloseHandle( m_hCom ) ;
	m_hCom = NULL;
	CloseHandle(m_rdos.hEvent);
	CloseHandle(m_wtos.hEvent);

   return ( TRUE ) ;
}
BOOL CSerial::SetupConnection()
{
   BOOL       fRetVal ;
   BYTE       bSet ;
   DCB        dcb ;
	if(m_hCom == NULL)
		return FALSE; 
   dcb.DCBlength = sizeof( DCB ) ;

   GetCommState( m_hCom, &dcb ) ;

   dcb.BaudRate = this->m_dwBaudRate;
   dcb.ByteSize = this->m_bByteSize;
   dcb.Parity =  this->m_bParity;
   dcb.StopBits = this->m_bStopBits ;
	dcb.EvtChar = this->m_bEvtChar ;
   // 設(shè)置硬件流控制
   bSet = (BYTE) ((m_bFlowCtrl & FC_DTRDSR) != 0) ;
   dcb.fOutxDsrFlow = bSet ;
   if (bSet)
      dcb.fDtrControl = DTR_CONTROL_HANDSHAKE ;
   else
      dcb.fDtrControl = DTR_CONTROL_ENABLE ;

   bSet = (BYTE) ((m_bFlowCtrl & FC_RTSCTS) != 0) ;
	dcb.fOutxCtsFlow = bSet ;
   if (bSet)
      dcb.fRtsControl = RTS_CONTROL_HANDSHAKE ;
   else
      dcb.fRtsControl = RTS_CONTROL_ENABLE ;
   // 設(shè)置軟件流控制
   bSet = (BYTE) ((m_bFlowCtrl & FC_XONXOFF) != 0) ;
   dcb.fInX = dcb.fOutX = bSet ;
   dcb.XonChar = ASCII_XON ;
   char xon = ASCII_XON ;
   dcb.XoffChar = ASCII_XOFF ;
    char xoff = ASCII_XOFF ;
    dcb.XonLim = 100 ;
   dcb.XoffLim = 100 ;
   // 其他設(shè)置

   dcb.fBinary = TRUE ;
   dcb.fParity = TRUE ;

   fRetVal = SetCommState( m_hCom, &dcb ) ;

   return ( fRetVal ) ;

} 

BOOL CSerial::IsConnected()
{
	return m_bConnected;
}
// 全局函數(shù)


int ReadCommBlock(CSerial& comDev,LPSTR lpszBlock, int nMaxLength )
{
   BOOL       fReadStat ;

   COMSTAT    ComStat ;
   DWORD      dwErrorFlags;
   DWORD      dwLength;
   DWORD      dwError;
   char       szError[ 10 ] ;
   
   ClearCommError( comDev.m_hCom, &dwErrorFlags, &ComStat ) ;
   dwLength = min( (DWORD) nMaxLength, ComStat.cbInQue ) ;

   if (dwLength > 0)
   {
      fReadStat = ReadFile( comDev.m_hCom, lpszBlock,
		                    dwLength, &dwLength, &(comDev.m_rdos) ) ;
      if (!fReadStat)
      {
         if (GetLastError() == ERROR_IO_PENDING)
         {
            OutputDebugString("\n\rIO Pending");
            // 必須等到數(shù)據(jù)讀取完成,由于設(shè)置了
            // CommTimeOuts.ReadTotalTimeoutConstant變量
			// 這個(gè)函數(shù)受超時(shí)限制
            while(!GetOverlappedResult( comDev.m_hCom ,
               &(comDev.m_rdos), &dwLength, TRUE ))
            {
               dwError = GetLastError();
               if(dwError == ERROR_IO_INCOMPLETE)
                  continue;
               else
               {
                  wsprintf( szError, "<CE-%u>", dwError ) ;
                  ClearCommError( comDev.m_hCom , &dwErrorFlags, &ComStat ) ;
                  break;
               }

            }

	      }
         else
         {
            // 發(fā)生其他錯(cuò)誤
			 dwLength = 0 ;
            ClearCommError( comDev.m_hCom , &dwErrorFlags, &ComStat ) ;
         }
      }
   }

   return (dwLength) ;
} 


BOOL WriteCommBlock( CSerial& comDev, LPSTR lpByte , DWORD dwBytesToWrite)
{

   BOOL        fWriteStat ;
   DWORD       dwBytesWritten ;
   DWORD       dwErrorFlags;
   DWORD    	dwError;
   DWORD       dwBytesSent=0;
   COMSTAT     ComStat;
   char        szError[ 128 ] ;

   fWriteStat = WriteFile( comDev.m_hCom , lpByte, dwBytesToWrite,
                           &dwBytesWritten, &( comDev.m_wtos) ) ;

   if (!fWriteStat)
   {
      if(GetLastError() == ERROR_IO_PENDING)
      {
         while(!GetOverlappedResult( comDev.m_hCom,
            &(comDev.m_wtos), &dwBytesWritten, TRUE ))
         {
            dwError = GetLastError();
            if(dwError == ERROR_IO_INCOMPLETE)
            {
               dwBytesSent += dwBytesWritten;
               continue;
            }
            else
            {
               wsprintf( szError, "<CE-%u>", dwError ) ;
               ClearCommError( comDev.m_hCom, &dwErrorFlags, &ComStat ) ;
               break;
            }
         }

         dwBytesSent += dwBytesWritten;

         if( dwBytesSent != dwBytesToWrite )
             wsprintf(szError,"\nProbable Write Timeout: Total of %ld bytes sent", dwBytesSent);
         else
             wsprintf(szError,"\n%ld bytes written", dwBytesSent);

         OutputDebugString(szError);

      }
      else
      {
         ClearCommError( comDev.m_hCom, &dwErrorFlags, &ComStat ) ;
         return ( FALSE );
      }
   }
   return ( TRUE );
} 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲激情六月丁香| 亚洲欧美自拍偷拍色图| 轻轻草成人在线| 91精品久久久久久久99蜜桃| 久久不见久久见免费视频1| 精品日韩99亚洲| 国产**成人网毛片九色| 国产欧美在线观看一区| 91亚洲男人天堂| 亚洲一区二区三区在线| 欧美丰满美乳xxx高潮www| 久久国产三级精品| 国产精品网站在线| 欧美色图免费看| 国内外成人在线| 综合激情成人伊人| 欧美日韩精品欧美日韩精品一| 日韩电影一二三区| 久久久国际精品| 91丨porny丨户外露出| 性感美女久久精品| 久久精品视频免费| 欧美性感一类影片在线播放| 麻豆精品久久久| 国产精品免费视频网站| 欧美日韩中字一区| 国产一本一道久久香蕉| 一区二区三区精品| 久久久久久久久伊人| 在线免费观看日本欧美| 国产尤物一区二区| 亚洲自拍与偷拍| 国产亚洲成年网址在线观看| 欧美日韩一级二级三级| 国产jizzjizz一区二区| 三级欧美在线一区| 国产精品久久久久9999吃药| 在线不卡欧美精品一区二区三区| 国产成人精品aa毛片| 日韩国产欧美视频| 亚洲美女电影在线| wwww国产精品欧美| 欧美视频自拍偷拍| 不卡的av在线| 国产精品自在欧美一区| 日韩电影免费一区| 国产精品国产成人国产三级| 欧美刺激午夜性久久久久久久| 91丝袜呻吟高潮美腿白嫩在线观看| 久久99精品网久久| 视频在线在亚洲| 一区二区三区国产精华| 中文字幕一区在线观看| 久久一区二区视频| 91精品国产色综合久久久蜜香臀| 91蜜桃在线观看| 国产电影一区二区三区| 久草精品在线观看| 青青草原综合久久大伊人精品优势| 一区二区三区高清| 日韩毛片精品高清免费| 国产日韩成人精品| 久久久99久久| 久久久久国产精品厨房| 久久影院视频免费| 欧美成人福利视频| 久久精品在线免费观看| 欧美va亚洲va在线观看蝴蝶网| 欧美日韩亚洲丝袜制服| 色激情天天射综合网| 成人av在线播放网站| 成人自拍视频在线观看| 国产成人aaa| 国产a精品视频| www.欧美亚洲| 91蜜桃网址入口| 97久久超碰国产精品| 91美女视频网站| 91免费在线看| 91黄色激情网站| 色欧美片视频在线观看| 91久久人澡人人添人人爽欧美| 色综合视频一区二区三区高清| 波多野结衣在线一区| 成人免费毛片高清视频| 94-欧美-setu| 欧美少妇性性性| 91精品国产综合久久香蕉的特点 | 精品88久久久久88久久久| 欧美一级免费观看| 欧美不卡视频一区| www日韩大片| 国产精品福利一区| 亚洲精品国久久99热| 亚洲午夜羞羞片| 精彩视频一区二区| 国产成a人无v码亚洲福利| 成人av资源在线| 欧美日韩一区二区三区在线| 欧美系列在线观看| 精品免费日韩av| 国产精品久久久久久妇女6080 | 欧美一区二区女人| 精品蜜桃在线看| 国产精品毛片久久久久久久| 亚洲与欧洲av电影| 麻豆视频一区二区| av不卡在线观看| 日韩一区二区中文字幕| 国产精品蜜臀在线观看| 亚洲国产综合视频在线观看| 国内成+人亚洲+欧美+综合在线| 不卡的av在线| 欧美一区二区三区四区久久| 国产日本欧洲亚洲| 亚洲午夜在线观看视频在线| 国产资源精品在线观看| 99久久er热在这里只有精品66| 欧美日韩夫妻久久| 国产午夜精品一区二区三区嫩草| 一区二区三区在线视频观看| 极品销魂美女一区二区三区| 99免费精品在线观看| 3d成人动漫网站| 亚洲男帅同性gay1069| 久草中文综合在线| 欧美系列亚洲系列| 国产精品美女一区二区在线观看| 亚洲高清免费一级二级三级| 大尺度一区二区| 日韩女优电影在线观看| 亚洲午夜免费电影| 高清成人在线观看| 日韩一级片在线播放| 亚洲精品一卡二卡| 国产成人av电影在线观看| 5月丁香婷婷综合| 一级中文字幕一区二区| 国产suv精品一区二区883| 日韩一区二区影院| 亚洲一区二区三区四区的| 成人高清av在线| 337p亚洲精品色噜噜| 一区二区三区欧美日| 成人av在线观| 亚洲精品一区二区三区四区高清| 亚洲第一久久影院| 日本韩国一区二区三区视频| 久久久久国产精品厨房| 久久国产精品99久久人人澡| 91精品国产黑色紧身裤美女| 亚洲在线免费播放| 91浏览器入口在线观看| 国产精品免费看片| 欧美一二三区在线| 丝袜亚洲另类欧美综合| 欧美日韩中文字幕一区二区| 亚洲老妇xxxxxx| 成+人+亚洲+综合天堂| 中文字幕的久久| 粉嫩在线一区二区三区视频| 久久久久国产成人精品亚洲午夜| 久久精品久久99精品久久| 日韩欧美成人一区| 久久97超碰国产精品超碰| 日韩欧美一级特黄在线播放| 久久99精品久久久久久国产越南| 日韩三级中文字幕| 久久国产麻豆精品| 久久久亚洲欧洲日产国码αv| 国内精品伊人久久久久av影院 | 欧美日韩高清一区| 天天综合日日夜夜精品| 538prom精品视频线放| 美女网站一区二区| 欧美va天堂va视频va在线| 久久99精品久久久| 精品91自产拍在线观看一区| 国产成人午夜精品5599| 中文字幕精品综合| 一本一本大道香蕉久在线精品| 亚洲午夜久久久久久久久电影院| 欧美日韩精品综合在线| 日日夜夜免费精品视频| 日韩欧美中文字幕一区| 国产一区在线视频| 国产精品乱码一区二区三区软件 | 在线观看视频91| 婷婷夜色潮精品综合在线| 日韩亚洲国产中文字幕欧美| 韩国视频一区二区| 国产精品网曝门| 欧美在线免费视屏| 奇米在线7777在线精品| 国产欧美日韩激情| 色欲综合视频天天天| 美日韩黄色大片| 亚洲国产精品ⅴa在线观看| 欧美性videosxxxxx| 精品一区二区三区在线视频|