问一个串口通信后数据处理的问题(VC++)

SNSCZ1985 2007-05-07 11:04:09
写了个跟串口通信有关的程序。串口接受的代码如下:
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<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
for(k=0;k<len;k++) //将数组转换为Cstring型变量
{
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,也就是说只显示三位数值的变化,要怎么办呢?
...全文
219 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
shen_guang_wu 2007-05-08
  • 打赏
  • 举报
回复
在 m_2+=strtemp; //加入接收编辑框对应字符串
之前判断一下m_2的长度,如果等于3就让m_2清空。
Great_Bug 2007-05-08
  • 打赏
  • 举报
回复
CString 提供了一些操作,你可看MSDN

27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