LONG CVCDlg::OnComm(WPARAM ch, LPARAM port)
{
 
    static char checksum=0,checksum1=0;
static int count=0;//,count2=0,count3=0;
static unsigned char buf[40]; 
    static char c1,c2;    //用于计算半Byte校验
static int flag;     //用于接收阶段标记
static int twoflag=0;
     m_rx += ch;
     switch(ch)
{
case ':':
checksum=0; //开始计算CheckSum
flag=0;
break;

case CR:   //这句必须加上,否则会出错的
                flag=2;
break;
case LF:   //数据包的最后一个字符
m_rx.Empty();
break;
default:
if(flag>0)  //注意:只有在接收到'cr'后,flag才大于0
{

if(flag==1) 
{

//以下取出位置与速度数据
CString strTemp;
strTemp = m_rx.Mid(10,5);
char *temp=(char*)((LPCTSTR)strTemp);
char tbuf[4];
PeopleNum(temp, tbuf);
//  tbuf[0]=temp[0]; tbuf[1]=temp[1]; tbuf[2]=0;
//  m_a1 = atoi(tbuf);  //得到位置值
//  tbuf[0]=temp[2]; tbuf[1]=temp[3]; 
//  tbuf[2]=temp[4]; tbuf[3]=0;
//  m_a2 = atoi(tbuf);  //得到值 }
//从'cr'后收,flag=2,1次减1操作,正好将数据包的校验值保存在m_strChecksum中
flag--;  
}

break;
}

//UpdateData(FALSE);
return 0;}为什么不对,因为参考龚建伟的第7章程序,但是本数据串没有* 结束符号,请教该如何再处理?