MFC中的mscomm控件怎么接收缓冲区中的问题
MFC中的mscomm控件怎么实现接收缓冲区中的数据,将它的前6个字节赋给一个变量a,接下来的6个字节赋给另一个变量b,然后再接下来的6个字节赋给变量a,再接下来的6个字...
MFC中的mscomm控件怎么实现接收缓冲区中的数据,将它的前6个字节赋给一个变量a,接下来的6个字节赋给另一个变量b,然后再接下来的6个字节赋给变量a,再接下来的6个字节赋给变量b……依次循环!!!
展开
1个回答
展开全部
if(m_commCtrl.GetCommEvent() == 2) //事件值为2表示接收缓冲区内有字符
{
CByteArray bytes;
COleSafeArray dataGet;
try
{
dataGet = m_commCtrl.GetInput(); //读缓冲区
long len = dataGet.GetOneDimSize(); //得到有效数据长度
if(len >= 6)//对数据大小判断,我这里示例是6,你也可以不要判断
{
dataGet.GetByteArray(bytes);//这样你可以把bytes当数组用了。如bytes[0]就是第一个字节
}
}
catch (CException* e)
{
e->ReportError();
e->Delete();
}
}
当获取了bytes以后,你想怎么操作都行。
追问
好像不能满足我提出来的条件吧?我要求是总共有四个变量a,b,c,d,缓冲区中的第一个6个字节要给a,第二个6个字节要给b,第三个6个字节要给c,第四个6个字节要给d,再接着的6个字节要给a,依次循环!
追答
你好,我只是没有帮你赋值而已。因为不知道你设置接收多少个字节才触发事件。
我假设你设定1个字节触发
假设你定义成员变量m_data
然后定义收到数据长度m_len
在每次进入这个函数i
f(len)
for(int i = 0; i =24)
{
你把m_data的值给你要赋值的变量就行了。
}
其实我上边的示例就是告诉你在每次触发串口接收事件里读取数据长度为len,数据可以使用bytes[i]来获取第i个字节,剩下的赋值的事儿看你怎么用而已。如果还不明白,我也没辙了...
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询