设为首页 加入收藏

TOP

13.6 自定义串口类
2013-10-07 14:36:05 来源: 作者: 【 】 浏览:62
Tags:13.6 定义 串口

13.6  自定义串口类

为了使用方便,在本实例中将串口的属性及操作封装成一个类。对串口的操作可直接调用这个串口类提供的几个函数接口即可。自定义串口类定义如下:

  1. 01  class CMySerial    
  2. 02  {  
  3. 03  public:  
  4. 04      CMySerial();  
  5. 05      virtual ~CMySerial();  
  6. 06  public:   
  7. 07      bool OpenSerialPort(CWnd* pParent, UINT portnr, UINT baud, char 08      parity, UINT databits, UINT stopbits, DWORD dwCommEvents,  
  8. 09                      UINT writebuffersize);          //打开串口函数  
  9. 10      void ClosePort();                               //关闭串口函数  
  10. 11      //串口监控线程的控制函数  
  11. 12      BOOL        StartMonitoring();  
  12. 13      BOOL        RestartMonitoring();  
  13. 14      BOOL        StopMonitoring();  
  14. 15      DWORD       GetWriteBufferSize();               //获取写缓冲区大小  
  15. 16      DWORD       GetCommEvents();                    //获取串口事件  
  16. 17      DCB         GetDCB();                           //获取串口配置信息  
  17. 18      //获取并保存将要发送的数据,并触发发送事件  
  18. 19      void        WriteToPort(char* string);  
  19. 20      void        WriteToPort(char* string,int n);      
  20. 21      void        WriteToPort(LPCTSTR string);  
  21. 22      void        WriteToPort(LPCTSTR string,int n);  
  22. 23  protected:  
  23. 24      void        ProcessErrorMessage(char* ErrorText);   //错误事件处理  
  24. 25      static UINT CommThread(LPVOID pParam);      //串口线程处理函数  
  25. 26      static void ReceiveChar(CMySerial* port,   
  26. 27                          COMSTAT comstat);       //读取串口数据  
  27. 28      static void WriteChar(CMySerial* port);     //向串口写入数据  
  28. 29  public:  
  29. 30      HANDLE  m_hComm;                            //串口操作句柄  
  30. 31      int     m_nWriteSize;                       //发送数据  
  31. 32  protected:  
  32. 33      CWinThread*         m_Thread;               //线程指针  
  33. 34      CRITICAL_SECTION    m_csCommunicationSync;  //临界资源  
  34. 35      BOOL                m_bThreadAlive;         //线程活动状态  
  35. 36      //串口事件  
  36. 37      HANDLE              m_hWriteEvent;          //写事件  
  37. 38      HANDLE              m_hShutdownEvent;       //关闭事件  
  38. 39      HANDLE              m_hEventArray[3];       //事件数组.  
  39. 40      DWORD               m_dwCommEvents;         //串口事件掩码  
  40. 41      OVERLAPPED          m_ov;                   //设置异步I/O操作  
  41. 42      COMMTIMEOUTS        m_CommTimeouts;         //串口超时结构体  
  42. 43      DCB                 m_dcb;                  //串口通信中的DCB结构 .  
  43. 44      CWnd*               m_pParent;              //包含串口操作的窗体指针  
  44. 45      UINT                m_nPortNr;              //串口号  
  45. 46      char*               m_szWriteBuffer;        //写缓冲区  
  46. 47      DWORD               m_nWriteBufferSize;     //写缓冲区大小  
  47. 48  }; 

【代码解析】

在这个类中事件数组m_hEventArray中的每个数组元素都对应着一个事件. 这个数组有3个元素:一个是写事件、一个是收事件,还有一个是串口关闭事件。其他的成员变量都已加注释,在此不再一一解释,下面讲解这个自定义类成员函数的功能及实现方法。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇13.6.2 串口打开函数的实现 下一篇13.7.5 复选框的控制及初始化

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: