📄 subject_58966.htm
字号:
<p>
序号:58966 发表者:狂战士 发表日期:2003-11-05 10:44:54
<br>主题:急待解决的问题(苦恼了两天了!)大侠们请帮忙啊,
<br>内容:向设备发送操作命令后,马上提取我所需的数据,可是提取的结果为空的我跟踪调试了一下,发现在读取串口函数中已经有了从设备应答的数据,并已经放入了全局数组中,可是在发送提取函数中却发现该数组却是空的,我是在发送操作命令后进行了Sleep(1000)再进行提取的啊,为什么在这个函数里的全局数组是空的呢???该如何解决啊?<BR>示例如下:<BR>unsigned char* pDataBuf=new unsigned char[4096];// 全局数组<BR>int DataCount=0;// 接受数据的字节数<BR>LRESULT CXXXXXDlg:: OnCommNotify(WPARAM wParam,LPARAM lParam)<BR>{<BR> if((wParam&EV_RXCHAR)!=EV_RXCHAR)<BR> {<BR> SetEvent(m_hPostMsgEvent);<BR> return 0L;<BR> }<BR> else<BR> {<BR> DataCount=ReadComm(pDataBuf,4096);//已经有了应答数据<BR> SetEvent(m_hPostMsgEvent);<BR> }<BR> return 0L;<BR>}<BR>void CXXXXXXDlg::Send_Distill()<BR>{........<BR>.........//向设备发送命令<BR>Sleep(1000);<BR>//---------------进行数据提取------------------//<BR>........//这里的全局数组里却是空的啊???????!!!!!!!<BR>........<BR>}
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:狂战士 回复日期:2003-11-05 13:01:09
<br>内容:请大家发表一下意见啊!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:火柴点烟 回复日期:2003-11-05 13:36:48
<br>内容:!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:mm2003 回复日期:2003-11-05 14:08:01
<br>内容:只有一种可能:<BR>提取时你的串口函数已经运行了不只1次,数据当然空了<BR>为什么要用这种方法呢?sleep()+查询是实时操作编程中应当极力避免使用的,使用消息机制才是最好的选择。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:狂战士 回复日期:2003-11-05 14:21:33
<br>内容:TO:mm2003<BR>我如果再增加一个按钮,把提取函数放入,点击后就可以正常提取了啊!~<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:kevin 回复日期:2003-11-05 17:23:39
<br>内容:如果不是收数据,不一定都收数据,还有是别的事件的可能吧!<BR>用SWITCH --CASE 试试<BR>或者干脆改成如果是收数据,试一下
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:红苹果 回复日期:2003-11-05 21:32:45
<br>内容:这样试试:<BR>unsigned char* pDataBuf=new unsigned char[4096];// 全局数组<BR>int DataCount=0;// 接受数据的字节数<BR>LRESULT CXXXXXDlg:: OnCommNotify(WPARAM wParam,LPARAM lParam)<BR>{<BR> if((wParam&EV_RXCHAR)!=EV_RXCHAR)<BR> {<BR> SetEvent(m_hPostMsgEvent);<BR> return 0L;<BR> }<BR> else<BR> {<BR> if( DataCount< 4096 ) // 缓冲区未满继续读 <BR> {<BR> int n;<BR> unsigned char *p;<BR> p = pDataBuf+DataCount;<BR> n=ReadComm( p,4096-DataCount);//已经有了应答数据<BR> if( n>0 )<BR> DataCount += n;<BR> }<BR> SetEvent(m_hPostMsgEvent);<BR> }<BR> return 0L;<BR>}<BR>void CXXXXXXDlg::Send_Distill()<BR>{........<BR>.........//向设备发送命令<BR> MSG msg;<BR> for( int i=0;i<100;i++ )<BR> {<BR> if(GetMessage(&msg,m_hWnd,0,0)) // 有机会处理消息CommNotify<BR> {<BR> TranslateMessage(msg);<BR> DispatchMessage(msg);<BR> Sleep(10);<BR> }<BR> }<BR>//---------------进行数据提取------------------//<BR>........//这里的全局数组里却是空的啊???????!!!!!!!<BR> DataCount=0; //取了数据后清0<BR>........<BR>} <BR>2003-11-5 21:33:53
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -