﻿<?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++博客-llbird-最新评论</title><link>http://www.cppblog.com/llbird/CommentsRSS.aspx</link><description /><language>zh-cn</language><pubDate>Sun, 30 Aug 2009 01:29:53 GMT</pubDate><lastBuildDate>Sun, 30 Aug 2009 01:29:53 GMT</lastBuildDate><generator>cnblogs</generator><item><title>re: CnComm串口通讯库v1.5 源码下载</title><link>http://www.cppblog.com/llbird/archive/2009/07/28/80386.html#91540</link><dc:creator>QYF</dc:creator><author>QYF</author><pubDate>Tue, 28 Jul 2009 14:29:00 GMT</pubDate><guid>http://www.cppblog.com/llbird/archive/2009/07/28/80386.html#91540</guid><description><![CDATA[好东西<img src ="http://www.cppblog.com/llbird/aggbug/91540.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/llbird/" target="_blank">QYF</a> 2009-07-28 22:29 <a href="http://www.cppblog.com/llbird/archive/2009/07/28/80386.html#91540#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: CnComm勘误及Faq（将会持续更新）[未登录]</title><link>http://www.cppblog.com/llbird/archive/2009/07/20/83025.html#90662</link><dc:creator>llbird</dc:creator><author>llbird</author><pubDate>Mon, 20 Jul 2009 12:46:00 GMT</pubDate><guid>http://www.cppblog.com/llbird/archive/2009/07/20/83025.html#90662</guid><description><![CDATA[当中间包含有0x00 的数据时不可以使用ReadString<br>应使用Read<img src ="http://www.cppblog.com/llbird/aggbug/90662.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/llbird/" target="_blank">llbird</a> 2009-07-20 20:46 <a href="http://www.cppblog.com/llbird/archive/2009/07/20/83025.html#90662#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: CnComm勘误及Faq（将会持续更新）</title><link>http://www.cppblog.com/llbird/archive/2009/07/20/83025.html#90653</link><dc:creator>scaler</dc:creator><author>scaler</author><pubDate>Mon, 20 Jul 2009 12:01:00 GMT</pubDate><guid>http://www.cppblog.com/llbird/archive/2009/07/20/83025.html#90653</guid><description><![CDATA[刚下了v1.5的，用了下发现当接收连续的字符时，当中间包含有0x00 的数据时，会丢掉后面的数据<img src ="http://www.cppblog.com/llbird/aggbug/90653.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/llbird/" target="_blank">scaler</a> 2009-07-20 20:01 <a href="http://www.cppblog.com/llbird/archive/2009/07/20/83025.html#90653#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: CnComm勘误及Faq（将会持续更新）</title><link>http://www.cppblog.com/llbird/archive/2009/05/30/83025.html#86188</link><dc:creator>张天浩</dc:creator><author>张天浩</author><pubDate>Sat, 30 May 2009 09:36:00 GMT</pubDate><guid>http://www.cppblog.com/llbird/archive/2009/05/30/83025.html#86188</guid><description><![CDATA[谢谢回复，我测试了一下确实是Read(&amp;c, 1024);的问题，，不过还是把全部代码发出来供llbird 及大家查看，可能这个问题初学者都能遇到吧，希望大家有时间给指点一下。<br>//======实现功能：向串口发送pSendBuf1，期望返回长度为1，当返回为0x01时，继续发送pSendBuf2，否则退出，发送pSendBuf2 ，期望返回长度为2，返回char[0] = 0x01 并且char[1] =0x02 时成功否则失败。<br>//========实现代码<br><br>//-----------全局变量定义接受字符串和长度<br>char buffReceived[255];<br>int intReceived;<br><br>//! 执行结果: 协议 ASCII(0～N)+0x3 <br>class ClientComm : public CnComm<br>{<br>public:<br>	//! 配置CnComm 监视线程 重叠IO 双缓冲区<br>	ClientComm() //: CnComm(EN_THREAD | EN_TX_BUFFER | EN_RX_BUFFER | EN_OVERLAPPED)<br>	{<br>		hEvent_ = CreateEvent(NULL, TRUE, FALSE, NULL);<br>	}<br>	//! <br>	virtual ~ClientComm()<br>	{<br>		CloseHandle(hEvent_);<br>	}<br>	//! 接收命令响应信息 \sa CnComm::OnReceive()<br>	void OnReceive()<br>	{ <br>		char buffer[1];<br>		int len;<br>		len = Read(buffer, 1);<br>		for (int i = 0; i&lt;len ; i++)<br>		{ <br>			buffReceived[intReceived] = buffer[i];<br>			intReceived++;<br>		}<br><br>	}<br><br>	//! 等待命令响应<br>	bool WaitReturn(DWORD dwWaitTime = 100)<br>	{<br>		return WaitForSingleObject(hEvent_, dwWaitTime) == WAIT_OBJECT_0;<br>	}<br><br><br><br>protected:<br>	HANDLE hEvent_; //!&lt; 等待输入事件<br><br>};<br><br>ClientComm Comm_;<br>ClientComm::BlockBuffer Rx_;<br><br> <br><br>bool  SendCmdIn() // <br>{   <br>	char pSendBuf1[5];<br>	pSendBuf1[0]=80;<br>	pSendBuf1[1]=01;<br>	pSendBuf1[2]=00;//<br>	pSendBuf1[3]=00;<br>	pSendBuf1[4]=00;  <br>	intReceived =0;//初始化计数器<br>	dwBytesWritten=Comm_.Write(pSendBuf1,5);//发送 pSendBuf1 期望返回长度为1 数据位 0x01<br>	while(1)<br>	{<br>		Sleep(1); //暂停1毫秒<br>		//应答成功  <br>		if(intReceived==1 &amp;&amp; (BYTE)buffReceived[0]== 0x01 )<br>		{ <br>			break;//成功 退出<br>		}<br>		////应答失败 <br>		else if (intReceived&gt;1)//<br>		{ <br>			return false;//返回<br>		}<br>	}<br><br>	char pSendBuf2[5];<br>	pSendBuf2[0]=80;<br>	pSendBuf2[1]=01;<br>	pSendBuf2[2]=02;//<br>	pSendBuf2[3]=00;<br>	pSendBuf2[4]=00;  <br>	intReceived =0;//初始化计数器 <br>	dwBytesWritten=Comm_.Write(pSendBuf2,5);//发送 pSendBuf2 期望返回长度为2 数据位 0x01 0x02<br><br>	while(1)<br>	{<br>		Sleep(1); //暂停1毫秒<br>		//应答成功  <br>		if(intReceived==2 &amp;&amp; buffReceived[0]== 0x01&amp;&amp;buffReceived[1]== 0x02 )<br>		{ <br>			break;//成功 退出<br>		}<br>			////应答失败 <br>		else if (intReceived&gt;1)//<br>		{ <br>			return false;//返回<br>		}<br>	}<br>	return true;<br><br>}<br><br><img src ="http://www.cppblog.com/llbird/aggbug/86188.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/llbird/" target="_blank">张天浩</a> 2009-05-30 17:36 <a href="http://www.cppblog.com/llbird/archive/2009/05/30/83025.html#86188#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: CnComm勘误及Faq（将会持续更新）[未登录]</title><link>http://www.cppblog.com/llbird/archive/2009/05/30/83025.html#86162</link><dc:creator>llbird</dc:creator><author>llbird</author><pubDate>Sat, 30 May 2009 05:16:00 GMT</pubDate><guid>http://www.cppblog.com/llbird/archive/2009/05/30/83025.html#86162</guid><description><![CDATA[C++写的类，当然性能是正常的。俺这么多年从来就没有听说性能问题。<br>什么叫慢？你的代码片段不足以让人了解你要做什么，如何测试，DLL和主模块如何搭配，业务的东西你要自己做的，我不对业务做咨询。<br>你如果能够准确明了的描述问题和想法，我有时间还是会做解答，但不承诺。<br>只对CnComm本身问题做咨询。<br><br>注意超时控制，如果你想要接收到数据再返回，<br>要用精确控制。<br>比如14个字节的应答包<br><br>void OnReceive()<br>{<br>   for (1..14)<br>       Read(&amp;c, 1);//一个字节一个字节读<br><br>或者Read(&amp;c, 14);//直接控制恰当的字节数，而不是一味的用1024<br>或则Read函数会一直等到1024个字节，但实际上它等不到，因为根本不可能应答1024字节，它就会等个几百毫秒超时了在返回，可能这就是你说的慢，不知道我的理解真不正确？<br><br>另外你的模式有问题，<br>while(1) <br>{ <br>Sleep(1); //暂停1毫秒 <br>if(intReceived==1 &amp;&amp; (BYTE)buffReceived[0]== 0x01) <br>{ <br>return true; <br>} <br>}<br>不应该这样用你可以用通知方式会更理想，循环很浪费CPU，直接WaitEvent更好一些<br>}<br><br><br><img src ="http://www.cppblog.com/llbird/aggbug/86162.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/llbird/" target="_blank">llbird</a> 2009-05-30 13:16 <a href="http://www.cppblog.com/llbird/archive/2009/05/30/83025.html#86162#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>接受速度稍微有点慢，不知道是我用法不对还是怎么？</title><link>http://www.cppblog.com/llbird/archive/2009/05/30/83025.html#86159</link><dc:creator>张天浩</dc:creator><author>张天浩</author><pubDate>Sat, 30 May 2009 04:23:00 GMT</pubDate><guid>http://www.cppblog.com/llbird/archive/2009/05/30/83025.html#86159</guid><description><![CDATA[您好，看到这个串口类感觉很强大，多些作者开源，但是有个问题是我在应用中感觉速度稍微慢，不知道是不是我应用方式不对？请指教.<br>我的应用介绍：开发一个读卡器的dll类库。实现发送命令。<br>我的做法是这样： <br>------1、定义两个全局变量，一个是长度一个是接收到的Buff如下<br>//-----------全局变量<br>char buffReceived[255];<br>int intReceived;<br><br>------2、继承类：<br>class ClientComm : public CnComm<br>{<br>public:<br>	//! 配置CnComm 监视线程 重叠IO 双缓冲区<br>	ClientComm() //: CnComm(EN_THREAD | EN_TX_BUFFER | EN_RX_BUFFER | EN_OVERLAPPED)<br>	{<br>		hEvent_ = CreateEvent(NULL, TRUE, FALSE, NULL);<br>	}<br>	//! <br>	virtual ~ClientComm()<br>	{<br>		CloseHandle(hEvent_);<br>	}<br>	//! 接收命令响应信息 \sa CnComm::OnReceive()<br>	void OnReceive()<br>	{ <br>		char buffer[1024];<br>		int len;<br>		len = Read(buffer, 1024);<br>		for (int i = 0; i&lt;len ; i++)<br>		{ <br>			buffReceived[intReceived] = buffer[i];<br>			intReceived++;<br>		}<br><br>	}<br>	//! 等待命令响应<br><br><br>protected:<br>	HANDLE hEvent_; //!&lt; 等待输入事件<br><br>};<br><br>------3、 处理事件<br><br>bool SendCmdIn()<br>{<br>char pSendBuf[10];<br>Comm_.Write(pSendBuf,5);//发送数据<br>//处理监控得到的数据<br><br>while(1)<br>	{<br>		Sleep(1); //暂停1毫秒<br>	if(intReceived==1 &amp;&amp; (BYTE)buffReceived[0]== 0x01)<br>		{ <br>			return true;<br>		}<br>	  }<br><br>}<img src ="http://www.cppblog.com/llbird/aggbug/86159.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/llbird/" target="_blank">张天浩</a> 2009-05-30 12:23 <a href="http://www.cppblog.com/llbird/archive/2009/05/30/83025.html#86159#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>evc关于模拟器的环境搭建咨询</title><link>http://www.cppblog.com/llbird/archive/2009/05/30/83025.html#86142</link><dc:creator>hanliang</dc:creator><author>hanliang</author><pubDate>Sat, 30 May 2009 00:27:00 GMT</pubDate><guid>http://www.cppblog.com/llbird/archive/2009/05/30/83025.html#86142</guid><description><![CDATA[目前我手上搭建了wince 5.0模拟器的环境,但是无法测试通过.想确定一下你手上是如何搭建的模拟器环境.谢谢.我的邮箱是:hanliang516@126.com<img src ="http://www.cppblog.com/llbird/aggbug/86142.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/llbird/" target="_blank">hanliang</a> 2009-05-30 08:27 <a href="http://www.cppblog.com/llbird/archive/2009/05/30/83025.html#86142#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: CnComm勘误及Faq（将会持续更新）</title><link>http://www.cppblog.com/llbird/archive/2009/05/16/83025.html#83099</link><dc:creator>张冬冬</dc:creator><author>张冬冬</author><pubDate>Sat, 16 May 2009 00:05:00 GMT</pubDate><guid>http://www.cppblog.com/llbird/archive/2009/05/16/83025.html#83099</guid><description><![CDATA[奥 看来我对串口的工作机制及C++语言规范还不是太懂，<br>谢谢回复，会努力的。<img src ="http://www.cppblog.com/llbird/aggbug/83099.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/llbird/" target="_blank">张冬冬</a> 2009-05-16 08:05 <a href="http://www.cppblog.com/llbird/archive/2009/05/16/83025.html#83099#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: CnComm勘误及Faq（将会持续更新）</title><link>http://www.cppblog.com/llbird/archive/2009/05/15/83025.html#83092</link><dc:creator>llbird</dc:creator><author>llbird</author><pubDate>Fri, 15 May 2009 14:57:00 GMT</pubDate><guid>http://www.cppblog.com/llbird/archive/2009/05/15/83025.html#83092</guid><description><![CDATA[Comm_.Write(buffer); <br>不返回发送数量是因为重叠IO的作用。<br>系统将在后台帮你把数据发送出去，由于串口是低速设备，如果你要等待返回发送数量将浪费系统资源，所以函数直接返回，以便你继续操作，这样并行操作，提高系统利用率<img src ="http://www.cppblog.com/llbird/aggbug/83092.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/llbird/" target="_blank">llbird</a> 2009-05-15 22:57 <a href="http://www.cppblog.com/llbird/archive/2009/05/15/83025.html#83092#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: CnComm勘误及Faq（将会持续更新）</title><link>http://www.cppblog.com/llbird/archive/2009/05/15/83025.html#83091</link><dc:creator>llbird</dc:creator><author>llbird</author><pubDate>Fri, 15 May 2009 14:52:00 GMT</pubDate><guid>http://www.cppblog.com/llbird/archive/2009/05/15/83025.html#83091</guid><description><![CDATA[memcpy(NewBlock(dwSize)-&gt;P_, ((LPBYTE)lpBuf) + dwCopy, dwTemp);//<br><br>这里忘记把const属性去掉<img src ="http://www.cppblog.com/llbird/aggbug/83091.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/llbird/" target="_blank">llbird</a> 2009-05-15 22:52 <a href="http://www.cppblog.com/llbird/archive/2009/05/15/83025.html#83091#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>