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

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

?? 異步串口通信vc.txt

?? VC串口編程資料匯總
?? TXT
字號(hào):
異步串口通信VC++
  

本文參考MSDN及相關(guān)網(wǎng)上文章。 
//////////////////////////////////////////////
//MyComm.h 多機(jī)控制 異步串口通信

//說不定能有用上的。

//////////////////////////////////////////////
class CMyComm
{
public:
 CMyComm();
 virtual ~CMyComm();
 void PreOpenSetupQueue(DWORD dwInQueue, DWORD dwOutQueue);
     // size of input buffer, size of output buffer
 BOOL Open(int nPort, int nBaud);
    //默認(rèn)無校驗(yàn),每個(gè)字節(jié)發(fā)送11個(gè)bit,異步方式。
    //若設(shè)置校驗(yàn)后,校驗(yàn)錯(cuò)則字節(jié)被替換為0x7E
 BOOL SetupQueue(DWORD dwInQueue, DWORD dwOutQueue);
    // size of input buffer, size of output buffer
 BOOL ResetParity(char Parity);//parity = 'N', 'O', 'E',  'M',  'S' 不區(qū)分大小寫
         //分別表示   no, odd, even, mark, space 
        // 在Open()前設(shè)置無效。
 BOOL SendData(LPCVOID lpBuf, DWORD dwToWrite);
 DWORD ReadData(LPVOID lpBuf, DWORD dwToRead);
 void Close();

protected:
 HANDLE m_hCom;
 BOOL m_bOpened;
 OVERLAPPED m_osReader;
 OVERLAPPED m_osWriter;
 DWORD m_dwInBuf;
 DWORD m_dwOutBuf;
};

//////////////////////////////////////////////////////////
//MyComm.cpp
#include "stdafx.h"
#include "MyComm.h"
///////////////////////////////////////////

CMyComm::CMyComm()
{
 m_bOpened = FALSE;
 m_dwInBuf = 512;
 m_dwOutBuf = 512;
 m_hCom = NULL;
}

void CMyComm::PreOpenSetupQueue(DWORD dwInQueue, DWORD dwOutQueue)
{
 m_dwInBuf = dwInQueue;
 m_dwOutBuf = dwOutQueue;
}

BOOL CMyComm::Open(int nPort, int nBaud)
{
 ASSERT(nPort > 0 || nPort < 5 || nBaud >= 110 || nBaud <= 128000);
 if( m_bOpened ) return TRUE;
 char szPort[15];
 char lpDef[15];
 DCB dcb = {0};
 dcb.DCBlength = sizeof(dcb);
 wsprintf(szPort, "COM%d", nPort);
 wsprintf(lpDef, "%d,n,8,1", nBaud);
 m_hCom = CreateFile(szPort, GENERIC_READ | GENERIC_WRITE,
  0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);

 if( m_hCom == INVALID_HANDLE_VALUE ) return FALSE;
 
 FillMemory(&m_osReader, sizeof(OVERLAPPED), 0);
 FillMemory(&m_osWriter, sizeof(OVERLAPPED), 0);
 m_osReader.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
 m_osWriter.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);

 int byteUsedTime = 14400 / nBaud +1;
 COMMTIMEOUTS timeouts = {20 + byteUsedTime, byteUsedTime, 1000, byteUsedTime , 20};
 dcb.fParity = TRUE;
 dcb.fErrorChar = TRUE;
 dcb.ErrorChar = '~'; 
 if( m_osReader.hEvent == NULL || m_osWriter.hEvent == NULL
   || !SetCommTimeouts(m_hCom, &timeouts) 
   || !BuildCommDCB(lpDef, &dcb) || !SetupComm(m_hCom, m_dwInBuf, m_dwOutBuf)) {
  if( m_osReader.hEvent != NULL )
   CloseHandle( m_osReader.hEvent );
  if( m_osWriter.hEvent != NULL )
   CloseHandle( m_osWriter.hEvent );
  CloseHandle( m_hCom );
  return FALSE;
 }
 m_bOpened = TRUE;
 return m_bOpened;
}

BOOL CMyComm::SetupQueue(DWORD dwInQueue, DWORD dwOutQueue)
{
 if (m_hCom == NULL) return FALSE;
 m_dwInBuf = dwInQueue;
 m_dwOutBuf = dwOutQueue;
 return SetupComm(m_hCom, m_dwInBuf, m_dwOutBuf);
}

BOOL CMyComm::ResetParity(char Parity)
{
 if (m_hCom == NULL) return FALSE;
 DCB dcb;
 dcb.DCBlength = sizeof( DCB );
 if (!GetCommState(m_hCom, &dcb)) return FALSE;
 BYTE cParity;
 Parity = tolower(Parity);
 switch (Parity) {
 case 'o':
  cParity = 1;
  break;
 case 'e':
  cParity = 2;
  break;
 case 'm':
  cParity = 3;
  break;
 case 's':
  cParity = 4;
  break;
 default:
  cParity = 0;
  break;
 }
 dcb.Parity = cParity;
 return SetCommState(m_hCom, &dcb);
}

