大家好:
我是个未入门的vc,小小的问题!在m_receive(Edit控件的Menber名)中显示从串口读到的字符串时,进入debug一步步得的结果和直接得到的结果不同!我感到很惊讶!!!
例如接受“123456789123456789”时,debug后的edit显示是正常的!但按F5执行的执行edit结果是 6789,仔细观察在显示6789之前“12345678912345”在edit中闪一下!
不知何故,按常理 F5和CTRL+F5执行的结果应该是相同的?不知疏忽了哪?
望大家帮助,先谢谢了!!
先看看下代码,
void CComm2Dlg::OnOnCommMscomm1()
{
// TODO: Add your control notification handler code here
VARIANT vResponse;
char *str;
char *str1;
int k, nEvent, i;
nEvent = m_Com.GetCommEvent(); switch(nEvent)
{
case 2: //收到大于RTHresshold个字符
k = m_Com.GetInBufferCount(); //接收到的字符数目
if(k > 0)
{
//把缓冲区中收到的数据读入变量
vResponse=m_Com.GetInput();
//对数据进行其他处理
str = (char*)(unsigned char*)
vResponse.parray->pvData;
}
// 接收到字符,MSComm控件发送事件
i = 0;
str1 = str;
while (i < k)
{
i++;
str1++;
}
*str1 = '\0';
m_receive = (const char *)str;//?????????
//清除字符串中的不必要字符
break;
case 3: //CTS线状态发生了变化
break;
case 4: //DSR线状态发生了变化
break;
case 5: //CD线状态发生了变化
break;
case 6: //Ring Indicator发生变化
break;
} UpdateData(false);
}
我是个未入门的vc,小小的问题!在m_receive(Edit控件的Menber名)中显示从串口读到的字符串时,进入debug一步步得的结果和直接得到的结果不同!我感到很惊讶!!!
例如接受“123456789123456789”时,debug后的edit显示是正常的!但按F5执行的执行edit结果是 6789,仔细观察在显示6789之前“12345678912345”在edit中闪一下!
不知何故,按常理 F5和CTRL+F5执行的结果应该是相同的?不知疏忽了哪?
望大家帮助,先谢谢了!!
先看看下代码,
void CComm2Dlg::OnOnCommMscomm1()
{
// TODO: Add your control notification handler code here
VARIANT vResponse;
char *str;
char *str1;
int k, nEvent, i;
nEvent = m_Com.GetCommEvent(); switch(nEvent)
{
case 2: //收到大于RTHresshold个字符
k = m_Com.GetInBufferCount(); //接收到的字符数目
if(k > 0)
{
//把缓冲区中收到的数据读入变量
vResponse=m_Com.GetInput();
//对数据进行其他处理
str = (char*)(unsigned char*)
vResponse.parray->pvData;
}
// 接收到字符,MSComm控件发送事件
i = 0;
str1 = str;
while (i < k)
{
i++;
str1++;
}
*str1 = '\0';
m_receive = (const char *)str;//?????????
//清除字符串中的不必要字符
break;
case 3: //CTS线状态发生了变化
break;
case 4: //DSR线状态发生了变化
break;
case 5: //CD线状态发生了变化
break;
case 6: //Ring Indicator发生变化
break;
} UpdateData(false);
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货