VC利用MSCOM控件读串口数据

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值