加时间到串口打印中,时间显示位置有异常

加时间到串口打印中,时间显示位置有错误。
本帖最后由 yyang0514 于 2014-07-25 16:06:57 编辑
现在打印效果是:

[16:01:45]  get IR key = 0x91
[app_ui_bt_entry]
[app_ui_root_en
[16:01:45]  try]  #这行时间加的位置不对
[16:01:45]  get IR key = 0x91


请问应该如何修改,能保证打印时间位置始终在每行的开头。
我在CEDITVIEW的串口信息接收函数如下:

void CserialtoolView::OnComm()
{
// TODO: 在此处添加消息处理程序代码
int inCount;
CString str,temp,timestr;
VARIANT input;
BYTE rxdata[1024];
long len,k,i=0;
COleSafeArray safearray;
CByteArray Array;
CTime curtime=CTime::GetCurrentTime();
timestr=curtime.Format(_T("[%H:%M:%S]  "));
myStr+=timestr;
switch(myComm.get_CommEvent())
{
case 2:
{
inCount=myComm.get_InBufferCount();
input=myComm.get_Input();
safearray=input;
len=safearray.GetOneDimSize();
for (k=0;k<len;k++)
{
safearray.GetElement(&k,rxdata+k);
str.Format(_T("%c"),rxdata[k]);
temp+=str;
}
//MessageBox(temp);

myComm.put_InBufferCount(0);//清空串口buffer
Sleep(10);
break;
}
default:
break;
}
//GetEditCtrl().SetWindowText(timestr);
//temp+=str;
myStr+=temp;
myStr+='\n';
GetEditCtrl().SetWindowText(myStr);
SendMessage(WM_VSCROLL,SB_BOTTOM);
}

------解决方案--------------------
检测字符串, 在\r\n后面加时间字符串。
有可能一次收到的不是一行。