一个串口接收数据的代码

在解决串口接收数据问题时,通过下载的专业代码解决了困扰几个小时的难题。该C++代码展示了如何使用VARIANT和COleSafeArray处理接收到的BYTE数据,并将其转化为CString显示。
摘要由CSDN通过智能技术生成

昨天自己写串口程序,弄了几个小时,接收数据老是出现问题。实在没有办法,在csdn上下了个程序,代码如下,居然通过了。baidu出来的代码都不行。还是专业的牛X呀。

 

void CSCommTestDlg::OnComm()
{
 // TODO: Add your control notification handler code here
 VARIANT variant_inp;
 COleSafeArray safearray_inp;
 LONG len,k;
 BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
 CString strtemp;
 if(m_ctrlComm.GetCommEvent()==2)     //事件值为2表示接收缓冲区内有字符
 {
  variant_inp=m_ctrlComm.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++)             //将数组转换为Cstring型变量
  {
   BYTE bt=*(char*)(rxdata+k);      //字符型
   strtemp.Format("%c",bt);         //将字符送入临时变量strtemp存放
   m_strRXData+=strtemp;    //加入接收编辑框对应字符串   
  }
 }
 UpdateData(FALSE);           //更新编辑框内容
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值