BOOL CMyComm::SendData(LPCVOID lpBuf, DWORD dwToWrite)
{
 TRACE("SSSSSSSSSSSSS 00\n"); 
 if( !m_bOpened || m_hCom == NULL ) return FALSE;
 DWORD dwWritten;
 if (WriteFile(m_hCom, lpBuf, dwToWrite, &dwWritten, &m_osWriter)) return TRUE;
 if (GetLastError() != ERROR_IO_PENDING)  return FALSE;
 GetOverlappedResult(m_hCom, &m_osWriter, &dwWritten, TRUE);
 TRACE("SSSSSSSSSSSSS 11\n"); 
 return (dwToWrite == dwWritten);
}


DWORD CMyComm::ReadData(LPVOID lpBuf, DWORD dwToRead)
{ 
 TRACE("RRRRRRRRRRRR 00\n"); 
 if( !m_bOpened || m_hCom == NULL ) return 0;
 DWORD dwRead;
 if (ReadFile(m_hCom, lpBuf, dwToRead, &dwRead, &m_osReader) ) return dwRead; 
 if (GetLastError() != ERROR_IO_PENDING)  return 0;

 if (WaitForSingleObject(m_osReader.hEvent, INFINITE) != WAIT_OBJECT_0 ) 
  return 0;

 if (!GetOverlappedResult(m_hCom, &m_osReader, &dwRead, FALSE) )
  return 0;
 TRACE("RRRRRRRRRRRR 11\n");  
 return dwRead;
}

void CMyComm::Close()
{ 
 if (m_osReader.hEvent != NULL) CloseHandle( m_osReader.hEvent );
 if (m_osWriter.hEvent != NULL) CloseHandle( m_osWriter.hEvent );
 if (m_hCom != NULL)    CloseHandle( m_hCom );
 m_bOpened = FALSE;
}

CMyComm::~CMyComm()
{
 Close();
}

///////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// main.cpp

char Buf[40];
int nArray[3];
CMyComn myCom;
UINT SendDataProc(LPVOID pParam);

void OnCommSendReceive() 
{
 myCom.PreOpenSetupQueue(12, 12);
 if (!myCom.Open(2, 4800)) return;
 //如果想改變校驗(yàn)位,在此位置,如:myCom.ResetParity('m');
 FillMemory(Buf, 40, 0);
 nArray[0] = 0;
 nArray[1] = 17;
 nArray[2] = 88888;
 AfxBeginThread(SendDataProc, (LPVOID)(12));
 TRACE("EEEEEEEE\n");
 int nRead = myCom.ReadData(Buf, 12);
 int* nA = (int*) Buf;
 TRACE("AAAAAAAAAAAAAA %d, %d %d %d\n",nRead, nA[0], nA[1], nA[1]); 
}

UINT SendDataProc(LPVOID pParam)
{
 return myCom.SendData((LPVOID)nArray, (DWORD) pParam);
}

 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产高清在线| 精品日本一线二线三线不卡| 国产精品国产自产拍高清av | 国产综合色在线视频区| 日韩精品中文字幕在线一区| 九色综合狠狠综合久久| 久久久青草青青国产亚洲免观| 国产麻豆成人传媒免费观看| 欧美国产97人人爽人人喊| 9色porny自拍视频一区二区| 一区二区视频在线看| 欧美三级乱人伦电影| 麻豆精品在线观看| 欧美性三三影院| 卡一卡二国产精品| 中文字幕一区二区三区色视频| 欧美伊人久久大香线蕉综合69| 男女男精品视频| 亚洲国产精品传媒在线观看| 色先锋aa成人| 久久99精品久久久久久国产越南 | 欧美一区二区二区| 国产福利一区在线| 亚洲成人免费看| 国产日韩欧美高清在线| 欧美亚男人的天堂| 狠狠久久亚洲欧美| 亚洲人快播电影网| 精品久久久久一区二区国产| 色综合 综合色| 国产一区二区91| 亚洲一区二区三区在线| 久久久午夜精品| 欧美日韩精品综合在线| 国产成人av资源| 欧美a一区二区| 亚洲精品ww久久久久久p站| 欧美mv日韩mv国产| 欧美系列在线观看| 国产成人超碰人人澡人人澡| 三级久久三级久久久| 中文字幕一区二| 精品国产免费人成电影在线观看四季| 一道本成人在线| 国产精品资源网站| 青青草视频一区| 亚洲综合丁香婷婷六月香| 中文av一区二区| 精品卡一卡二卡三卡四在线| 欧美三级日韩三级| 91免费在线视频观看| 国产九九视频一区二区三区| 日本在线播放一区二区三区| 亚洲精品中文字幕乱码三区| 国产区在线观看成人精品| 欧美成人一级视频| 制服丝袜一区二区三区| 91蝌蚪国产九色| 99久久精品国产网站| 国产98色在线|日韩| 久久精品噜噜噜成人88aⅴ| 日韩专区中文字幕一区二区| 夜夜嗨av一区二区三区中文字幕 | 在线观看视频欧美| 99视频精品全部免费在线| 国产aⅴ精品一区二区三区色成熟| 麻豆专区一区二区三区四区五区| 亚洲综合久久久久| 亚洲国产一区视频| 亚洲一区二区欧美| 亚洲综合丝袜美腿| 亚洲曰韩产成在线| 亚洲网友自拍偷拍| 亚洲综合成人网| 亚洲午夜av在线| 一区二区三区精品在线观看| 综合自拍亚洲综合图不卡区| 亚洲图片激情小说| 亚洲精品国产精华液| 亚洲视频一区二区免费在线观看 | 亚洲精品一区二区在线观看| 日韩欧美一级片| 欧美成人a∨高清免费观看| 精品国产一区二区精华| 精品乱人伦一区二区三区| 欧美成人一级视频| 国产亚洲精品久| 国产精品久久久久久一区二区三区| 欧美国产一区视频在线观看| 国产人成亚洲第一网站在线播放| 日本一区二区在线不卡| 亚洲视频在线一区二区| 亚洲综合久久av| 蜜桃av一区二区三区| 国产一区二区精品久久99| 国产成人在线电影| 色妞www精品视频| 欧美精品成人一区二区三区四区| 6080亚洲精品一区二区| 久久九九99视频| 中文字幕佐山爱一区二区免费| 亚洲国产一区二区三区青草影视| 蜜臀av性久久久久蜜臀av麻豆| 精品午夜一区二区三区在线观看| 国产精品亚洲一区二区三区在线| 不卡视频在线看| 欧美日韩情趣电影| 久久影视一区二区| 亚洲精品国产一区二区精华液 | 久久精品国产亚洲高清剧情介绍| 成人一区在线观看| 欧美三级视频在线| 久久精品一区二区三区av| 亚洲最大成人综合| 久久电影网站中文字幕 | 欧美日韩一级大片网址| 久久综合久久鬼色| 一区二区激情小说| 国产精品亚洲人在线观看| 在线视频你懂得一区| 2014亚洲片线观看视频免费| 亚洲精品视频在线看| 久久99在线观看| 色综合久久中文字幕综合网| 精品第一国产综合精品aⅴ| 亚洲人成影院在线观看| 美女一区二区视频| 在线观看一区日韩| 国产精品美女久久久久久久久久久| 亚洲成人激情av| 成人av电影免费观看| 欧美成va人片在线观看| 亚洲国产综合91精品麻豆| 成人国产亚洲欧美成人综合网| 日韩色视频在线观看| 一个色妞综合视频在线观看| 国产精品自产自拍| 日韩欧美一级二级| 亚洲成年人网站在线观看| 99久久99精品久久久久久| 久久久综合激的五月天| 麻豆国产91在线播放| 欧美精品一级二级| 亚洲一区日韩精品中文字幕| av一区二区三区| 欧美国产精品一区二区| 国产永久精品大片wwwapp| 欧美一区二区三区在线视频 | 蜜臀va亚洲va欧美va天堂| 欧美三级在线看| 亚洲精品久久久蜜桃| 波多野结衣一区二区三区| 国产午夜亚洲精品羞羞网站| 美女国产一区二区| 欧美一级高清片在线观看| 亚洲一级二级三级在线免费观看| 91视视频在线观看入口直接观看www | 在线观看国产91| 中文字幕在线观看一区| 高潮精品一区videoshd| 国产亚洲综合性久久久影院| 久久国产乱子精品免费女| 日韩午夜在线观看视频| 日本美女视频一区二区| 777xxx欧美| 婷婷成人综合网| 欧美一区二区视频在线观看2020| 石原莉奈在线亚洲二区| 欧美一级二级在线观看| 日韩高清在线观看| 欧美α欧美αv大片| 国产一区二区三区在线看麻豆| 日韩精品一区二区三区三区免费| 麻豆精品一区二区三区| 久久五月婷婷丁香社区| 国产麻豆日韩欧美久久| 国产清纯美女被跳蛋高潮一区二区久久w| 国产一区二区主播在线| 久久精品欧美一区二区三区麻豆| 高清久久久久久| 国产精品福利电影一区二区三区四区| 成人免费毛片a| 亚洲美女在线一区| 欧美日本一区二区三区四区| 日本强好片久久久久久aaa| 日韩一区二区在线观看视频| 激情综合网av| 国产精品免费视频观看| 欧美性高清videossexo| 日本视频一区二区三区| 久久综合色鬼综合色| 成人18视频日本| 亚洲无人区一区| 精品处破学生在线二十三| 成人国产精品免费网站| 亚洲一区在线视频观看| 精品成人私密视频| 一本色道久久加勒比精品| 青青草国产精品亚洲专区无| 久久免费看少妇高潮|