📄 igpscomm.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 + -