📄 deviceport.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 + -