锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品这里只有精99品,久久综合伊人77777麻豆,亚洲国产精品成人久久蜜臀http://www.shnenglu.com/Lee7/category/5412.html 褰撳崕緹庣殑鍙剁墖钀藉敖錛岀敓鍛界殑鑴夌粶鎵嶅巻鍘嗗彲瑙併?錛嶏紞 鑱傞瞾杈?
zh-cnTue, 20 May 2008 16:54:42 GMTTue, 20 May 2008 16:54:42 GMT60- 榪炴帴鏈嶅姟嫻佺▼浠g爜http://www.shnenglu.com/Lee7/archive/2008/05/02/48623.htmlisabcisabcFri, 02 May 2008 02:10:00 GMThttp://www.shnenglu.com/Lee7/archive/2008/05/02/48623.htmlhttp://www.shnenglu.com/Lee7/comments/48623.htmlhttp://www.shnenglu.com/Lee7/archive/2008/05/02/48623.html#Feedback0http://www.shnenglu.com/Lee7/comments/commentRss/48623.htmlhttp://www.shnenglu.com/Lee7/services/trackbacks/48623.html闃呰鍏ㄦ枃

]]> - GSM鐭俊鎭儴鍒嗕唬鐮侊紒http://www.shnenglu.com/Lee7/archive/2008/01/15/41186.htmlisabcisabcTue, 15 Jan 2008 07:37:00 GMThttp://www.shnenglu.com/Lee7/archive/2008/01/15/41186.htmlhttp://www.shnenglu.com/Lee7/comments/41186.htmlhttp://www.shnenglu.com/Lee7/archive/2008/01/15/41186.html#Feedback0http://www.shnenglu.com/Lee7/comments/commentRss/41186.htmlhttp://www.shnenglu.com/Lee7/services/trackbacks/41186.html闃呰鍏ㄦ枃

]]> - 綆鍗曞皝瑁呯殑涓插彛閫氫俊綾?/title>http://www.shnenglu.com/Lee7/archive/2008/01/07/40644.htmlisabcisabcMon, 07 Jan 2008 13:11:00 GMThttp://www.shnenglu.com/Lee7/archive/2008/01/07/40644.htmlhttp://www.shnenglu.com/Lee7/comments/40644.htmlhttp://www.shnenglu.com/Lee7/archive/2008/01/07/40644.html#Feedback3http://www.shnenglu.com/Lee7/comments/commentRss/40644.htmlhttp://www.shnenglu.com/Lee7/services/trackbacks/40644.html#include "stdafx.h"
#include "SerialPort.h"
#include "assert.h"
CSerialPort::CSerialPort()
{
memset(&m_OverlappedRead, 0, sizeof(m_OverlappedRead));
memset(&m_OverlappedWrite, 0, sizeof(m_OverlappedWrite));
m_bOpened = false;
m_ReadComThread = NULL;
m_hIDCom = NULL;
m_dwReadLen = 0;
}
CSerialPort::~CSerialPort()
{
}
BOOL CSerialPort::OpenPort(UINT nPort, UINT nBaud)
{
ASSERT(nPort > 0 && nPort < 5);
if(m_bOpened)
return true;
TCHAR szPort[15];
TCHAR szComParams[50];
DCB dcb;
wsprintf(szPort, _T("COM%d"), nPort);
m_hIDCom = ::CreateFile(szPort,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
NULL);
if(m_hIDCom == NULL)
return false;
memset(&m_OverlappedRead, 0, sizeof(OVERLAPPED));
memset(&m_OverlappedWrite, 0, sizeof(OVERLAPPED));
COMMTIMEOUTS CommTimeOuts;
CommTimeOuts.ReadIntervalTimeout = 0xFFFFFFFF;
CommTimeOuts.ReadTotalTimeoutConstant = 0;
CommTimeOuts.ReadTotalTimeoutMultiplier = 0;
CommTimeOuts.WriteTotalTimeoutMultiplier = 0;
CommTimeOuts.WriteTotalTimeoutConstant = 5000;
::SetCommTimeouts(m_hIDCom, &CommTimeOuts);
wsprintf(szComParams, _T("COM%d:%d,N,8,1"), nPort, nBaud);
m_OverlappedRead.Offset = 0;
m_OverlappedRead.OffsetHigh = 0;
m_OverlappedRead.hEvent = ::CreateEvent(NULL, true, false, NULL);
m_OverlappedWrite.Offset = 0;
m_OverlappedWrite.OffsetHigh = 0;
m_OverlappedWrite.hEvent = ::CreateEvent(NULL, true, false, NULL);
dcb.DCBlength = sizeof(DCB);
::GetCommState(m_hIDCom, &dcb);
dcb.BaudRate = nBaud;
dcb.ByteSize = 8;
dcb.Parity = 0;
if(!SetCommState(m_hIDCom, &dcb) || !SetupComm(m_hIDCom, 4096, 4096) ||
m_OverlappedRead.hEvent == NULL || m_OverlappedWrite.hEvent == NULL)
{
DWORD dwError = ::GetLastError();
if(m_OverlappedRead.hEvent != NULL)
::CloseHandle(m_OverlappedRead.hEvent);
if(m_OverlappedWrite.hEvent != NULL)
::CloseHandle(m_OverlappedWrite.hEvent);
::CloseHandle(m_hIDCom);
return false;
}
::SetCommMask(m_hIDCom, EV_RXCHAR);
::PurgeComm(m_hIDCom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);
::EscapeCommFunction(m_hIDCom, SETDTR);
m_bOpened =true;
m_bExitThread =false;
StartMonitoring();
return m_bOpened;
}
BOOL CSerialPort::Close()
{
if(!m_bOpened || m_hIDCom == NULL)
return true;
m_bExitThread = true;
::SetCommMask(m_hIDCom, 0);
StopMonitoring();
if(m_OverlappedRead.hEvent != NULL)
::CloseHandle(m_OverlappedRead.hEvent);
if(m_OverlappedWrite.hEvent != NULL)
::CloseHandle(m_OverlappedWrite.hEvent);
::CloseHandle(m_hIDCom);
m_bOpened = false;
m_hIDCom = NULL;
return true;
}
//鍚戜覆鍙e啓鏁版嵁
void CSerialPort::WriteToPort(BYTE *Byte, int Len)
{
if(!m_bOpened || m_hIDCom == NULL)
return;
BOOL bWriteStat;
DWORD dwBytesWritten;
ClearReadBuf();
bWriteStat = ::WriteFile(m_hIDCom, Byte, Len, &dwBytesWritten, &m_OverlappedWrite);
if(!bWriteStat && (::GetLastError() == ERROR_IO_PENDING))
{
//WaitForSingleObject鍑芥暟鐢ㄦ潵媯嫻媓Handle浜嬩歡鐨勪俊鍙風(fēng)姸鎬侊紝褰撳嚱鏁扮殑鎵ц鏃墮棿瓚呰繃dwMilliseconds灝?br> //榪斿洖錛屼絾濡傛灉鍙傛暟dwMilliseconds涓篒NFINITE鏃跺嚱鏁板皢鐩村埌鐩稿簲鏃墮棿浜嬩歡鍙樻垚鏈変俊鍙風(fēng)姸鎬佹墠榪斿洖錛?br> //鍚﹀垯灝變竴鐩寸瓑寰呬笅鍘伙紝鐩村埌WaitForSingleObject鏈夎繑鍥炵洿鎵嶆墽琛屽悗闈㈢殑浠g爜銆?/span>
DWORD dw = ::WaitForSingleObject(m_OverlappedWrite.hEvent, INFINITE );
if(dw == WAIT_TIMEOUT)
{
dwBytesWritten = 0;
DCB dcb;
::GetCommState(m_hIDCom, &dcb);
::PurgeComm(m_hIDCom, PURGE_TXCLEAR);
return;
}
else
{
::GetOverlappedResult(m_hIDCom, &m_OverlappedWrite, &dwBytesWritten, false);//絳夊緟鏈嶅姟鍣ㄥ畬鎴怚O鎿嶄綔
m_OverlappedWrite.Offset += dwBytesWritten;
}
}
return ;
}
//浠庝覆鍙h鍙栨暟鎹?/span>
int CSerialPort::ReadFromPort(BYTE *lpszBlock, int nRLen)
{
if(!m_bOpened || m_hIDCom == NULL)
return 0;
BOOL bReadStat;
DWORD dwBytesRead, dwErrorFlags;
COMSTAT ComStat;
::ClearCommError(m_hIDCom, &dwErrorFlags, &ComStat);
if(!ComStat.cbInQue)
return 0;
dwBytesRead = (DWORD) ComStat.cbInQue;
if(nRLen < (int)dwBytesRead)
dwBytesRead = (DWORD) nRLen;
bReadStat = ::ReadFile(m_hIDCom, lpszBlock, dwBytesRead, &dwBytesRead, &m_OverlappedRead);
if(!bReadStat)
{
if(::GetLastError() == ERROR_IO_PENDING)
{
::WaitForSingleObject(m_OverlappedRead.hEvent, INFINITE);
return (int)dwBytesRead;
}
return 0;
}
return (int)dwBytesRead;
}
UINT CSerialPort::CommThread(LPVOID pParam)
{
CSerialPort* pSerialPort = (CSerialPort*)pParam;
BYTE Buffer[4096];
DWORD dwEvent, dwError;
COMSTAT ComStat;
int ReadLen = 0;
memset(pSerialPort->m_ReadBuf, '\0', sizeof(pSerialPort->m_ReadBuf));
::SetCommMask(pSerialPort->m_hIDCom, EV_RXCHAR);
while(!pSerialPort->m_bExitThread)
{
memset(Buffer, '\0', 4096);
::WaitCommEvent(pSerialPort->m_hIDCom, &dwEvent, NULL);
::ClearCommError(pSerialPort->m_hIDCom, &dwError, &ComStat);
if((dwEvent & EV_RXCHAR) && ComStat.cbInQue)
{
pSerialPort->m_dwReadLen = pSerialPort->ReadFromPort(Buffer,4096);
pSerialPort->m_dwReadLen = ReadLen >4096 ? 4096 : ReadLen;
if(pSerialPort->m_dwReadLen > 0)
{
memcpy(pSerialPort->m_ReadBuf, Buffer,pSerialPort->m_dwReadLen);
}
}
::PurgeComm(pSerialPort->m_hIDCom, PURGE_RXCLEAR);
}
return 0;
}
BOOL CSerialPort::StartMonitoring()
{
if(m_ReadComThread == NULL)
{
if(!(m_ReadComThread = ::AfxBeginThread(CommThread, this)))
return false;
}
return true;
}
BOOL CSerialPort::StopMonitoring()
{
if(m_ReadComThread != NULL)
{
::TerminateThread(m_ReadComThread->m_hThread, 0); //緇堢粨綰跨▼
m_ReadComThread = NULL;
}
return true;
}
void CSerialPort::ClearReadBuf()
{
memset(m_ReadBuf, '\0', sizeof(m_ReadBuf));
m_dwReadLen = 0;
}

]]>
久久精品久久久久观看99水蜜桃|
99久久精品久久久久久清纯|
久久久久久久久66精品片|
欧美亚洲国产精品久久|
亚洲午夜久久久久久久久久|
狠狠色丁香久久婷婷综|
日韩久久久久中文字幕人妻|
久久久噜噜噜久久熟女AA片|
99久久www免费人成精品|
99久久香蕉国产线看观香|
成人久久久观看免费毛片|
久久一区二区三区免费|
久久精品国产网红主播|
一本色道久久88综合日韩精品|
久久精品国产清高在天天线|
深夜久久AAAAA级毛片免费看
|
一本色道久久88加勒比—综合|
伊人久久亚洲综合影院|
久久91亚洲人成电影网站|
久久无码高潮喷水|
青春久久|
久久精品国产精品亚洲|
久久99精品综合国产首页|
亚洲人成网亚洲欧洲无码久久|
精品久久综合1区2区3区激情|
久久精品九九亚洲精品|
99久久精品国产一区二区|
一本色道久久综合|
久久综合亚洲色HEZYO国产
|
久久亚洲精品无码VA大香大香|
91精品国产综合久久香蕉|
国产精品99精品久久免费|
国内精品综合久久久40p|
一本一道久久a久久精品综合
|
亚洲第一极品精品无码久久|
亚洲精品视频久久久|
欧美粉嫩小泬久久久久久久
|
一级a性色生活片久久无少妇一级婬片免费放
|
久久妇女高潮几次MBA|
久久国产欧美日韩精品|
日韩精品久久久久久久电影蜜臀|