static CString string_receive=_T("");LRESULT CSEVC_DDlg:: OnCommNotify(WPARAM wParam,LPARAM lParam)
{
m_pOutbuffer=new char[4096];
memset(m_pOutbuffer, 0, 4096);
if((wParam&EV_RXCHAR)!=EV_RXCHAR)
{
SetEvent(m_hPostMsgEvent);
return 0L;
}
else
{
int i;
DWORD number=ReadComm(m_pOutbuffer,4096);
for( i=0;i<(int)number;i++)
{
string_receive=string_receive+m_pOutbuffer[i];
m_edit.ReplaceSel(string_receive);
string_receive=_T("");
}
SetEvent(m_hPostMsgEvent);
}
delete []m_pOutbuffer;
return 0L;
}
上面是一个自定义的消息,当串口接收到一个字符就触发这个消息,现在我已经能把接收到的消息显示在对话框中了,我想把数据送到一个变量中,要进行实时处理,应该如何做?
{
m_pOutbuffer=new char[4096];
memset(m_pOutbuffer, 0, 4096);
if((wParam&EV_RXCHAR)!=EV_RXCHAR)
{
SetEvent(m_hPostMsgEvent);
return 0L;
}
else
{
int i;
DWORD number=ReadComm(m_pOutbuffer,4096);
for( i=0;i<(int)number;i++)
{
string_receive=string_receive+m_pOutbuffer[i];
m_edit.ReplaceSel(string_receive);
string_receive=_T("");
}
SetEvent(m_hPostMsgEvent);
}
delete []m_pOutbuffer;
return 0L;
}
上面是一个自定义的消息,当串口接收到一个字符就触发这个消息,现在我已经能把接收到的消息显示在对话框中了,我想把数据送到一个变量中,要进行实时处理,应该如何做?
怎么实现啊?能给出代码吗?
每接受一个字符或者发送一个字符都会出发一个事件OnCommMscomm(),用一个全局变量把这个接受来的字符保村起来即可以拉!
for( i=0;i<(int)number;i++)
{
string_receive=string_receive+m_pOutbuffer[i];
m_edit.ReplaceSel(string_receive);
string_receive=_T("");
}
对于这段代码而言,你每次将接受到的STRING发送到界面上,然后马上把string_receive置空,当然什么也得不到拉!这里面的string_receive如果是局部变量,也是可以工作的阿,比如你可以再加一个全局的CString str_receive;
CString str_receive=_T("");global param;
function()
{...
CString string_receive=_T("");
for( i=0;i<(int)number;i++)
{
string_receive=string_receive+m_pOutbuffer[i];
m_edit.ReplaceSel(string_receive);
str_receive+=string_receive;
string_receive=_T("");
}
...
}
我想这样所有得字符都会保留再str_receive里面吧
万分感谢!