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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? serialcomm.cpp

?? 自己項目組開發(fā)的自組網(wǎng)傳輸中串口通信程序
?? CPP
字號:
// SerialComm.cpp: implementation of the CSerialComm class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "DTE.h"
#include "SerialComm.h"
#include <process.h>   
#include <stdlib.h>


#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
void CSerialComm::InvalidateHandle(HANDLE &hHandle)
{
	hHandle = INVALID_HANDLE_VALUE;
}
//--------------------------------------------------------------------
void CSerialComm::CloseAndCleanHandle(HANDLE &hHandle)
{
	BOOL bRet;

	bRet = CloseHandle(hHandle);
	if(!bRet)
		ASSERT(0);
	InvalidateHandle(hHandle);
}
//---------------------------------------------------------------------
CSerialComm::CSerialComm()
{

	InvalidateHandle(m_hCommPort);
	InitLock();
	//初始化
	CanRead = false;
	m_eState = SS_UnInit;
}
//-----------------------------------------------------------------------
CSerialComm::~CSerialComm()
{
	m_eState = SS_Unknown;
	DelLock();
}
//---------------------------------------------------------------------------
HRESULT CSerialComm::Init(std::string szPortName, std::string dwBaudRate,
				 std::string byParity, std::string byStopBit, std::string byByteSize)
{
	HRESULT hr = S_OK;
	try
	{
		//打開串口
		m_hCommPort = ::CreateFile(szPortName.c_str(),
								   GENERIC_READ | GENERIC_WRITE,
									0,                           //不共享COM口
									NULL,                        //無安全策略
									OPEN_EXISTING,               //打開已有的文件
									FILE_FLAG_OVERLAPPED,        //I/O重疊模式
									0);
		if(m_hCommPort == INVALID_HANDLE_VALUE)
		{
			AfxMessageBox("這個串口沒有裝備或者已經(jīng)被其他設備占用了!");
			return E_FAIL;
		}
		//COM口設置掩碼參數(shù)
		if(!::SetCommMask(m_hCommPort, EV_RXCHAR))//|EV_TXEMPTY
		{	
			AfxMessageBox("串口掩碼設置錯誤!");
			return E_FAIL;
		}
		
//
/*DWORD DCBlength1=dcb.DCBlength;           // sizeof(DCB) 
    DWORD BaudRate1=dcb.BaudRate;            // current baud rate 
    DWORD fBinary1=dcb.fBinary;          // binary mode, no EOF check 
    DWORD fParity1=dcb.fParity;          // enable parity checking 
    DWORD fOutxCtsFlow1=dcb.fOutxCtsFlow;      // CTS output flow control 
    DWORD fOutxDsrFlow1=dcb.fOutxDsrFlow;      // DSR output flow control 
    DWORD fDtrControl1=dcb.fDtrControl;       // DTR flow control type 
    DWORD fDsrSensitivity1=dcb.fDsrSensitivity;   // DSR sensitivity 
    DWORD fTXContinueOnXoff1=dcb.fTXContinueOnXoff; // XOFF continues Tx 
    DWORD fOutX1=dcb.fOutX;            // XON/XOFF out flow control 
    DWORD fInX1=dcb.fInX;             // XON/XOFF in flow control 
    DWORD fErrorChar1=dcb.fErrorChar;       // enable error replacement 
    DWORD fNull1=dcb.fNull;            // enable null stripping 
    DWORD fRtsControl1=dcb.fRtsControl;       // RTS flow control 
    DWORD fAbortOnError1=dcb.fAbortOnError;     // abort reads/writes on error 
    DWORD fDummy21=dcb.fDummy2;          // reserved 
    WORD wReserved1=dcb.wReserved;            // not currently used 
    WORD XonLim1=dcb.XonLim;               // transmit XON threshold 
    WORD XoffLim1=dcb.XoffLim;              // transmit XOFF threshold 
    BYTE ByteSize1=dcb.ByteSize;             // number of bits/byte, 4-8 
    BYTE Parity1=dcb.Parity;               // 0-4=no,odd,even,mark,space 
    BYTE StopBits1=dcb.StopBits;             // 0,1,2 = 1, 1.5, 2 
    char XonChar1=dcb.XonChar;              // Tx and Rx XON character 
    char XoffChar1=dcb.XoffChar;             // Tx and Rx XOFF character 
    char ErrorChar1=dcb.ErrorChar;            // error replacement character 
    char EofChar1=dcb.EofChar;              // end of input character 
    char EvtChar1=dcb.EvtChar;              // received event character 
    WORD wReserved11=dcb.wReserved1;      */     // reserved; do not use 





				//COM口的通信參數(shù)設置
		DCB dcb = {0};		
		dcb.DCBlength = sizeof(DCB);
		
		if (!::GetCommState (m_hCommPort,&dcb))
		{
		//	ATLTRACE6 ( "CSerialCommHelper : Failed to Get Comm State Reason: %d",GetLastError());
			return E_FAIL;
		}
		
		dcb.BaudRate	= CBR_9600;//波特率
		dcb.ByteSize	= 8;//數(shù)據(jù)尺寸
		dcb.Parity		= NOPARITY;	 //校驗選擇	
		 //終止位	
			dcb.StopBits	= ONESTOPBIT;


		dcb.fDsrSensitivity = 0;
		dcb.fDtrControl = DTR_CONTROL_ENABLE;
		dcb.fOutxDsrFlow = 0;
		if (!::SetCommState (m_hCommPort,&dcb))
		{
			AfxMessageBox("串口通信參數(shù)設置錯誤");
			
			//ATLTRACE6 ( "CSerialCommHelper : Failed to Set Comm State Reason: %d",GetLastError());
			return E_FAIL;
		}

		//設置串口的緩沖區(qū)
		SetupComm(m_hCommPort, 1024 ,1024);
		//設置串口超時參數(shù)
		COMMTIMEOUTS timeouts;
		timeouts.ReadIntervalTimeout = MAXDWORD;
		timeouts.ReadTotalTimeoutConstant = 0;
		timeouts.ReadTotalTimeoutMultiplier = 0;
		timeouts.WriteTotalTimeoutConstant = 0;
		timeouts.WriteTotalTimeoutMultiplier = 0;

		if(!SetCommTimeouts(m_hCommPort, &timeouts))
		{
			AfxMessageBox("串口超時狀態(tài)設置錯誤!");
			return E_FAIL;
		}
		//清除緩沖區(qū)
		PurgeComm(m_hCommPort, PURGE_RXCLEAR | PURGE_TXCLEAR | PURGE_RXABORT | PURGE_TXABORT);
		m_abIsConnected = true;
	}
	catch(...)
	{
		AfxMessageBox("串口設置異常!");
		return E_FAIL;
	}
	if(SUCCEEDED(hr))
	{
		AfxMessageBox("串口設置成功!");
		m_eState = SS_Init;
	}
	return hr;
}
//-------------------------------------------------------------------------------------
HRESULT CSerialComm::Start()
{
	m_eState = SS_Started;
	return S_OK;
}
//------------------------------------------------------------------------------------
HRESULT CSerialComm::Stop()
{
	m_eState = SS_Stopped;
	return S_OK;
}
//--------------------------------------------------------------------------------------
HRESULT CSerialComm::UnINit()
{

	HRESULT hr = S_OK;
	try
	{
		m_abIsConnected = false;
		CanRead = false;
	//	SignalObjectAndWait(m_hThreadTerm, m_hThread, INFINITE, FALSE);
	//	CloseAndCleanHandle(m_hThreadTerm);
	//	CloseAndCleanHandle(m_hThread);
		CloseAndCleanHandle(m_hCommPort);

	}
	catch(...)
	{
		ASSERT(0);
		hr = E_FAIL;
	}
	if(SUCCEEDED(hr))
		m_eState = SS_UnInit;
	return hr;
}

//-------------------------------------------------------------------------------------------------
HRESULT CSerialComm::CanProcess()
{
	switch(m_eState)
	{
		case SS_Unknown:ASSERT(0);return E_FAIL;
		case SS_UnInit :return E_FAIL;
		case SS_Started:return S_OK;
		case SS_Init:
		case SS_Stopped: return E_FAIL;
		default :ASSERT(0);
	}
	return E_FAIL;
}
//-------------------------------------------------------------------------------------------------
HRESULT CSerialComm::WRITEProtocol(const BYTE *data, DWORD dwSize)
{
	HRESULT hr = CanProcess();
	if(FAILED(hr)) return hr;
	int iRet = 0;
	OVERLAPPED ov;
	memset(&ov, 0, sizeof(ov));

	ov.hEvent = CreateEvent(0, true, 0, 0);
	DWORD dwBytesWritten = 0;

	iRet = ::WriteFile(m_hCommPort, data, dwSize, &dwBytesWritten, &ov);
	if(iRet == 0)
		WaitForSingleObject(ov.hEvent, INFINITE);
	CloseHandle(ov.hEvent);

	return S_OK;
}
//-------------------------------------------------------------------------------------------------
HRESULT CSerialComm::SerialWriteData(const BYTE *msg, DWORD size)
{
	UINT16 i;
	UINT16 j;
	UINT16 sendindex;

	sendindex = 0;
	sendbuffer[sendindex] = C0CHAR;
	sendindex = (sendindex+1);
	
	for (i=0; i<size; i++)
	{
		j=msg[i];
		if (j==C0CHAR)
		{
			sendbuffer[sendindex] = DBCHAR;
			sendindex++;
			sendbuffer[sendindex] = DCCHAR;
			sendindex++;
		}
		else if (j==DBCHAR)
		{
			sendbuffer[sendindex] = DBCHAR;
			sendindex++;
			sendbuffer[sendindex] = DDCHAR;
			sendindex++;
		}
		else
		{
			sendbuffer[sendindex] = msg[i];
			sendindex++;
		}
	}
	sendbuffer[sendindex] = C0CHAR;	
	//發(fā)送數(shù)據(jù)
	WRITEProtocol(sendbuffer, sendindex+1);
	return S_OK;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲国产一区二区三区| 一色屋精品亚洲香蕉网站| 亚洲精品一区二区精华| 亚洲天堂久久久久久久| 国产一区二区在线看| 欧美在线观看视频一区二区| 国产精品污网站| 麻豆91在线播放免费| 色噜噜狠狠一区二区三区果冻| 精品国精品国产尤物美女| 亚洲国产成人av| 91麻豆免费在线观看| 中文字幕高清一区| 国产资源精品在线观看| 欧美一区二区三区不卡| 亚洲主播在线观看| 色综合一个色综合亚洲| 国产精品美女久久久久久久网站| 久久99久国产精品黄毛片色诱| 欧美性猛交xxxx黑人交| 亚洲欧美一区二区视频| 国产丶欧美丶日本不卡视频| 日韩视频国产视频| 男女激情视频一区| 91精品国模一区二区三区| 亚洲午夜久久久久久久久久久| 色综合亚洲欧洲| 亚洲精品一二三| 91国偷自产一区二区三区成为亚洲经典| 国产欧美日韩三区| 国产传媒一区在线| 国产偷国产偷精品高清尤物| 国产一区亚洲一区| 日本一区二区三区免费乱视频| 国产老妇另类xxxxx| 国产欧美一二三区| 99在线精品免费| 《视频一区视频二区| 色综合亚洲欧洲| 天堂在线亚洲视频| 欧美一区二区视频在线观看2022 | 中文字幕中文字幕一区二区| 丁香亚洲综合激情啪啪综合| 久久久www免费人成精品| 国产传媒日韩欧美成人| 亚洲精品国产第一综合99久久| 欧美午夜精品一区二区蜜桃 | 亚洲天堂网中文字| 欧美日韩一级片在线观看| 日韩电影一区二区三区四区| 精品少妇一区二区三区免费观看| 国产麻豆精品在线观看| 亚洲人成网站精品片在线观看| 欧美在线999| 黄色精品一二区| 综合久久久久久久| 在线综合亚洲欧美在线视频| 国产成人免费在线视频| 亚洲一级二级在线| 精品国产一区久久| 91视视频在线观看入口直接观看www| 亚洲成人一区在线| 久久久久国产成人精品亚洲午夜| 99精品欧美一区二区三区小说 | 亚洲一区二区三区四区中文字幕| 欧美老人xxxx18| 国产精品99久久久久久久vr| 一区二区三区四区不卡视频 | 欧美精品丝袜久久久中文字幕| 久久超碰97中文字幕| 亚洲欧洲精品天堂一级| 在线电影欧美成精品| av网站免费线看精品| 奇米精品一区二区三区在线观看| 国产精品欧美经典| 欧美一级欧美一级在线播放| 99精品视频一区二区| 中文字幕视频一区| 666欧美在线视频| av在线不卡网| 国产一区二区三区久久久| 一二三四社区欧美黄| 久久久91精品国产一区二区三区| 欧美少妇bbb| 99久久精品国产精品久久| 久久机这里只有精品| 一区二区三区影院| 亚洲国产精品精华液2区45| 欧美一级片在线观看| 91精品福利视频| www.亚洲精品| 国产精品一级在线| 精品亚洲porn| 日本一不卡视频| 亚洲国产成人tv| 亚洲精品国产精品乱码不99 | 欧美电影免费观看高清完整版在线| thepron国产精品| 国产精品综合在线视频| 美国av一区二区| 看电视剧不卡顿的网站| 丝袜亚洲另类欧美综合| 亚洲一区二区综合| 亚洲精品一二三四区| 国产精品电影院| 亚洲天堂免费看| 亚洲色图欧美在线| 国产精品午夜久久| 国产精品国产精品国产专区不蜜| 久久久久国产精品人| 国产亚洲欧美中文| 国产人久久人人人人爽| 国产精品视频你懂的| 国产精品免费aⅴ片在线观看| 欧美激情艳妇裸体舞| 国产精品色哟哟网站| 中文字幕一区二区5566日韩| 国产精品国产三级国产aⅴ无密码| 国产精品乱码妇女bbbb| 欧美国产欧美亚州国产日韩mv天天看完整 | 精品欧美一区二区在线观看| 欧美r级电影在线观看| 精品粉嫩aⅴ一区二区三区四区| 精品成人在线观看| xnxx国产精品| 国产日韩在线不卡| √…a在线天堂一区| 亚洲综合免费观看高清完整版| 午夜精品123| 韩日精品视频一区| 成人精品一区二区三区四区 | 久草中文综合在线| 福利91精品一区二区三区| 成人高清av在线| 欧美在线免费播放| 欧美成人福利视频| 欧美国产1区2区| 亚洲在线免费播放| 久久精品国产77777蜜臀| 国产福利一区二区三区在线视频| 成人ar影院免费观看视频| 在线看日韩精品电影| 日韩欧美一区在线| 国产免费观看久久| 亚洲第一久久影院| 国产99久久久精品| 在线观看免费亚洲| 2023国产精品自拍| 亚洲欧美另类综合偷拍| 美女任你摸久久| 一本在线高清不卡dvd| 欧美一区二区福利在线| 中文字幕久久午夜不卡| 亚洲一区在线观看免费观看电影高清 | 国精产品一区一区三区mba视频 | 日韩一区二区三区电影 | 色就色 综合激情| 欧美成人激情免费网| 亚洲人被黑人高潮完整版| 久久99最新地址| 91黄色激情网站| 国产日韩av一区| 奇米色777欧美一区二区| 91亚洲资源网| 日本一区二区三区四区在线视频| 日韩电影一二三区| 91麻豆精东视频| 欧美国产日韩一二三区| 免费xxxx性欧美18vr| 欧美专区日韩专区| 一区二区中文视频| 岛国一区二区三区| 亚洲精品一线二线三线无人区| 亚洲一区二区三区中文字幕在线| 东方aⅴ免费观看久久av| 日韩精品一区二区在线| 亚洲自拍偷拍av| 色综合咪咪久久| 国产精品色婷婷久久58| 国产成a人亚洲| 久久婷婷国产综合精品青草| 男人的天堂亚洲一区| 欧美日韩高清影院| 亚洲国产精品影院| 色国产综合视频| 国产精品久久久久久久久久久免费看 | 欧美亚洲禁片免费| 一区二区在线电影| 91免费视频大全| 亚洲人成精品久久久久| 99精品国产99久久久久久白柏| 国产午夜精品一区二区三区视频| 另类综合日韩欧美亚洲| 日韩欧美在线网站| 理论片日本一区| 日韩欧美成人午夜| 精品综合久久久久久8888| 欧美一二三四在线| 精品综合免费视频观看| 欧美v国产在线一区二区三区|