CSerialPort类解析.docx

CSerialPort类解析

/augusdi/article/detailsSerialPort类解析CSerialPort类的功能及成员函数介绍CSerialPort类是免费提供的串口累,Codeguru是一个非常不错的源代码网站CSerialPort类支持线连接(非MODEM)的串口编程操作。CSerialPort类是基于多线程的,其工作流程如下:首先设置好串口参数,再开启串口检测工作线程,串口检测工作线程检测到串口接收到的数据、流控制事件或其他串口事件后,就以消息方式通知主程序,激发消息处理函数来进行数据处理,这是对接受数据而言的,发送数据可直接向串口发送。CSerialPort类定义的消息如表消息名称消息号功能说明WM_COMM_BREAK_DETECTEDWM_USER+1检测到输入中断WM_COMM_CTS_DETECTEDWM_USER+2检测到CTS(清除发送)信号状态改变WM_COMM_DSR_DETECTEDWM_USER+3检测到DSR(数据设备准备就绪)信号状态改变WM_COMM_ERR_DETECTEDWM_USER+4发生线状态错误(包括CE_FRAME,CE_OVERRUN,和CE_RXPARITY)WM_COMM_RING_DETECTEDWM_USER+5检测到响铃指示信号WM_COMM_RLSD_DETECTEDWM_USER+6检测到RLSD(接收线信号)状态改变WM_COMM_RXCHARWM_USER+7接收到一个字符并已放入接受缓冲区WM_COMM_RXFLAG_DETECTEDWM_USER+8检测到接受到字符(该字符已放入接受缓冲区)事件WM_COMM_TXEMPTY_DETECTEDWM_USER+9检测到发送缓冲区最后一个字符已经被发送介绍几个经常用到的函数:1、串口初始化函数InitPortBOOL?CSerialPort::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?{??assert(portnr??0??portnr??5);??assert(pPortOwner?!=?NULL);???//?if?the?thread?is?alive:?Kill??if?(m_bThreadAlive)??{??do??{??SetEvent(m_hShutdownEvent);??}??while?(m_bThreadAlive);??TRACE(Thread?ended\n);??}???//?create?events??if?(m_ov.hEvent?!=?NULL)??ResetEvent(m_ov.hEvent);??m_ov.hEvent?=?CreateEvent(NULL,?TRUE,?FALSE,?NULL);???if?(m_hWriteEvent?!=?NULL)??ResetEvent(m_hWriteEvent);??m_hWriteEvent?=?CreateEvent(NULL,?TRUE,?FALSE,?NULL);???if?(m_hShutdownEvent?!=?NULL)??ResetEvent(m_hShutdownEvent);??m_hShutdownEvent?=?CreateEvent(NULL,?TRUE,?FALSE,?NULL);???//?initialize?the?event?objects??m_hEventArray[0]?=?m_hShutdownEvent;//?highest?priority??m_hEventArray[1]?=?m_ov.hEvent;??m_hEventArray[2]?=?m_hWriteEvent;???//?initialize?critical?section??InitializeCriticalSection(m_csCommunicationSync);???//?set?buffersize?for?writing?and?save?the?owner??m_pOwner?=?pPortOwner;???if?

文档评论(0)

1亿VIP精品文档

相关文档