?? yscomm.h
字號:
// YsAT.h: interface for the CYsComm class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_YSAT_H__D43071E4_C7CF_11D5_971D_0050BADA81C3__INCLUDED_)
#define AFX_YSAT_H__D43071E4_C7CF_11D5_971D_0050BADA81C3__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/****************************************************************
名稱: 重疊操作串口類
作者: 廣州暨南大學97計算機 姚舜
EMAIL: ycatx@ycatx.net
創建時間: 2001.10.23
最近修改時間: 2003.5.21
功能: 對串口操作進行全面的封裝
等級: ☆☆☆☆☆
****************************************************************/
#define TYPE_READ 1
#define TYPE_WRITE 0
//#define BAUDRATE 1200//定義baudrate
//定義串口事件
#define WM_YSCOMM_MESSAGE WM_USER+2998
#define WM_EV_BREAK WM_USER+2999 //A break was detected on input.
#define WM_EV_CTS WM_EV_BREAK+1 //The CTS (clear-to-send) signal changed state.
#define WM_EV_DSR WM_EV_BREAK+2 //The DSR (data-set-ready) signal changed state.
#define WM_EV_ERR WM_EV_BREAK+3 //A line-status error occurred. Line-status errors are CE_FRAME, CE_OVERRUN, and CE_RXPARITY.
#define WM_EV_RING WM_EV_BREAK+4 //A ring indicator was detected.
#define WM_EV_RLSD WM_EV_BREAK+5 //The RLSD (receive-line-signal-detect) signal changed state.
#define WM_EV_RXCHAR WM_EV_BREAK+6 //A character was received and placed in the input buffer.
#define WM_EV_RXFLAG WM_EV_BREAK+7 //The event character was received and placed in the input buffer. The event character is specified in the device's DCB structure, which is applied to a serial port by using the SetCommState function.
#define WM_EV_TXEMPTY WM_EV_BREAK+8 //The last character in the output buffer was sent.
#define PURGE_ALL PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR
class CYsComm
{
private:
BOOL m_bSemiduplex;
protected:
OVERLAPPED m_overlappedWrite;
OVERLAPPED m_overlappedRead;
OVERLAPPED m_overlappedEvent;
HWND m_hWnd;//用來接收消息的窗口
HANDLE m_hFileHandle;//存在comm句柄
HANDLE m_hStopReadEvent;
HANDLE m_hStopWriteEvent;
public:
BOOL IsConnect(){return m_hFileHandle!=NULL;}
UINT m_nPort;//端口號
int m_iBaud;
////////////////////
BOOL StopRead();
BOOL StopWrite();
CYsComm();
virtual ~CYsComm();
BOOL Create(UINT port,BOOL bSemiduplex=0,HWND hWnd=NULL);
void StopComm();//退出
//////Write & Read //////////////
int ReadIn(PBYTE lpszInputBuffer,
DWORD dwNumberOfBytesToRead,
DWORD dwReadTimeOut);//內部使用使用
int ReadComm(PBYTE lpszInputBuffer,
DWORD dwCountoByte,
DWORD* dwHaveReaded,
DWORD dwReadTimeOut);
int ReadComm(PBYTE buffer,//緩沖區
DWORD dwRead,//希望讀的長度
LPDWORD pdwReaded,//讀到的長度
DWORD dwStartTimeOut,//最大的開始讀數等待時間
DWORD dwInterTimeOut//讀每個字符之間的等待時間
);//讀出緩沖區里的數據
int WriteComm(PBYTE lpszStringToWrite,
DWORD dwNumberOfBytesToWrite);//寫操作
BOOL Purge(DWORD nType);//清除串口
///////// State /////////
//查詢緩沖區內的字符數
//nType=1 表示查輸入緩沖區,nType=0表示輸出緩沖區
BOOL GetBufferCount(int nType,LPDWORD lpNumberInBuffer);
BOOL SetComm(int iBaud);//設置Comm口
////// Event Operation/////////////
BOOL SetEvent(DWORD dwEvent);
int WaitEvent(DWORD* pwdEvent,DWORD dwTimeOut);//設置并響應comm事件
virtual BOOL DoStateEvent(DWORD dwEvent);//用來對串口事件進行處理
};
#endif // !defined(AFX_YSAT_H__D43071E4_C7CF_11D5_971D_0050BADA81C3__INCLUDED_)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -