#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 _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; }