﻿<?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>博客园-ZYM</title><link>http://www.cnblogs.com/ZYM/</link><description /><language>zh-cn</language><lastBuildDate>Wed, 03 Dec 2008 06:03:30 GMT</lastBuildDate><pubDate>Wed, 03 Dec 2008 06:03:30 GMT</pubDate><ttl>60</ttl><item><title>API串口操作封装类</title><link>http://www.cnblogs.com/ZYM/archive/2008/10/22/1317144.html</link><dc:creator>ZYM</dc:creator><author>ZYM</author><pubDate>Wed, 22 Oct 2008 12:25:00 GMT</pubDate><guid>http://www.cnblogs.com/ZYM/archive/2008/10/22/1317144.html</guid><wfw:comment>http://www.cnblogs.com/ZYM/comments/1317144.html</wfw:comment><comments>http://www.cnblogs.com/ZYM/archive/2008/10/22/1317144.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/ZYM/comments/commentRss/1317144.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ZYM/services/trackbacks/1317144.html</trackback:ping><description><![CDATA[<p>Comm.h头文件：</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="cnblogs_code"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">#ifndef&nbsp;__CCOMM_H__<br />
</span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;__CCOMM_H__</span><span style="color: #000000"><br />
<br />
</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;CComm&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">串口操作封装类</span><span style="color: #008000"><br />
</span><span style="color: #000000">{<br />
</span><span style="color: #0000ff">private</span><span style="color: #000000">:<br />
&nbsp;&nbsp;&nbsp;&nbsp;HANDLE&nbsp;m_hComm;<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">:<br />
&nbsp;&nbsp;&nbsp;&nbsp;CComm();&nbsp;&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;</span><span style="color: #000000">~</span><span style="color: #000000">CComm();&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">析构函数</span><span style="color: #008000"><br />
</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;OpenComm(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nComm);&nbsp;&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;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;CloseComm();&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">关闭串口函数</span><span style="color: #008000"><br />
</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;SetComm(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nBaudRate</span><span style="color: #008000">/*</span><span style="color: #008000">波特率</span><span style="color: #008000">*/</span><span style="color: #000000">,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nParity</span><span style="color: #008000">/*</span><span style="color: #008000">奇偶校验位</span><span style="color: #008000">*/</span><span style="color: #000000">,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nByteSize</span><span style="color: #008000">/*</span><span style="color: #008000">字节位数</span><span style="color: #008000">*/</span><span style="color: #000000">,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nStopBits</span><span style="color: #008000">/*</span><span style="color: #008000">停止位</span><span style="color: #008000">*/</span><span style="color: #000000">);&nbsp;&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;BOOL&nbsp;SetTimeOuts();&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">设置超时函数</span><span style="color: #008000"><br />
</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;ReadComm(</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;lpBuf,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nLen);&nbsp;&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;BOOL&nbsp;WriteComm(</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;lpBuf,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nLen);&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">写串口函数</span><span style="color: #008000"><br />
</span><span style="color: #000000">};<br />
<br />
</span><span style="color: #0000ff">#endif</span></div>
<p>&nbsp;</p>
<p>Comm.cpp实现文件：</p>
<p>&nbsp;</p>
<div class="cnblogs_code"><!--<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: #800000">"</span><span style="color: #800000">StdAfx.h</span><span style="color: #800000">"</span><span style="color: #000000"><br />
#include&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">Comm.h</span><span style="color: #800000">"</span><span style="color: #000000"><br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">构造函数</span><span style="color: #008000"><br />
</span><span style="color: #000000">CComm::CComm()<br />
{<br />
}<br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">析构函数</span><span style="color: #008000"><br />
</span><span style="color: #000000">CComm::</span><span style="color: #000000">~</span><span style="color: #000000">CComm()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;CloseComm();&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">关闭串口</span><span style="color: #008000"><br />
</span><span style="color: #000000">}<br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">打开串口函数</span><span style="color: #008000"><br />
</span><span style="color: #000000">BOOL&nbsp;CComm::OpenComm(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nComm)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;strCommName;<br />
&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;strErrInfo;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;strCommName.Format(</span><span style="color: #800000">"</span><span style="color: #800000">COM%d</span><span style="color: #800000">"</span><span style="color: #000000">,nComm);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;m_hComm&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;::CreateFile(strCommName,&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">要打开串口名称</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">允许读和写</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">,&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">独占方式</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">安全属性</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OPEN_EXISTING,&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">打开而不是创建</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">,&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">同步方式</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL);&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">模板句柄</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(m_hComm&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;INVALID_HANDLE_VALUE)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strErrInfo.Format(</span><span style="color: #800000">"</span><span style="color: #800000">打开%s失败！</span><span style="color: #800000">"</span><span style="color: #000000">,strCommName);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox(strErrInfo);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;FALSE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />
&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;TRUE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<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;CComm::CloseComm()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(m_hComm&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;INVALID_HANDLE_VALUE)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::CloseHandle(m_hComm);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_hComm&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;INVALID_HANDLE_VALUE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">设置串口函数</span><span style="color: #008000"><br />
</span><span style="color: #000000">BOOL&nbsp;CComm::SetComm(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nBaudRate</span><span style="color: #008000">/*</span><span style="color: #008000">波特率</span><span style="color: #008000">*/</span><span style="color: #000000">,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nParity</span><span style="color: #008000">/*</span><span style="color: #008000">奇偶校验位</span><span style="color: #008000">*/</span><span style="color: #000000">,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nByteSize</span><span style="color: #008000">/*</span><span style="color: #008000">字节位数</span><span style="color: #008000">*/</span><span style="color: #000000">,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nStopBits</span><span style="color: #008000">/*</span><span style="color: #008000">停止位</span><span style="color: #008000">*/</span><span style="color: #000000">)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;DCB&nbsp;stDCB;<br />
&nbsp;&nbsp;&nbsp;&nbsp;memset(</span><span style="color: #000000">&amp;</span><span style="color: #000000">stDCB,</span><span style="color: #800080">0</span><span style="color: #000000">,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(stDCB));<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">::GetCommState(m_hComm,</span><span style="color: #000000">&amp;</span><span style="color: #000000">stDCB))&nbsp;&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;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;FALSE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;stDCB.BaudRate&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;nBaudRate;&nbsp;&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;stDCB.fParity&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;stDCB.Parity&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;nParity;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">奇偶校验位(NOPARITY等)</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;stDCB.ByteSize&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;nByteSize;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">每个字节有8位</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;stDCB.StopBits&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;nStopBits;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">停止位(ONESTOPBIT等)</span><span style="color: #008000"><br />
</span><span style="color: #000000">&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_hComm,</span><span style="color: #000000">&amp;</span><span style="color: #000000">stDCB))&nbsp;&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;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;FALSE;<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">::SetupComm(m_hComm,</span><span style="color: #800080">1024</span><span style="color: #000000">,</span><span style="color: #800080">1024</span><span style="color: #000000">))&nbsp;&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;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;FALSE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;::PurgeComm(m_hComm,PURGE_TXCLEAR&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&nbsp;PURGE_RXCLEAR);&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">清空输入输出缓冲区</span><span style="color: #008000"><br />
</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;TRUE;<br />
}<br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">设置超时函数</span><span style="color: #008000"><br />
</span><span style="color: #000000">BOOL&nbsp;CComm::SetTimeOuts()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;COMMTIMEOUTS&nbsp;stTimeOuts;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;stTimeOuts.ReadIntervalTimeout&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">;&nbsp;&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;stTimeOuts.ReadTotalTimeoutMultiplier&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">100</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;stTimeOuts.ReadTotalTimeoutConstant&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">500</span><span style="color: #000000">;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;stTimeOuts.WriteTotalTimeoutMultiplier&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">100</span><span style="color: #000000">;&nbsp;&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;stTimeOuts.WriteTotalTimeoutConstant&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">500</span><span style="color: #000000">;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;::SetCommTimeouts(m_hComm,</span><span style="color: #000000">&amp;</span><span style="color: #000000">stTimeOuts);&nbsp;&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;::PurgeComm(m_hComm,PURGE_TXCLEAR&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&nbsp;PURGE_RXCLEAR);&nbsp;&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;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;TRUE;<br />
}<br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">读串口函数</span><span style="color: #008000"><br />
</span><span style="color: #000000">BOOL&nbsp;CComm::ReadComm(</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;lpBuf,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nLen)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(::ReadFile(m_hComm,lpBuf,nLen,(DWORD&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">)</span><span style="color: #000000">&amp;</span><span style="color: #000000">nLen,NULL)&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;FALSE)<br />
&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;FALSE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;str;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str.Format("%d",nLen);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox(str);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</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: #008000">//</span><span style="color: #008000">::PurgeComm(m_hComm,PURGE_TXABORT&nbsp;|&nbsp;PURGE_RXABORT&nbsp;|&nbsp;PURGE_TXCLEAR&nbsp;|&nbsp;PURGE_RXCLEAR);</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;TRUE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
</span><span style="color: #008000">//</span><span style="color: #008000">写串口函数</span><span style="color: #008000"><br />
</span><span style="color: #000000">BOOL&nbsp;CComm::WriteComm(</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;lpBuf,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nLen)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(::WriteFile(m_hComm,lpBuf,nLen,(DWORD&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">)</span><span style="color: #000000">&amp;</span><span style="color: #000000">nLen,NULL)&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;FALSE)<br />
&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;FALSE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;str;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str.Format("%d",nLen);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox(str);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;TRUE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}</span></div>
<img src ="http://www.cnblogs.com/ZYM/aggbug/1317144.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43772/" target="_blank">[新闻]Digg创始人：不再考虑出售公司 将适机并购</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>编译第一个驱动程序笔记</title><link>http://www.cnblogs.com/ZYM/archive/2008/04/18/1159484.html</link><dc:creator>ZYM</dc:creator><author>ZYM</author><pubDate>Fri, 18 Apr 2008 02:47:00 GMT</pubDate><guid>http://www.cnblogs.com/ZYM/archive/2008/04/18/1159484.html</guid><wfw:comment>http://www.cnblogs.com/ZYM/comments/1159484.html</wfw:comment><comments>http://www.cnblogs.com/ZYM/archive/2008/04/18/1159484.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/ZYM/comments/commentRss/1159484.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ZYM/services/trackbacks/1159484.html</trackback:ping><description><![CDATA[摘要: 编译第一个驱动程序笔记&nbsp;&nbsp;<a href='http://www.cnblogs.com/ZYM/archive/2008/04/18/1159484.html'>阅读全文</a><img src ="http://www.cnblogs.com/ZYM/aggbug/1159484.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43771/" target="_blank">[新闻]福布斯:中国经济增长减速 网游行业从中获益</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>编程实现Windows关机、重启、注销</title><link>http://www.cnblogs.com/ZYM/archive/2008/04/14/1152901.html</link><dc:creator>ZYM</dc:creator><author>ZYM</author><pubDate>Mon, 14 Apr 2008 08:07:00 GMT</pubDate><guid>http://www.cnblogs.com/ZYM/archive/2008/04/14/1152901.html</guid><wfw:comment>http://www.cnblogs.com/ZYM/comments/1152901.html</wfw:comment><comments>http://www.cnblogs.com/ZYM/archive/2008/04/14/1152901.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/ZYM/comments/commentRss/1152901.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ZYM/services/trackbacks/1152901.html</trackback:ping><description><![CDATA[摘要: &nbsp;&nbsp;<a href='http://www.cnblogs.com/ZYM/archive/2008/04/14/1152901.html'>阅读全文</a><img src ="http://www.cnblogs.com/ZYM/aggbug/1152901.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43770/" target="_blank">[新闻]苹果正调查MacBook笔记本“黑屏死机”故障</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>游戏内存修改器</title><link>http://www.cnblogs.com/ZYM/archive/2008/04/14/1152751.html</link><dc:creator>ZYM</dc:creator><author>ZYM</author><pubDate>Mon, 14 Apr 2008 06:26:00 GMT</pubDate><guid>http://www.cnblogs.com/ZYM/archive/2008/04/14/1152751.html</guid><wfw:comment>http://www.cnblogs.com/ZYM/comments/1152751.html</wfw:comment><comments>http://www.cnblogs.com/ZYM/archive/2008/04/14/1152751.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/ZYM/comments/commentRss/1152751.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ZYM/services/trackbacks/1152751.html</trackback:ping><description><![CDATA[摘要: CMemScanner.h(内存扫描器类):#ifndefCMEMSCANNER_H#defineCMEMSCANNER_H#include&lt;stdio.h&gt;#include"AddrList.h"#include"PageList.h"classCMemScanner//内存扫描器类{private:HANDLEm_hProcess;//待扫描进程句柄public:CAddrList&nbsp;&nbsp;<a href='http://www.cnblogs.com/ZYM/archive/2008/04/14/1152751.html'>阅读全文</a><img src ="http://www.cnblogs.com/ZYM/aggbug/1152751.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43770/" target="_blank">[新闻]苹果正调查MacBook笔记本“黑屏死机”故障</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>命令行方式实现QQ自动登录</title><link>http://www.cnblogs.com/ZYM/archive/2008/04/14/1151954.html</link><dc:creator>ZYM</dc:creator><author>ZYM</author><pubDate>Mon, 14 Apr 2008 00:36:00 GMT</pubDate><guid>http://www.cnblogs.com/ZYM/archive/2008/04/14/1151954.html</guid><wfw:comment>http://www.cnblogs.com/ZYM/comments/1151954.html</wfw:comment><comments>http://www.cnblogs.com/ZYM/archive/2008/04/14/1151954.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/ZYM/comments/commentRss/1151954.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ZYM/services/trackbacks/1151954.html</trackback:ping><description><![CDATA[摘要: 上一次写过一篇VB制作QQ自动登录器的日志，介绍用得是模拟键盘输入的方式实现QQ的自动登录。这种方式有一种缺陷，就是必须保持输入焦点的正确，否则很容易就打乱了程序的执行过程，造成无法登录。特别是一开机就运行该程序，然后该程序去调用QQ的时候，Win API Winexec执行特慢，导致程序跟不上QQ，输入焦点也错了。后来在网上又发现了一种用QQ命令行的方式来实现自动登录的，这种方式明显更好用。该命&nbsp;&nbsp;<a href='http://www.cnblogs.com/ZYM/archive/2008/04/14/1151954.html'>阅读全文</a><img src ="http://www.cnblogs.com/ZYM/aggbug/1151954.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43770/" target="_blank">[新闻]苹果正调查MacBook笔记本“黑屏死机”故障</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>用VB实现的QQ自动登录器</title><link>http://www.cnblogs.com/ZYM/archive/2008/04/14/1151944.html</link><dc:creator>ZYM</dc:creator><author>ZYM</author><pubDate>Mon, 14 Apr 2008 00:24:00 GMT</pubDate><guid>http://www.cnblogs.com/ZYM/archive/2008/04/14/1151944.html</guid><wfw:comment>http://www.cnblogs.com/ZYM/comments/1151944.html</wfw:comment><comments>http://www.cnblogs.com/ZYM/archive/2008/04/14/1151944.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/ZYM/comments/commentRss/1151944.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ZYM/services/trackbacks/1151944.html</trackback:ping><description><![CDATA[摘要: '在VB中建一工程，工程名为QQAutoLogin。移除系统自动添加的窗体Form1。在该工程下添加一模块，模块名为QQAutoLoginMod。复制以下代码到模块中。OptionExplicit'-----------------------API定义-------------------------------DeclareSubSleepLib"kernel32"(ByValdwMillis&nbsp;&nbsp;<a href='http://www.cnblogs.com/ZYM/archive/2008/04/14/1151944.html'>阅读全文</a><img src ="http://www.cnblogs.com/ZYM/aggbug/1151944.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43770/" target="_blank">[新闻]苹果正调查MacBook笔记本“黑屏死机”故障</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item></channel></rss>