﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-    iSabC @ Blog-随笔分类-分享代码</title><link>http://www.cppblog.com/Lee7/category/5412.html</link><description>  当华美的叶片落尽，生命的脉络才历历可见。 －－ 聂鲁达
</description><language>zh-cn</language><lastBuildDate>Tue, 20 May 2008 16:54:42 GMT</lastBuildDate><pubDate>Tue, 20 May 2008 16:54:42 GMT</pubDate><ttl>60</ttl><item><title>连接服务流程代码</title><link>http://www.cppblog.com/Lee7/archive/2008/05/02/48623.html</link><dc:creator>isabc</dc:creator><author>isabc</author><pubDate>Fri, 02 May 2008 02:10:00 GMT</pubDate><guid>http://www.cppblog.com/Lee7/archive/2008/05/02/48623.html</guid><wfw:comment>http://www.cppblog.com/Lee7/comments/48623.html</wfw:comment><comments>http://www.cppblog.com/Lee7/archive/2008/05/02/48623.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Lee7/comments/commentRss/48623.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Lee7/services/trackbacks/48623.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: void&nbsp;CTCPUDPDlg::OnBtnConnect()&nbsp;//连接服务bool&nbsp;CSocketComm::ConnectTo(LPCTSTR&nbsp;strDestination,&nbsp;LPCTSTR&nbsp;strServiceName,&nbsp;int&nbsp;nProtocol,&nbsp;int&nbsp;nType)BOOL&nbsp;C...&nbsp;&nbsp;<a href='http://www.cppblog.com/Lee7/archive/2008/05/02/48623.html'>阅读全文</a><img src ="http://www.cppblog.com/Lee7/aggbug/48623.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Lee7/" target="_blank">isabc</a> 2008-05-02 10:10 <a href="http://www.cppblog.com/Lee7/archive/2008/05/02/48623.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GSM短信息部分代码！</title><link>http://www.cppblog.com/Lee7/archive/2008/01/15/41186.html</link><dc:creator>isabc</dc:creator><author>isabc</author><pubDate>Tue, 15 Jan 2008 07:37:00 GMT</pubDate><guid>http://www.cppblog.com/Lee7/archive/2008/01/15/41186.html</guid><wfw:comment>http://www.cppblog.com/Lee7/comments/41186.html</wfw:comment><comments>http://www.cppblog.com/Lee7/archive/2008/01/15/41186.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Lee7/comments/commentRss/41186.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Lee7/services/trackbacks/41186.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 分别有如下功能：可打印字符串转换为字节数据。字节数据转换为可打印字符串。7bit编码。7bit解码。8bit编码。8bit解码。UCS2编码。UCS2解码。正常顺序的字符串转换为两两颠倒的字符串，若长度为奇数，补'F'凑成偶数。两两颠倒的字符串转换为正常顺序的字符串。PDU编码，用于编制、发送短消息。PDU解码，用于接收、阅读短消息。 初始化GSM状态。 发送短消息，仅发送命令，不读取应答。 读取短消息，仅发送命令，不读取应答。读取GSM MODEM的应答，可能是一部分。从列表中解析出全部短消息。&nbsp;&nbsp;<a href='http://www.cppblog.com/Lee7/archive/2008/01/15/41186.html'>阅读全文</a><img src ="http://www.cppblog.com/Lee7/aggbug/41186.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Lee7/" target="_blank">isabc</a> 2008-01-15 15:37 <a href="http://www.cppblog.com/Lee7/archive/2008/01/15/41186.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>简单封装的串口通信类</title><link>http://www.cppblog.com/Lee7/archive/2008/01/07/40644.html</link><dc:creator>isabc</dc:creator><author>isabc</author><pubDate>Mon, 07 Jan 2008 13:11:00 GMT</pubDate><guid>http://www.cppblog.com/Lee7/archive/2008/01/07/40644.html</guid><wfw:comment>http://www.cppblog.com/Lee7/comments/40644.html</wfw:comment><comments>http://www.cppblog.com/Lee7/archive/2008/01/07/40644.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/Lee7/comments/commentRss/40644.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Lee7/services/trackbacks/40644.html</trackback:ping><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">stdafx.h</span><span style="color: #000000;">"</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">SerialPort.h</span><span style="color: #000000;">"</span><span style="color: #000000;"><br><br>#include&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">assert.h</span><span style="color: #000000;">"</span><span style="color: #000000;"><br><br>CSerialPort::CSerialPort()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;memset(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m_OverlappedRead,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(m_OverlappedRead));<br>&nbsp;&nbsp;&nbsp;&nbsp;memset(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m_OverlappedWrite,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(m_OverlappedWrite));<br>&nbsp;&nbsp;&nbsp;&nbsp;m_bOpened&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;m_ReadComThread&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;m_hIDCom&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;m_dwReadLen&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>}<br><br>CSerialPort::</span><span style="color: #000000;">~</span><span style="color: #000000;">CSerialPort()<br>{<br><br>}<br><br>BOOL&nbsp;CSerialPort::OpenPort(UINT&nbsp;nPort,&nbsp;UINT&nbsp;nBaud)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;ASSERT(nPort&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;nPort&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">);&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(m_bOpened)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;TCHAR&nbsp;szPort[</span><span style="color: #000000;">15</span><span style="color: #000000;">];<br>&nbsp;&nbsp;&nbsp;&nbsp;TCHAR&nbsp;szComParams[</span><span style="color: #000000;">50</span><span style="color: #000000;">];<br>&nbsp;&nbsp;&nbsp;&nbsp;DCB&nbsp;dcb;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;wsprintf(szPort,&nbsp;_T(</span><span style="color: #000000;">"</span><span style="color: #000000;">COM%d</span><span style="color: #000000;">"</span><span style="color: #000000;">),&nbsp;nPort);<br>&nbsp;&nbsp;&nbsp;&nbsp;m_hIDCom&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;::CreateFile(szPort,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GENERIC_READ&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;GENERIC_WRITE,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OPEN_EXISTING,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FILE_ATTRIBUTE_NORMAL&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;FILE_FLAG_OVERLAPPED,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(m_hIDCom&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;NULL)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;memset(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m_OverlappedRead,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(OVERLAPPED));<br>&nbsp;&nbsp;&nbsp;&nbsp;memset(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m_OverlappedWrite,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(OVERLAPPED));<br><br>&nbsp;&nbsp;&nbsp;&nbsp;COMMTIMEOUTS&nbsp;CommTimeOuts;<br>&nbsp;&nbsp;&nbsp;&nbsp;CommTimeOuts.ReadIntervalTimeout&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0xFFFFFFFF</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;CommTimeOuts.ReadTotalTimeoutConstant&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;CommTimeOuts.ReadTotalTimeoutMultiplier&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;CommTimeOuts.WriteTotalTimeoutMultiplier&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;CommTimeOuts.WriteTotalTimeoutConstant&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">5000</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;::SetCommTimeouts(m_hIDCom,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">CommTimeOuts);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;wsprintf(szComParams,&nbsp;_T(</span><span style="color: #000000;">"</span><span style="color: #000000;">COM%d:%d,N,8,1</span><span style="color: #000000;">"</span><span style="color: #000000;">),&nbsp;nPort,&nbsp;nBaud);<br>&nbsp;&nbsp;&nbsp;&nbsp;m_OverlappedRead.Offset&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;m_OverlappedRead.OffsetHigh&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;m_OverlappedRead.hEvent&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;::CreateEvent(NULL,&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">,&nbsp;NULL);<br>&nbsp;&nbsp;&nbsp;&nbsp;m_OverlappedWrite.Offset&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;m_OverlappedWrite.OffsetHigh&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;m_OverlappedWrite.hEvent&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;::CreateEvent(NULL,&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">,&nbsp;NULL);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;dcb.DCBlength&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(DCB);<br>&nbsp;&nbsp;&nbsp;&nbsp;::GetCommState(m_hIDCom,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">dcb);<br>&nbsp;&nbsp;&nbsp;&nbsp;dcb.BaudRate&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;nBaud;<br>&nbsp;&nbsp;&nbsp;&nbsp;dcb.ByteSize&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">8</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;dcb.Parity&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">SetCommState(m_hIDCom,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">dcb)&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">!</span><span style="color: #000000;">SetupComm(m_hIDCom,&nbsp;</span><span style="color: #000000;">4096</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">4096</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_OverlappedRead.hEvent&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;NULL&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;m_OverlappedWrite.hEvent&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;NULL)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwError&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;::GetLastError();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(m_OverlappedRead.hEvent&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;NULL)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::CloseHandle(m_OverlappedRead.hEvent);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(m_OverlappedWrite.hEvent&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;NULL)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::CloseHandle(m_OverlappedWrite.hEvent);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::CloseHandle(m_hIDCom);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;::SetCommMask(m_hIDCom,&nbsp;EV_RXCHAR);<br>&nbsp;&nbsp;&nbsp;&nbsp;::PurgeComm(m_hIDCom,&nbsp;PURGE_TXABORT&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;PURGE_RXABORT&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;PURGE_TXCLEAR&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;PURGE_RXCLEAR);<br>&nbsp;&nbsp;&nbsp;&nbsp;::EscapeCommFunction(m_hIDCom,&nbsp;SETDTR);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;m_bOpened&nbsp;</span><span style="color: #000000;">=</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;m_bExitThread&nbsp;</span><span style="color: #000000;">=</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;StartMonitoring();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;m_bOpened;<br>}<br><br>BOOL&nbsp;CSerialPort::Close()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">m_bOpened&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;m_hIDCom&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;NULL)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;m_bExitThread&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;::SetCommMask(m_hIDCom,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;StopMonitoring();<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(m_OverlappedRead.hEvent&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;NULL)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::CloseHandle(m_OverlappedRead.hEvent);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(m_OverlappedWrite.hEvent&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;NULL)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::CloseHandle(m_OverlappedWrite.hEvent);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;::CloseHandle(m_hIDCom);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;m_bOpened&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;m_hIDCom&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;NULL;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>}<br><br><br></span><span style="color: #008000;">//</span><span style="color: #008000;">向串口写数据</span><span style="color: #008000;"><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;CSerialPort::WriteToPort(BYTE&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">Byte,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;Len)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">m_bOpened&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;m_hIDCom&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;NULL)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;bWriteStat;<br>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwBytesWritten;<br>&nbsp;&nbsp;&nbsp;&nbsp;ClearReadBuf();<br>&nbsp;&nbsp;&nbsp;&nbsp;bWriteStat&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;::WriteFile(m_hIDCom,&nbsp;Byte,&nbsp;Len,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">dwBytesWritten,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m_OverlappedWrite);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">bWriteStat&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;(::GetLastError()&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;ERROR_IO_PENDING))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">WaitForSingleObject函数用来检测hHandle事件的信号状态，当函数的执行时间超过dwMilliseconds就<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">返回，但如果参数dwMilliseconds为INFINITE时函数将直到相应时间事件变成有信号状态才返回，<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">否则就一直等待下去，直到WaitForSingleObject有返回直才执行后面的代码。</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dw&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;::WaitForSingleObject(m_OverlappedWrite.hEvent,&nbsp;INFINITE&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(dw&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;WAIT_TIMEOUT)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwBytesWritten&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCB&nbsp;dcb;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::GetCommState(m_hIDCom,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">dcb);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::PurgeComm(m_hIDCom,&nbsp;PURGE_TXCLEAR);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::GetOverlappedResult(m_hIDCom,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m_OverlappedWrite,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">dwBytesWritten,&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;">等待服务器完成IO操作</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_OverlappedWrite.Offset&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;dwBytesWritten;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;;<br>}<br><br><br></span><span style="color: #008000;">//</span><span style="color: #008000;">从串口读取数据</span><span style="color: #008000;"><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;CSerialPort::ReadFromPort(BYTE&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">lpszBlock,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;nRLen)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">m_bOpened&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;m_hIDCom&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;NULL)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;bReadStat;<br>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwBytesRead,&nbsp;dwErrorFlags;<br>&nbsp;&nbsp;&nbsp;&nbsp;COMSTAT&nbsp;ComStat;<br>&nbsp;&nbsp;&nbsp;&nbsp;::ClearCommError(m_hIDCom,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">dwErrorFlags,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">ComStat);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">ComStat.cbInQue)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;dwBytesRead&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(DWORD)&nbsp;ComStat.cbInQue;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(nRLen&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">)dwBytesRead)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwBytesRead&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(DWORD)&nbsp;nRLen;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;bReadStat&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;::ReadFile(m_hIDCom,&nbsp;lpszBlock,&nbsp;dwBytesRead,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">dwBytesRead,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m_OverlappedRead);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">bReadStat)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(::GetLastError()&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;ERROR_IO_PENDING)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::WaitForSingleObject(m_OverlappedRead.hEvent,&nbsp;INFINITE);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">)dwBytesRead;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">)dwBytesRead;<br>}<br><br><br><br>UINT&nbsp;CSerialPort::CommThread(LPVOID&nbsp;pParam)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;CSerialPort</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;pSerialPort&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(CSerialPort</span><span style="color: #000000;">*</span><span style="color: #000000;">)pParam;<br>&nbsp;&nbsp;&nbsp;&nbsp;BYTE&nbsp;Buffer[</span><span style="color: #000000;">4096</span><span style="color: #000000;">];<br>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwEvent,&nbsp;dwError;<br>&nbsp;&nbsp;&nbsp;&nbsp;COMSTAT&nbsp;ComStat;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;ReadLen&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;memset(pSerialPort</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">m_ReadBuf,&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">\0</span><span style="color: #000000;">'</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(pSerialPort</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">m_ReadBuf));<br>&nbsp;&nbsp;&nbsp;&nbsp;::SetCommMask(pSerialPort</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">m_hIDCom,&nbsp;EV_RXCHAR);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">pSerialPort</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">m_bExitThread)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(Buffer,&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">\0</span><span style="color: #000000;">'</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">4096</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::WaitCommEvent(pSerialPort</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">m_hIDCom,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">dwEvent,&nbsp;NULL);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::ClearCommError(pSerialPort</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">m_hIDCom,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">dwError,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">ComStat);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">((dwEvent&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;EV_RXCHAR)&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;ComStat.cbInQue)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pSerialPort</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">m_dwReadLen&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;pSerialPort</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">ReadFromPort(Buffer,</span><span style="color: #000000;">4096</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pSerialPort</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">m_dwReadLen&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;ReadLen&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">4096</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">4096</span><span style="color: #000000;">&nbsp;:&nbsp;ReadLen;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(pSerialPort</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">m_dwReadLen&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy(pSerialPort</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">m_ReadBuf,&nbsp;Buffer,pSerialPort</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">m_dwReadLen);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::PurgeComm(pSerialPort</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">m_hIDCom,&nbsp;PURGE_RXCLEAR);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>}<br><br>BOOL&nbsp;CSerialPort::StartMonitoring()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(m_ReadComThread&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;NULL)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">(m_ReadComThread&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;::AfxBeginThread(CommThread,&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">)))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>}<br><br>BOOL&nbsp;CSerialPort::StopMonitoring()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(m_ReadComThread&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;NULL)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::TerminateThread(m_ReadComThread</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">m_hThread,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">);&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">终结线程</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_ReadComThread&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>}<br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;CSerialPort::ClearReadBuf()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;memset(m_ReadBuf,&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">\0</span><span style="color: #000000;">'</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(m_ReadBuf));<br>&nbsp;&nbsp;&nbsp;&nbsp;m_dwReadLen&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>}<br></span></div>
<br><img src ="http://www.cppblog.com/Lee7/aggbug/40644.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Lee7/" target="_blank">isabc</a> 2008-01-07 21:11 <a href="http://www.cppblog.com/Lee7/archive/2008/01/07/40644.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>