⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 igpscomm.h

📁 非常好用的GPS串口通信
💻 H
字号:
///////////////////////////////////////////////////////////////////////////////
// IGpsComm.h: interface for the IGpsComm class
//
// Copyright (c) 2004,上海合众思壮科技有限责任公司GIS部
//
// All rights reserved
//
// 文件名称:IGpsComm.h
//
// 摘要    :通讯接口类
//
// 作者    :Hansom
//
// 当前版本:1.1
//
// 完成日期:2004年04月12日
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_IGPSCOMM_H__D3FCF0B0_E7A5_4917_83E4_D2FDDE447597__INCLUDED_)
#define AFX_IGPSCOMM_H__D3FCF0B0_E7A5_4917_83E4_D2FDDE447597__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

const long DATA_ALL_GPS		= 1;
const long DATA_ALL_NAVI	= 8;

///////////////////////////////////////////////////////////////////////////////
// 通讯协议类型
enum GPS_SERIAL_TYPE
{
	Gps_Type_Nmea0183,	// 0 表示Nmea0183协议
	Gps_Type_GarMin,	// 1 表示GarMin协议
	Gps_Type_Other		// 如果需要新添加协议类型,修改此处即可
};

///////////////////////////////////////////////////////////////////////////////
// 串口收到的GPS数据消息结构
enum GPS_DATA_TYPE
{
	// 接收帧
	ENUM_All_GPS = DATA_ALL_GPS,
	ENUM_GPSDATA,
	ENUM_DOP,
	ENUM_SAT,
	ENUM_ALT,

	ENUM_ALL_NAVI = DATA_ALL_NAVI
};

///////////////////////////////////////////////////////////////////////////////
// 设置端口状态结构体
// lBaud		波特率(可选参数如下):600、1200、2400、4800、9600、19200...
// cPort		COM端口号:1~10
// cDataBits	数据位(可选参数如下):8、7、6
// cParity		奇偶校验(可选参数如下):0_无_none、1_奇_odd、2_偶_even
// cStopBits	停止位(可选参数如下):0_0、1_1.5、2_2
// ProtocolType	通讯协议类型,枚举变量
// cOthers		保留
///////////////////////////////////////////////////////////////////////////////
struct ST_COMM_PARA
{
    DWORD	lBaud;
    BYTE	cPort;
    BYTE	cDataBits;
    BYTE	cParity;
    BYTE	cStopBits;
	GPS_SERIAL_TYPE ProtocolType;
    BYTE	cOthers;
};

///////////////////////////////////////////////////////////////////////////////
// 消息头结构
struct ST_MSGHEAD
{
	GPS_DATA_TYPE			enumMsgType;				// 消息标识
	int						nMsgLen;					// 消息内容长度
};

///////////////////////////////////////////////////////////////////////////////
// 消息结构
struct ST_MSG
{
	ST_MSGHEAD				MsgHead;					// 消息头结构
	PVOID					pMsg;						// 消息体指针,长度=头结构中的nMsgLen
};
typedef enum
{
//接收帧
	MS_All_GPS = 1,
	MS_GPSDATA,
	MS_DOP,
	MS_SAT,
	MS_ALT,

	MS_ALL_NAVI = 8,
	MS_WPT,
	MS_RTE_HDR,
	MS_RTE_WPT,
	MS_TRK_HDR,
	MS_TRK,
	MS_SUPPORT_TYPE,
//共用
	MS_ACK,
	MS_NAK,
	MS_BEGIN,
	MS_OVER,
	MS_CANCEL,

//发送帧
	MS_DOWNLOAD_INFO,
	MS_DOWNLOAD_WPT,
	MS_DOWNLOAD_RTE,
	MS_DOWNLOAD_TRK,

	MS_UPLOAD_WPT,
	MS_UPLOAD_RTE,
	MS_UPLOAD_TRK,

}MS_TYPE;

typedef enum 
{
	eProtType,
	eUpWpt,
	eUpRte,
	eUpTrk,
	eDownWpt,
	eDownRte,
	eDownTrk,
	eIdle

}WorkType;

typedef enum
{
	emFirst = 0,
	emWpt,
	emRte,
	emTrk,
	emLast
}DataType;

typedef struct 
{//消息头结构
	MS_TYPE					enumMsgType;				//消息标识
	int						nMsgLen;					//消息内容长度
}strucMsgHead;

typedef struct 
{//消息结构
	strucMsgHead			MsgHead;					//消息头结构
	PVOID					pMsg;						//消息体指针,长度=头结构中的nMsgLen
}strucMsg;

typedef struct
{
	BOOL				bSupportWpt;
	BOOL				bSupportRte;
	BOOL				bSupportTrk;
}SUPPORT_DATA;
///////////////////////////////////////////////////////////////////////////////
// GPS通讯接口类
// OpenComm()				// 打开端口
// CloseComm()				// 关闭端口
// IsPortOpen()				// 查询端口状态
// GetCommPara()			// 查询端口当前设置
// SetCommPara()			// 设置端口参数
///////////////////////////////////////////////////////////////////////////////
class IGpsComm;
class __declspec(dllexport)	IGpsComm
{
public:
	IGpsComm(){};
	virtual ~IGpsComm(){};

public:
	virtual BOOL OpenComm(CWnd *pwnd, GPS_DATA_TYPE dwMsgType = ENUM_All_GPS) = 0;
	virtual BOOL CloseComm(CWnd *pwnd)									= 0;
	virtual BOOL Stop()													= 0;
	virtual BOOL Start()												= 0;
	virtual BOOL IsPortOpen() const										= 0;
	virtual ST_COMM_PARA GetCommPara() const							= 0;
	virtual BOOL SetCommPara(const ST_COMM_PARA &pSerialPara)			= 0;
	virtual int  SearchOneFrame(char *pchRevBuf, const int nRevLen, int &nReadPtr, 
								   const int nWritePtr, ST_MSG *pMsg)	= 0;
//	virtual BOOL	SendData(strucMsg* pMsg);
};

///////////////////////////////////////////////////////////////////////////////
// 创建并返回一个IGPSComm对象,参数为通讯协议类型
__declspec( dllexport )IGpsComm * CreateGpsComm(GPS_SERIAL_TYPE type);
// 返回当前使用的GPS通讯对象指针 
__declspec( dllexport )IGpsComm * GetCurrentGpsComm();
// 关闭并删除USCOMM 对象
__declspec( dllexport )BOOL	CloseGpsComm();

// Hansom Add 200405081300 debugfile
extern void DebugFile(const TCHAR * lpszFormat, ...);

#endif // !defined(AFX_IGPSCOMM_H__D3FCF0B0_E7A5_4917_83E4_D2FDDE447597__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -