void CINSDlg::OnOnCommMscomm1()
{
// TODO: Add your control notification handler code here
VARIANT variant_inp;
COleSafeArray safearray_inp;
long len,k;
char ch;
BYTE rxdata[2048];
CString strtemp;
if(m_Com.GetCommEvent()==2)
{
variant_inp=m_Com.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++)
{
BYTE bt=*(char*)(rxdata+k);//字符型
// BYTE bt=*(char*)(str+k);//字符型
// strtemp.Format("%c",bt);//可能引起零为无数据
if((flag==1)&&(count<=26))
{
data[count]=bt;
count++;
m_strRXData+=bt;
}
else
{
flag=0;
}
ch=(char)bt;
if((ch=='E')&&(flag_first==1)) //是否连续收到0x7f,'E';
{
flag=1;
count=0;
// strcpy(data,m_strRXData);//会把零当为字符串结束
m_strRXData.Empty();
}
else
{
flag_first=0;
}
if(ch==0x7f)
{
flag_first=1;//是否收到头字符0x7f
}
else
{
flag_first=0;
}
}
}
UpdateData(FALSE);
}