3660|2

68

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

问一个串口通信后数据处理的问题(VC++) [复制链接]

写了个跟串口通信有关的程序。串口接受的代码如下:
void CMyDlg::OnComm()
{
        // TODO: Add your control notification handler code here
        VARIANT variant_inp;
        COleSafeArray safearray_inp;
        LONG len,k,i=0;
        BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
        CString strtemp;
        if(m_ctrlComm.GetCommEvent()==2)     //事件值为2表示接收缓冲区内有字符
        {
                variant_inp=m_ctrlComm.GetInput();   //读缓冲区
                safearray_inp=variant_inp;           //VARIANT型变量转换为ColeSafeArray型变量
                len=safearray_inp.GetOneDimSize(); //得到有效数据长度
                for(k=0;k                         safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
                for(k=0;k                 {
                        BYTE bt=*(char*)(rxdata+k);      //字符型
                        strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放
                        m_2+=strtemp;    //加入接收编辑框对应字符串
               
        }
        UpdateData(FALSE);           //更新编辑框内容
       
}


现在的问题是m_2这个CString类型不断的在加字符,字符长度不断增加。
例如说:我收到0、1、2这三个字符,处理后显示为012,如果再接收到字符222,那么显示为012222,但是如果我想在编辑框里只显示222,也就是说只显示三位数值的变化,要怎么办呢?

最新回复

在 m_2+=strtemp;    //加入接收编辑框对应字符串 之前判断一下m_2的长度,如果等于3就让m_2清空。  详情 回复 发表于 2007-5-8 08:10
点赞 关注

回复
举报

72

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
CString 提供了一些操作,你可看MSDN
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
在 m_2+=strtemp;    //加入接收编辑框对应字符串
之前判断一下m_2的长度,如果等于3就让m_2清空。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表