?? gpscomm.h
字號(hào):
///////////////////////////////////////////////////////////////////////////////
// GpsComm.h: interface for the CGpsComm class
//
// Copyright (c) 2004,上海合眾思?jí)芽萍加邢挢?zé)任公司GIS部
//
// All rights reserved
//
// 文件名稱:GpsComm.h
//
// 摘要 :通訊基類
//
// 作者 :Hansom
//
// 當(dāng)前版本:1.1
//
// 完成日期:2004年04月12日
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_GPSCOMM_H__89659A50_A6EC_4103_95C2_6B7DEAA2EEFA__INCLUDED_)
#define AFX_GPSCOMM_H__89659A50_A6EC_4103_95C2_6B7DEAA2EEFA__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <Afxtempl.h>
#include "IGpsComm.h"
///////////////////////////////////////////////////////////////////////////////
#define WM_COMM_RXCHAR WM_USER+500
const long BUFFER_SIZE = 512; // 定義通用緩沖區(qū)尺寸
///////////////////////////////////////////////////////////////////////////////
struct ST_LOG_WND
{
CWnd *pWnd; // 活動(dòng)窗口的句柄
WORD dwMsgType; // 消息類型
};
///////////////////////////////////////////////////////////////////////////////
// GPS通訊基類
// OpenComm() // 打開端口
// CloseComm() // 關(guān)閉端口
// IsPortOpen() // 查詢端口狀態(tài)
// GetCommPara() // 查詢端口當(dāng)前設(shè)置
// SetCommPara() // 設(shè)置端口參數(shù)
// GetGpsCommObjPtr() // 得到類的指針
// SearchOneFrame() // 從接收緩沖區(qū)搜索完整一幀,并轉(zhuǎn)換為具體的數(shù)據(jù)結(jié)構(gòu)
///////////////////////////////////////////////////////////////////////////////
class CGpsComm : public IGpsComm
{
public:
CGpsComm();
virtual ~CGpsComm();
public:
virtual BOOL OpenComm(CWnd * pwnd, GPS_DATA_TYPE dwMsgType = ENUM_All_GPS);
virtual BOOL CloseComm(CWnd * pwnd);
virtual BOOL Stop();
virtual BOOL Start();
virtual BOOL IsPortOpen() const {return (m_hComm != NULL);};
virtual BOOL SetCommPara(const ST_COMM_PARA &pSerialPara);
virtual ST_COMM_PARA GetCommPara() const;
virtual int SearchOneFrame(char *pchRevBuf, const int nRevLen, int &nReadPtr,
const int nWritePtr, ST_MSG *pMsg) = 0;
static CGpsComm* GetGpsCommObjPtr(){return c_GpsCommObj;};
// virtual BOOL SendData(strucMsg* pMsg);
private:
HANDLE m_hComm; // 串口句柄
CWinThread *m_Thread; // 端口任務(wù)線程
ST_COMM_PARA m_SerialPara; // 串口參數(shù)
char *m_pchRevBuffer; // 接收緩沖區(qū)
int m_nRevRPtr; // 接收緩沖區(qū)讀指針
int m_nRevWPtr; // 接收緩沖區(qū)寫指針
ST_MSG *m_struMsg; // 向窗口發(fā)送的消息隊(duì)列
int m_nMsgCur;
static CGpsComm *c_GpsCommObj;
BOOL m_bThreadAlive; // 端口任務(wù)線程是否被激活
CList<ST_LOG_WND, ST_LOG_WND&> m_listWnd; // 需要數(shù)據(jù)的活動(dòng)窗口
CRITICAL_SECTION m_csCommunicationSync; // 控制串口操作數(shù)據(jù)同步對(duì)象
private:
void ReceiveData(); // 接收數(shù)據(jù)
void WriteData(char chData); // 寫一個(gè)字符到接收緩沖區(qū)
static UINT CommThread(LPVOID pParam); // 串口監(jiān)聽線程
BOOL GetNeedMsg(DWORD dwMsgType, GPS_DATA_TYPE emMsg); // 得到需要的消息句柄
};
#endif // !defined(AFX_GPSCOMM_H__89659A50_A6EC_4103_95C2_6B7DEAA2EEFA__INCLUDED_)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -