?? igpscomm.h
字號(hào):
///////////////////////////////////////////////////////////////////////////////
// IGpsComm.h: interface for the IGpsComm class
//
// Copyright (c) 2004,上海合眾思?jí)芽萍加邢挢?zé)任公司GIS部
//
// All rights reserved
//
// 文件名稱(chēng):IGpsComm.h
//
// 摘要 :通訊接口類(lèi)
//
// 作者 :Hansom
//
// 當(dāng)前版本: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;
///////////////////////////////////////////////////////////////////////////////
// 通訊協(xié)議類(lèi)型
enum GPS_SERIAL_TYPE
{
Gps_Type_Nmea0183, // 0 表示Nmea0183協(xié)議
Gps_Type_GarMin, // 1 表示GarMin協(xié)議
Gps_Type_Other // 如果需要新添加協(xié)議類(lèi)型,修改此處即可
};
///////////////////////////////////////////////////////////////////////////////
// 串口收到的GPS數(shù)據(jù)消息結(jié)構(gòu)
enum GPS_DATA_TYPE
{
// 接收幀
ENUM_All_GPS = DATA_ALL_GPS,
ENUM_GPSDATA,
ENUM_DOP,
ENUM_SAT,
ENUM_ALT,
ENUM_ALL_NAVI = DATA_ALL_NAVI
};
///////////////////////////////////////////////////////////////////////////////
// 設(shè)置端口狀態(tài)結(jié)構(gòu)體
// lBaud 波特率(可選參數(shù)如下):600、1200、2400、4800、9600、19200...
// cPort COM端口號(hào):1~10
// cDataBits 數(shù)據(jù)位(可選參數(shù)如下):8、7、6
// cParity 奇偶校驗(yàn)(可選參數(shù)如下):0_無(wú)_none、1_奇_odd、2_偶_even
// cStopBits 停止位(可選參數(shù)如下):0_0、1_1.5、2_2
// ProtocolType 通訊協(xié)議類(lèi)型,枚舉變量
// cOthers 保留
///////////////////////////////////////////////////////////////////////////////
struct ST_COMM_PARA
{
DWORD lBaud;
BYTE cPort;
BYTE cDataBits;
BYTE cParity;
BYTE cStopBits;
GPS_SERIAL_TYPE ProtocolType;
BYTE cOthers;
};
///////////////////////////////////////////////////////////////////////////////
// 消息頭結(jié)構(gòu)
struct ST_MSGHEAD
{
GPS_DATA_TYPE enumMsgType; // 消息標(biāo)識(shí)
int nMsgLen; // 消息內(nèi)容長(zhǎng)度
};
///////////////////////////////////////////////////////////////////////////////
// 消息結(jié)構(gòu)
struct ST_MSG
{
ST_MSGHEAD MsgHead; // 消息頭結(jié)構(gòu)
PVOID pMsg; // 消息體指針,長(zhǎng)度=頭結(jié)構(gòu)中的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,
//發(fā)送幀
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
{//消息頭結(jié)構(gòu)
MS_TYPE enumMsgType; //消息標(biāo)識(shí)
int nMsgLen; //消息內(nèi)容長(zhǎng)度
}strucMsgHead;
typedef struct
{//消息結(jié)構(gòu)
strucMsgHead MsgHead; //消息頭結(jié)構(gòu)
PVOID pMsg; //消息體指針,長(zhǎng)度=頭結(jié)構(gòu)中的nMsgLen
}strucMsg;
typedef struct
{
BOOL bSupportWpt;
BOOL bSupportRte;
BOOL bSupportTrk;
}SUPPORT_DATA;
///////////////////////////////////////////////////////////////////////////////
// GPS通訊接口類(lèi)
// OpenComm() // 打開(kāi)端口
// CloseComm() // 關(guān)閉端口
// IsPortOpen() // 查詢(xún)端口狀態(tài)
// GetCommPara() // 查詢(xún)端口當(dāng)前設(shè)置
// SetCommPara() // 設(shè)置端口參數(shù)
///////////////////////////////////////////////////////////////////////////////
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);
};
///////////////////////////////////////////////////////////////////////////////
// 創(chuàng)建并返回一個(gè)IGPSComm對(duì)象,參數(shù)為通訊協(xié)議類(lèi)型
__declspec( dllexport )IGpsComm * CreateGpsComm(GPS_SERIAL_TYPE type);
// 返回當(dāng)前使用的GPS通訊對(duì)象指針
__declspec( dllexport )IGpsComm * GetCurrentGpsComm();
// 關(guān)閉并刪除USCOMM 對(duì)象
__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_)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -