91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 2KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-01
  • 語言: 其他
  • 標簽: 串口??COM??

資源簡介

簡單的串口類,包含.CPP和.H,兩個文件,采用異步IO讀寫,實現串口的讀寫

資源截圖

代碼片段和文件信息

#include?“StdAfx.h“
#include?“CVisionSerial.h“

CVisionSerial::CVisionSerial(void)
{
hCom?=?NULL;
memset(&Overlapped0sizeof(Overlapped));
Overlapped.hEvent?=?CreateEvent(NULLFALSEFALSENULL);
}

CVisionSerial::~CVisionSerial(void)
{

}


int?CVisionSerial::Init(LPCTSTR?lpstrint?BaudRateint?ByteSizeint?Parityint?StopBitsint?timer)
{

InitializeCriticalSection(&m_csCommunicationSync);

hCom?=?CreateFile(lpstr?GENERIC_READ?|?GENERIC_WRITE?0?NULL
OPEN_EXISTING?FILE_FLAG_OVERLAPPED?
NULL);

if?(INVALID_HANDLE_VALUE?==?hCom)
{
CloseHandle(hCom);
return?ERROR_OPENFAIL;
}

if?(SetupComm(hCom32*102432*1024)?==?false)
return?ERROR_SETBUFFER;

PurgeComm(hComPURGE_RXCLEAR?|?PURGE_TXCLEAR);
COMMTIMEOUTS?TimeOuts;
TimeOuts.ReadIntervalTimeout?=?100;
TimeOuts.ReadTotalTimeoutConstant?=?timer;
TimeOuts.ReadTotalTimeoutMultiplier?=?0;

TimeOuts.WriteTotalTimeoutConstant?=?timer;
TimeOuts.WriteTotalTimeoutMultiplier?=?0;

if?(SetCommTimeouts(hCom&TimeOuts)?==?false)
return?ERROR_CRPTIMEOUT;

DCB dcb;
if(GetCommState(hCom&dcb)?==?false)
return?ERROR_PORTFAULT;

dcb.BaudRate?=?BaudRate;
dcb.ByteSize?=?ByteSize;
dcb.Parity?=?Parity;
dcb.StopBits?=?StopBits;

if?(SetCommState(hCom&dcb)?==?false)
return?ERROR_PORTFAULT;

PurgeComm(hCom?PURGE_RXCLEAR?|?PURGE_TXCLEAR?|?PURGE_RXABORT?|?PURGE_TXABORT);

return?0;
}

int?CVisionSerial::SendData(char?*buff?int?lenunsigned?long?*WrittenLen)
{

PurgeComm(hCom?PURGE_RXCLEAR?|?PURGE_TXCLEAR?|?PURGE_RXABORT?|?PURGE_TXABORT);

EnterCriticalSection(&m_csCommunicationSync);

BOOL?bWriteStat?=?WriteFile(hCombufflenWrittenLen&Overlapped);?//向用戶傳送數據

if?(!bWriteStat)
{
if?(GetLastError()?==?ERROR_IO_PENDING)
WaitForSingleobject(Overlapped.hEvent1000);
}
LeaveCriticalSection(&m_csCommunicationSync);
return?bWriteStat;
}

void?CVisionSerial::ReadData(char?*buffunsigned?long?byteRead?unsigned?long?*len)
{

EnterCriticalSection(&m_csCommunicationSync);
if?(ReadFile(hCombuffbyteReadlen&Overlapped)?==?FALSE)?//讀取串口數據
{
int?i=GetLastError();
if?(GetLastError()?==?ERROR_IO_PENDING)
{
GetOverlappedResult(hCom&OverlappedlenTRUE);
}else
{
memset(buff0sizeof(buff));
}
}
LeaveCriticalSection(&m_csCommunicationSync);
}

HANDLE CVisionSerial::getHCOM()
{
return?hCom;
}

void?CVisionSerial::closeHCOM()
{
if?(hCom?!=?NULL)
{
CloseHandle(hCom);
}
}

void?CVisionSerial::ClearOutBuffer()
{
::PurgeComm(hCom?PURGE_TXABORT??|?PURGE_TXCLEAR?);
}

void?CVisionSerial::ClearInBuffer()
{
::PurgeComm(hCom?PURGE_RXABORT?|?PURGE_RXCLEAR);
}

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????2730??2015-08-27?16:55??Serialport.cpp

?????文件????????774??2015-08-27?16:56??Serialport.h

-----------?---------??----------?-----??----

?????????????????3504????????????????????2


評論

共有 條評論