📄 commlink.cpp
字号:
// CommLink.cpp: implementation of the CCommLink class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "GTMeter.h"
#include "CommLink.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
const FT_DATA = 3;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CCommLink::CCommLink()
{
m_bOpen = FALSE;
}
CCommLink::~CCommLink()
{
Close();
}
BOOL CCommLink::Initilize(CIpAddress& ipAddrLocal, int nLinkMethod)
{
Close();
m_ipAddrLocal = ipAddrLocal;
if (!InitSocketLib())
{
//MessageBox(NULL, _T("网络初始化失败!"), NULL, MB_OK | MB_ICONEXCLAMATION);
return FALSE;
}
m_udpSocket.SetLocalIpAddress(m_ipAddrLocal);
m_udpSocket.SetCommLink(this);
m_udpSocket.Start();
m_bOpen = TRUE;
return TRUE;
}
BOOL CCommLink::InitSocketLib()
{
WSADATA wsaData;
WORD wVersionRequested = MAKEWORD(2, 0);
if (WSAStartup(wVersionRequested, &wsaData) != 0)
return FALSE;
if (LOBYTE(wsaData.wVersion) != 2 ||
HIBYTE(wsaData.wVersion) != 0)
{
WSACleanup();
return FALSE;
}
return TRUE;
}
void CCommLink::OnRxPackage(CUdpSocket* pUdpSocket, CIpAddress& ipAddrPeer, BYTE* p, DWORD dwLen)
{
switch (p[12])
{
case FT_DATA:
OnRxData(pUdpSocket, ipAddrPeer, p, dwLen);
break;
}
}
void CCommLink::OnRxData(CUdpSocket* pUdpSocket, CIpAddress& ipAddrPeer, BYTE* p, DWORD dwLen)
{
}
void CCommLink::OnUdpSocketOpen()
{
}
void CCommLink::OnUdpSocketClose()
{
}
void CCommLink::Write(CMeter* pMeter, BYTE* p, DWORD dwLen)
{
BYTE buf[4096];
strcpy((char*)buf, pMeter->m_sMobileCode);
buf[12] = FT_DATA;
memcpy(&buf[13], p, dwLen);
BOOL b = m_udpSocket.Write(pMeter->m_ipAddrPeer, buf, dwLen + 13);
}
void CCommLink::Close()
{
if (m_bOpen)
{
m_bOpen = FALSE;
m_udpSocket.Stop();
WSACleanup();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -