You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
3.0 KiB
C++
136 lines
3.0 KiB
C++
#include "CommMgr.h"
|
|
|
|
CCommMgr::CCommMgr(void)
|
|
{
|
|
|
|
}
|
|
CCommMgr::~CCommMgr(void)
|
|
{
|
|
|
|
}
|
|
//打开com 口(dwBaudRate 是波特率)
|
|
bool CCommMgr::Open(DWORD dwPort, DWORD dwBaudRate)
|
|
{
|
|
if(IsOpen())//打开状态直接返回
|
|
return true;
|
|
|
|
//CString str = "Function :[CCommPortMgr::Open][打开com 口]";
|
|
////gLogMgr->WriteDebugLog(str);
|
|
|
|
//CString str1;
|
|
//str1.Format("%ld",dwPort);
|
|
|
|
//str = "Result :[com 口<"+str1+">打开]";
|
|
bool ret;
|
|
if(m_Com.Open(dwPort,dwBaudRate) == false)
|
|
{
|
|
//gLogMgr->WriteDebugLog(str,_LOG_ERROR);
|
|
ret = false;
|
|
}
|
|
else
|
|
{
|
|
//str += "[OK]";
|
|
//gLogMgr->WriteDebugLog(str);
|
|
ret = true;
|
|
}
|
|
return ret;
|
|
}
|
|
//打开串口, 使用类似"9600, 8, n, 1"的设置字符串设置串口
|
|
bool CCommMgr::Open(DWORD dwPort, char *szSetStr)
|
|
{
|
|
// CString str = "Function :[CCommPortMgr::Open][打开com 口]";
|
|
//gLogMgr->WriteDebugLog(str);
|
|
|
|
//CString str1;
|
|
//str1.Format("%ld",dwPort);
|
|
|
|
//str = "Result :[com 口<"+str1+">打开]";
|
|
bool ret;
|
|
|
|
int len = MultiByteToWideChar(CP_ACP, 0, szSetStr, -1, NULL, 0); // 计算所需缓冲区大小
|
|
wchar_t* wStr = new wchar_t[len]; // 分配宽字符缓冲区
|
|
MultiByteToWideChar(CP_ACP, 0, szSetStr, -1, wStr, len); // 转换
|
|
LPCTSTR lpctstr = wStr;
|
|
|
|
if(m_Com.Open(dwPort, lpctstr) == false)
|
|
{
|
|
//gLogMgr->WriteDebugLog(str,_LOG_ERROR);
|
|
ret = false;
|
|
}
|
|
else
|
|
{
|
|
//str += "[OK]";
|
|
//gLogMgr->WriteDebugLog(str);
|
|
ret = true;
|
|
}
|
|
delete[] wStr;
|
|
return ret;
|
|
}
|
|
void CCommMgr::SetWorkMode(BOOL bSleep, DWORD dwOutTime)
|
|
{
|
|
m_Com.SetWorkMode(bSleep, dwOutTime);
|
|
}
|
|
//绑定串口消息的窗口ID
|
|
void CCommMgr::SetWnd(HWND hWnd)
|
|
{
|
|
//CString str = "Function :[SetWnd][绑定串口消息的响应窗口ID]";
|
|
//gLogMgr->WriteDebugLog(str);
|
|
|
|
//m_Com.SetWnd(hWnd);
|
|
}
|
|
|
|
void CCommMgr::SetNotify(std::function<void()> _pfn)
|
|
{
|
|
//CString str = "Function :[SetWnd][绑定串口消息的响应函数ID]";
|
|
m_Com.SetDataCallBack(_pfn);
|
|
}
|
|
//读取串口消息到szBuffer
|
|
DWORD CCommMgr::ReadBuf(char *szBuffer,DWORD dwBufferLength)
|
|
{
|
|
return m_Com.Read(szBuffer,dwBufferLength);
|
|
}
|
|
|
|
std::string CCommMgr::ReadStr()
|
|
{
|
|
const int dwBufferLength = 500;
|
|
char szBuffer[dwBufferLength];
|
|
memset(szBuffer,'0',dwBufferLength);
|
|
|
|
m_Com.ReadString(szBuffer,dwBufferLength);
|
|
//转化为CString
|
|
//CString str = szBuffer;
|
|
|
|
std::string str(szBuffer);
|
|
return str;
|
|
}
|
|
|
|
int CCommMgr::Read(LPVOID Buffer, DWORD dwBufferLength)
|
|
{
|
|
return m_Com.Read(Buffer,dwBufferLength);
|
|
}
|
|
//发送消息到串口
|
|
DWORD CCommMgr::Write(const char *szBuffer)
|
|
{
|
|
return m_Com.Write(szBuffer, strlen(szBuffer));
|
|
}
|
|
|
|
DWORD CCommMgr::WriteBuf(LPVOID Buffer, DWORD dwBufferLength)
|
|
{
|
|
return m_Com.Write(Buffer,dwBufferLength);
|
|
}
|
|
//关闭串口
|
|
void CCommMgr::Close()
|
|
{
|
|
m_Com.Close();
|
|
}
|
|
void CCommMgr::SetBufferSize(DWORD dwInputSize, DWORD dwOutputSize)
|
|
{
|
|
//m_Com.SetBufferSize(dwInputSize,dwOutputSize);
|
|
}
|
|
int CCommMgr::GetInputSize()
|
|
{
|
|
//gLogMgr->WriteDebugLog("BufferSize","",m_Com.GetInputSize());
|
|
return 0;
|
|
}
|
|
|