CSDN博客

img chenyinyi

VC利用MSCOM控件读串口数据

发表于2004/9/27 15:56:00  2302人阅读

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);
}

阅读全文
0 0

相关文章推荐

img
取 消
img