⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 deviceport.cpp

📁 用VC++实现在PC平台的主从蓝牙HCI层数据传输
💻 CPP
字号:
#include "StdAfx.h"
#include ".\deviceport.h"
#include <queue>

using namespace std;

queue<BYTE> g_qReceive;

CDevicePort::CDevicePort(void)
{
	m_hWatchThread	= NULL;

	m_fConnect		= FALSE;

	m_pDevice		= NULL;
}

CDevicePort::~CDevicePort(void)
{

}

BOOL CDevicePort::Connect(CBasePort* pDevice)
{
	DWORD	dwID;
	DWORD	dwResult = TRUE;

	if (!m_fConnect)
	{
		m_pDevice = pDevice;
		if (m_pDevice->IsOpen())
		{
			m_hWatchThread = CreateThread(NULL,0,WatchThreadProc,this,0,&dwID);
			if (m_hWatchThread != NULL)
			{
				dwResult = TRUE;
			}
			else
			{
				m_pDevice	= NULL;
				dwResult	= FALSE;
			}
		}
		else
		{
			dwResult = FALSE;
		}
	}
	else	// Device is connect already
	{
		;
	}

	return TRUE;
}
BOOL CDevicePort::DisConnect(void)
{
	if (m_fConnect)
	{
		m_pDevice->Close();
		WaitForSingleObject(m_hWatchThread,INFINITE);
		CloseHandle(m_hWatchThread);
		m_fConnect = FALSE;
	}
	else
	{
		;
	}
	return TRUE;
}

DWORD WINAPI CDevicePort::WatchThreadProc(PVOID pParam)
{
	CDevicePort* pOwner = (CDevicePort*)pParam;

	while(pOwner->m_pDevice->IsOpen())
	{
	}
	pOwner->m_fConnect = FALSE;
	return 0;
}
BOOL CDevicePort::Send(BYTE* pData,UINT uLen)
{
	ASSERT(pData != NULL);
	for (UINT i=0; i<uLen; i++)
	{
		g_qReceive.push(*pData++);
	}
	return TRUE;
}

BOOL CDevicePort::Receive(BYTE* pData,UINT& uLen)
{
	ASSERT(pData != NULL);
	for (UINT i=0; i<uLen; i++)
	{
		g_qReceive.push(*pData++);
	}
	return TRUE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -