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

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

]]> - 綆鍗曞皝瑁呯殑涓插彛閫氫俊綾?/title>http://m.shnenglu.com/Lee7/archive/2008/01/07/40644.htmlisabcisabcMon, 07 Jan 2008 13:11:00 GMThttp://m.shnenglu.com/Lee7/archive/2008/01/07/40644.htmlhttp://m.shnenglu.com/Lee7/comments/40644.htmlhttp://m.shnenglu.com/Lee7/archive/2008/01/07/40644.html#Feedback3http://m.shnenglu.com/Lee7/comments/commentRss/40644.htmlhttp://m.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热免费|
91精品国产综合久久久久久|
久久精品九九亚洲精品|
久久青草国产手机看片福利盒子|
久久精品人人做人人爽电影|
久久影院久久香蕉国产线看观看|
久久强奷乱码老熟女网站|
秋霞久久国产精品电影院|
亚洲国产小视频精品久久久三级|
久久精品国产亚洲AV无码麻豆|
国产成人精品久久亚洲高清不卡
|
国内精品人妻无码久久久影院|
四虎影视久久久免费观看|
午夜不卡久久精品无码免费|
欧美无乱码久久久免费午夜一区二区三区中文字幕
|
国产成人精品综合久久久|
日本道色综合久久影院|
久久午夜福利无码1000合集|
国产高清美女一级a毛片久久w|
99久久夜色精品国产网站|
久久国产精品一区|
好久久免费视频高清|
色妞色综合久久夜夜|
精品伊人久久久|
久久影院久久香蕉国产线看观看|
国产韩国精品一区二区三区久久|
99久久国产亚洲综合精品|
久久男人中文字幕资源站|
国产高清国内精品福利99久久|
99re久久精品国产首页2020|
亚洲女久久久噜噜噜熟女|
亚洲第一极品精品无码久久|
久久久久青草线蕉综合超碰|
人妻无码αv中文字幕久久琪琪布
人妻无码精品久久亚瑟影视
|
少妇久久久久久久久久|
影音先锋女人AV鲁色资源网久久
|
yy6080久久|
精品一二三区久久aaa片|
国产精品久久久久久久人人看|
亚洲精品99久久久久中文字幕|