注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小哲

从今以后,你会是所有幸福的理由!

 
 
 

日志

 
 

CSerialPort类解析(六)——CSerialPort.h  

2012-02-11 17:01:17|  分类: MFC初级 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
#ifndef __SERIALPORT_H__ 
#define __SERIALPORT_H__ 
 
#define WM_COMM_BREAK_DETECTED        WM_USER+1    // A break was detected on input. 
#define WM_COMM_CTS_DETECTED        WM_USER+2    // The CTS (clear-to-send) signal changed state.  
#define WM_COMM_DSR_DETECTED        WM_USER+3    // The DSR (data-set-ready) signal changed state.  
#define WM_COMM_ERR_DETECTED        WM_USER+4    // A line-status error occurred. Line-status errors are CE_FRAME, CE_OVERRUN, and CE_RXPARITY.  
#define WM_COMM_RING_DETECTED        WM_USER+5    // A ring indicator was detected.  
#define WM_COMM_RLSD_DETECTED        WM_USER+6    // The RLSD (receive-line-signal-detect) signal changed state.  
#define WM_COMM_RXCHAR                WM_USER+7    // A character was received and placed in the input buffer.  
#define WM_COMM_RXFLAG_DETECTED        WM_USER+8    // The event character was received and placed in the input buffer.   
#define WM_COMM_TXEMPTY_DETECTED    WM_USER+9    // The last character in the output buffer was sent.   
 
 
class CSerialPort 

public
    void ClosePort(); 
    void WriteToPort(LPCTSTR string, int n); 
    void WriteToPort(LPCTSTR string); 
    void WriteToPort(char *string, int n); 
    CSerialPort(); 
    virtual        ~CSerialPort(); 
    BOOL        InitPort(CWnd *pPortOwner,    // the owner (CWnd) of the port (receives message) 
                         UINT  portnr,        // portnumber (1..4) 
                         UINT  baud,            // baudrate 
                         char  parity,        // parity 
                         UINT  databits,        // databits 
                         UINT  stopbits,        // stopbits 
                         DWORD dwCommEvents,    // EV_RXCHAR, EV_CTS etc 
                         UINT  writebuffersize);    // size to the writebuffer 
 
    BOOL        StartMonitoring(); 
    BOOL        RestartMonitoring(); 
    BOOL        StopMonitoring(); 
    DWORD        GetWriteBufferSize(); 
    DWORD        GetCommEvents(); 
    DCB            GetDCB(); 
 
    void        WriteToPort(char *string); 
    int m_nWriteSize; 
 
protected
    // protected memberfunctions 
    void        ProcessErrorMessage(char *ErrorText); 
    static UINT    CommThread(LPVOID pParam); 
    static void    ReceiveChar(CSerialPort *port, COMSTAT comstat); 
    static void    WriteChar(CSerialPort *port); 
 
    // thread 
    CWinThread            *m_Thread; 
 
    // synchronisation objects 
    CRITICAL_SECTION    m_csCommunicationSync; 
    BOOL                m_bThreadAlive; 
 
    // handles 
    HANDLE                m_hShutdownEvent; 
    HANDLE                m_hComm; 
    HANDLE                m_hWriteEvent; 
 
    // Event array. 
    // One element is used for each event. There are two event handles for each port. 
    // A Write event and a receive character event which is located in the overlapped structure (m_ov.hEvent). 
    // There is a general shutdown when the port is closed. 
    HANDLE                m_hEventArray[3]; 
 
    // structures 
    OVERLAPPED            m_ov; 
    COMMTIMEOUTS        m_CommTimeouts; 
    DCB                    m_dcb; 
 
    // owner window 
    CWnd                *m_pOwner; 
 
    // misc 
    UINT                m_nPortNr; 
    char                *m_szWriteBuffer; 
    DWORD                m_dwCommEvents; 
    DWORD                m_nWriteBufferSize; 
}; 
 
#endif __SERIALPORT_H__ 
  评论这张
 
阅读(2200)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017