大侠们:
    我的串口属性定义如下:
         if(m_hcomm.GetPortOpen())
              m_hcomm.SetPortOpen(FALSE);//关闭串口
m_hcomm.SetCommPort(1);
m_hcomm.SetInBufferSize(1024);
m_hcomm.SetOutBufferSize(1024);
if(!m_hcomm.GetPortOpen())
m_hcomm.SetPortOpen(TRUE);
m_hcomm.SetInputMode(1);
m_hcomm.SetSettings("115200,n,8,1");
m_hcomm.SetRThreshold(164);
m_hcomm.SetInputLen(0);
    串口时间响应函数为:
        VARIANT wariantdata;
COleSafeArray safearray;
long len=0;
long k=0; byte radax[200];
memset(radax,0,200);
byte b0,b1,b2,b3,b4,b5,b162,b163; CString str="";  //十六进制显示用到的CString型变量
CString strtmp=""; CString str1=""; //字符型显示用到的CString型变量
CString strtmp1=""; switch(m_hcomm.GetCommEvent()) {

case 2:
wariantdata=m_hcomm.GetInput();
safearray=wariantdata;
len=safearray.GetOneDimSize();
safearray.GetElement(&k,&b0);
k=k+1;
safearray.GetElement(&k,&b1);
k=k+1;
safearray.GetElement(&k,&b2);
k=k+1;
safearray.GetElement(&k,&b3);
k=k+1;
safearray.GetElement(&k,&b4);
k=k+1;
safearray.GetElement(&k,&b5);
len=len-1;
safearray.GetElement(&len,&b163);
len=len-1;
safearray.GetElement(&len,&b162);
if (b0==0x00&&b1==0x00&&b2==0x00&&b3==0x00&&b4==0x02&&b5==0xa6&&b162==0x0d&&b163==0x0a)
{
for (k=6;k<len;k++)
{
safearray.GetElement(&k,&radax[k-6]);
}
radax[k-5]='\0';  //用byte型数组来接收safearray中的数据; for (k=0;k<156;k++)
{
byte bt=*(char*)(radax+k); //字符型
str1.Format("%c",bt); //将字符送入临时变量strtemp存放
strtmp1+=str1; //strtmp1来保存
}
                  //十六进制显示
for (k=0;k<55;k++)
{
str.Format("%x",radax[k]);
strtmp+=str;
str="";
}
strtmp+="\r";
strtmp+="\n";

for (k=55;k<110;k++)
{
str.Format("%x",radax[k]);
strtmp+=str;
str="";
}
strtmp+="\r";
strtmp+="\n";
for (k=110;k<156;k++)
{
str.Format("%x",radax[k]);
strtmp+=str;
strtmp+="\0";
str="";
}
//字符串形式显示
int lenstrtmp1;
lenstrtmp1=strtmp1.GetLength();
((CEdit*)GetDlgItem(IDC_EDIT_SHOWDATA1))->SetWindowText(strtmp1);
memset(radax,0,200); ((CEdit*)GetDlgItem(IDC_EDIT_SHOW_DATA))->SetWindowText(strtmp);
}
else
{
safearray.Clear();
return;
}