串口通讯

来源:互联网 发布:烤机软件 编辑:程序博客网 时间:2024/04/29 19:54

数据读取:
void CPanctrlDlg::OnComm()
{
 // TODO: Add your control notification handler code here
 COleVariant myVar;
 COleSafeArray safearray_inp;
 LONG len,k;
 BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
 CString strtemp, recd;
 switch(m_Comm.GetCommEvent())
 {
 case 1: // comEvSend发送数据
  break;
 case 2: // comEvReceive读取数据
  // MessageBox(_T("读取数据事件"), _T("TRACE"), MB_OK);
  myVar.Attach(m_Comm.GetInput()); //读缓冲区
  safearray_inp=myVar; //VARIANT型变量转换为ColeSafeArray型变量
  len=safearray_inp.GetOneDimSize(); //得到有效数据长度
  // 接受数据
  for(k=0; k<len; k++)
  {
   safearray_inp.GetElement(&k,rxdata+k); //转换为BYTE型数组
   BYTE bt=*(char*)(rxdata+k); //字符型
   strtemp.Format("%02X ",bt); //将字符送入临时变量strtemp存放
   recd+=strtemp;
  }
  TRACE(recd+"/n"); 
  break;
 default: // 传输事件出错
  m_Comm.SetOutBufferCount(0);
  break;
 }
}
数据发送:
 CByteArray Array;
 Array.SetSize(4);
 Array[0]  = 0x83;
 Array[1]  = 0x45;
 Array[2]  = 0x00;
 Array[3]  = 0x02;
 COleVariant var(Array);
 m_Comm.SetOutput(var);