📄 gps.h
字号:
// GPS.h : Declaration of the CGPS
#ifndef __GPS_H_
#define __GPS_H_
#include "resource.h" // main symbols
#include <atlctl.h>
#include <comutil.h>
#include "..\\..\\..\\监测测向数据定义.h"
#include "CXGPSCP.h"
#import "..\\..\\..\\server\\MonitorDFServer\\Hzx.tlb" no_namespace named_guids
extern _ATL_FUNC_INFO OnGPSDataInfo;
extern _ATL_FUNC_INFO OnGPSErrorInfo;
/////////////////////////////////////////////////////////////////////////////
// CGPS
class ATL_NO_VTABLE CGPS :
public CComObjectRootEx<CComSingleThreadModel>,
public IDispatchImpl<IGPS, &IID_IGPS, &LIBID_CXGPSLib>,
public IConnectionPointContainerImpl<CGPS>,
public CComCoClass<CGPS, &CLSID_GPS>,
public IDispEventImpl<0,CGPS,&DIID__ICX803Events,&LIBID_HZXLib>,
public CProxy_IGPSEvents< CGPS >
{
public:
CGPS()
{
m_bRun=FALSE;
/*
WORD wVersionRequested=MAKEWORD( 2, 2 );
WSADATA wsaData;
int err = WSAStartup( wVersionRequested, &wsaData );
hostent* phost=gethostbyname("");
in_addr* pinaddr=(in_addr*)phost->h_addr;
char* pszHostIP=inet_ntoa(*pinaddr);
m_sckBroadCast=socket(AF_INET,SOCK_DGRAM,0);
sockaddr_in soin;
soin.sin_family =AF_INET;
soin.sin_addr.s_addr=INADDR_ANY;
soin.sin_port =htons(0);
bind(m_sckBroadCast,(sockaddr *)&soin,sizeof(soin));
BOOL l=1;
setsockopt(m_sckBroadCast,SOL_SOCKET,SO_BROADCAST,(char FAR*)&l,sizeof(l));
memset(&m_si,0,sizeof(m_si));
m_si.sin_family =AF_INET;
m_si.sin_port =htons(SOCKET_GPS);
m_si.sin_addr.s_addr=INADDR_BROADCAST;
*/
}
~CGPS()
{
if(m_pDevicePoint.GetInterfacePtr())
DispEventUnadvise(m_pDevicePoint);
m_bRun=FALSE;
shutdown(m_sckBroadCast, SD_SEND|SD_RECEIVE);
closesocket(m_sckBroadCast);
}
//设备事件接收器
HRESULT _stdcall OnGPSData (long lLongitude, long lLatitude) //1/10000度
{
Fire_DataReceive(lLongitude/10000.0, lLatitude/10000.0);
/*
sendto(m_sckBroadCast,szSend,strlen(szSend),0,(const SOCKADDR*)&(m_si),sizeof(m_si));
*/
return S_OK;
}
HRESULT _stdcall OnGPSError (BSTR bstrMsg)
{
Fire_ErrorMsg(bstrMsg);
return S_OK;
}
DECLARE_REGISTRY_RESOURCEID(IDR_GPS)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CGPS)
COM_INTERFACE_ENTRY(IGPS)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(IConnectionPointContainer)
COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
END_COM_MAP()
BEGIN_CONNECTION_POINT_MAP(CGPS)
CONNECTION_POINT_ENTRY(DIID__IGPSEvents)
END_CONNECTION_POINT_MAP()
BEGIN_SINK_MAP(CGPS)
//SINK_ENTRY_EX(0, DIID__ICX803Events, 2, OnGPSData)
//SINK_ENTRY_EX(0, DIID__ICX803Events, 5, OnGPSError)
SINK_ENTRY_INFO(0, DIID__ICX803Events, 2, OnGPSData, &OnGPSDataInfo)
SINK_ENTRY_INFO(0, DIID__ICX803Events, 5, OnGPSError, &OnGPSErrorInfo)
END_SINK_MAP()
// IGPS
public:
STDMETHOD(get_ServerClsid)(/*[out, retval]*/ GUID *pVal);
STDMETHOD(get_Name)(/*[out, retval]*/ BSTR *pVal);
STDMETHOD(get_clsid)(/*[out, retval]*/ GUID *pVal);
STDMETHOD(ShowConfigDlg)();
STDMETHOD(get_dfLat)(/*[out, retval]*/ double *pVal);
STDMETHOD(get_dfLong)(/*[out, retval]*/ double *pVal);
STDMETHOD(get_Run)(/*[out, retval]*/ BOOL *pVal);
STDMETHOD(put_Run)(/*[in]*/ BOOL newVal);
STDMETHOD(get_config)(/*[out, retval]*/ VARIANT *pVal);
STDMETHOD(put_config)(/*[in]*/ VARIANT newVal);
_variant_t m_config;
BOOL m_bRun;
sockaddr_in m_si; //广播Socket
SOCKET m_sckBroadCast; //广播Socket
ICX803Ptr m_pDevicePoint; //控制的川新设备
};
#endif //__GPS_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -