?? mywin32port.h
字號:
/************************************************************************/
/* 類名稱: 串口操作類 */
/* 功 能: 實現對串口的基本操作 */
/* 設計者: Jinlong|Luo */
/* 修訂記錄: */
/* 設計時間: 2007-9-24 */
/************************************************************************/
#ifndef _MYWIN32PORT_H
#define _MYWIN32PORT_H
#if _MSC_VER > 1000
#pragma once
#endif
#include "Afxtempl.h"
#include "Globe.h"
#include "ProtocolOfYC.h"
class DLL_EXPORT MyWin32Port
{
public:
MyWin32Port();
virtual ~MyWin32Port();
//串口操作
public:
// 關閉串口通訊并釋放其占用端口
void CloseMyWin32Port() ;
// 根據輸入的串口通訊參數打開串口
BOOL OpenMyWin32Port(HWND hWnd,
CString szPort,
long dwBaudRate,
char btParity = NOPARITY ,
char btSize = 8 ,
char btStopBits = ONESTOPBIT ,
long ReadIntervalTimeout = NULL,
long ReadTotalTimeoutMultiplier = NULL,
long ReadTotalTimeoutConstant = NULL,
long WriteTotalTimeoutMultiplier = NULL,
long WriteTotalTimeoutConstant = NULL,
long dwCommMask = EV_RXCHAR|EV_TXEMPTY );
// 根據輸入的串口通訊參數打開串口
BOOL OpenMyWin32Port(HWND hWnd,
char btID,
long dwBaudRate,
char btParity = NOPARITY,
char btSize = 8,
char btStopBits = ONESTOPBIT ,
long ReadIntervalTimeout = NULL,
long ReadTotalTimeoutMultiplier = NULL,
long ReadTotalTimeoutConstant = NULL,
long WriteTotalTimeoutMultiplier = NULL,
long WriteTotalTimeoutConstant = NULL,
long dwCommMask = EV_RXCHAR|EV_TXEMPTY );
protected:
//啟動接收線程
BOOL StartReceiveThread();
//啟動解析線程
BOOL StartInfoProcessThread();
//終止接收線程
BOOL EndReceiveThread();
//終止解析線程
BOOL EndInfoProcessThread();
//處理接收隊列中的信息
BOOL Process( char* pContent, int nLength );
public:
//接收線程。
static UINT ReceiveThread( PVOID pParameter );
//信息處理線程
static UINT InfoProcessThread(PVOID pParameter);
public:
BOOL m_bIsOpen ; //串口通訊是否占用端口的標識
private:
HANDLE m_hCom; //串口句柄
HWND m_hWnd; //窗口句柄
HANDLE m_hReceiveThread; //接收線程句柄
HANDLE m_hInfoProcessThread;//解析線程句柄
HANDLE m_hReceiveCloseEvent;//接收線程退出事件
HANDLE m_hInfoProcessCloseEvent;//解析線程退出事件
BYTE* m_pCurParsedContent; //當前解析協議指令
BYTE m_csRevBuf[SERIAL_CHAR_BUFFER_MAX+1]; //接受字符緩存
BYTE m_csTempBuf[SERIAL_CHAR_BUFFER_MAX*2+1]; //臨時緩沖區,用于保存不完整的幀數據
};
////////////////////////////////導出函數相關//////////////////////////////////////////
EYCDataType DLL_EXPORT GetFrameTypeID (BYTE *pData, int &realLen) ;//取得幀類型
int DLL_EXPORT GetFrame1Data (BYTE *pData, int dataLen, YCFRAMEOFFirst *pFrame, int nSize) ;//取得遙測第一幀數據
int DLL_EXPORT GetFrame2Data (BYTE *pData, int dataLen, YCFRAMEOFSecond *pFrame, int nSize) ;//取得遙測第二幀數據
int DLL_EXPORT GetFrame3Data (BYTE *pData, int dataLen, YCFRAMEOFThird *pFrame, int nSize) ;//取得遙測第三幀數據
int DLL_EXPORT GetFrame4Data (BYTE *pData, int dataLen, YCFRAMEOFFourth *pFrame, int nSize) ;//取得遙測第四幀數據
int DLL_EXPORT GetFrame5Data (BYTE *pData, int dataLen, YCFRAMEOFFifth *pFrame, int nSize) ;//取得遙測第五幀數據
int DLL_EXPORT GetFrame6Data (BYTE *pData, int dataLen, YCFRAMEOFSix *pFrame, int nSize) ;//取得遙測第六幀數據
int DLL_EXPORT GetFrame7Data (BYTE *pData, int dataLen, YCFRAMEOFSeven *pFrame, int nSize) ;//取得遙測第七幀數據
int DLL_EXPORT Double48ToDouble64(BYTE sourArr[6],BYTE destArr[8]);//48位double轉64位double
BOOL DLL_EXPORT RadianToDegree(double dRadian,int& degree,int& minute,int& second,int& tenSecond);//弧度轉化為十進制的度分秒
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -