MFC MSComm串口接收数据问题????
我现在程序里面可以收到串口接收到的数据,但是想把其中一段数据给提取出来放到一个数组里面。要提取的数据是一个以#开头,以@结尾的字符型数据。串口接收数据的数据类型是VARI...
我现在程序里面可以收到串口接收到的数据,但是想把其中一段数据给提取出来放到一个数组里面。要提取的数据是一个以#开头,以@结尾的字符型数据。串口接收数据的数据类型是VARIANT类型,这个数据类型本人不 太懂。我写的代码如下,请高手帮忙把程序改改。
switch(myComm.GetCommEvent())
{
case 2:
//收到RTHreshold个字符
input1=myComm.GetInput(); //读取输入缓冲区的字符,
safearray1=input1;
len1=safearray1.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len1;k++)
safearray1.GetElement(&k,rxdata+k);
//if(rxdata[0]==35 && rxdata[51]==64) //判断是否是以包首字符“#”开头,包尾字符“@”结束的字符串 ,就是想把中间51个字符提取出来放到strsum里面
{
for(k=0;k<len1;k++) //将数组转化为Cstring型变量
{
BYTE bt=*(char*)(rxdata+k);//字符型
strDis.Format("%c",bt);//将字符送入临时变量strSum存放
if(?) //这边不知道怎么写,也不知道是不是应该写在这边//判断是否是以包首字符“#”开头,包尾字符“@”结束的字符串
{
strSum+=strDis;
m_edit=m_edit+"2";
UpdateData(FALSE);
}
}
strDis="";
} 展开
switch(myComm.GetCommEvent())
{
case 2:
//收到RTHreshold个字符
input1=myComm.GetInput(); //读取输入缓冲区的字符,
safearray1=input1;
len1=safearray1.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len1;k++)
safearray1.GetElement(&k,rxdata+k);
//if(rxdata[0]==35 && rxdata[51]==64) //判断是否是以包首字符“#”开头,包尾字符“@”结束的字符串 ,就是想把中间51个字符提取出来放到strsum里面
{
for(k=0;k<len1;k++) //将数组转化为Cstring型变量
{
BYTE bt=*(char*)(rxdata+k);//字符型
strDis.Format("%c",bt);//将字符送入临时变量strSum存放
if(?) //这边不知道怎么写,也不知道是不是应该写在这边//判断是否是以包首字符“#”开头,包尾字符“@”结束的字符串
{
strSum+=strDis;
m_edit=m_edit+"2";
UpdateData(FALSE);
}
}
strDis="";
} 展开
1个回答
2012-05-23
展开全部
看 龚建伟 的书 发现 接收后 数据转换处理非常 复杂
追问
就是想把接收到的数据当中以#开头的51位数据取出来,求简单的代码
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询