WEB开发网
开发学院软件开发VC 多线程,多接收模式串口类LsComm 阅读

多线程,多接收模式串口类LsComm

 2010-06-23 20:40:59 来源:WEB开发网   
核心提示:主要是一个等待事件发送然后调用,响应的过程,如果读取事件发生则调用this->HandleReadEvent(this->m_ReadOverlapped);bool CReadComThread::HandleReadEvent(OVERLAPPED& overlapped){if(this->m_

主要是一个等待事件发送然后调用,响应的过程,如果读取事件发生则调用this->HandleReadEvent(this->m_ReadOverlapped);

bool CReadComThread::HandleReadEvent(OVERLAPPED& overlapped)
{
  if(this->m_pPort->GetSerialPort()->GetOverlappedResult(overlapped,this->m_InBufferCount,false))
  {
    return this->HandleData();
  }
  DWORD dwError = ::GetLastError();
  if(dwError==ERROR_INVALID_HANDLE)
    return false;
  else
    return true;
}

如果查询有数据,则this->HandleData();

bool CReadComThread::HandleData() //处理读取数据
{
  if(this->m_InBufferCount>0)
  {
   this->m_pBuffer = new byte[this->m_InBufferCount];
   for(int i=0;i<(int)this->m_InBufferCount;i++)
   {
     this->m_pBuffer[i] = this->m_InputBuffer[i];
   }
   this->m_pPort->ReceiveData(this->m_pBuffer,this->m_InBufferCount);
   delete[] this->m_pBuffer;
  }
  return true;
}

在这调用了this->m_pPort->ReceiveData(this->m_pBuffer,this->m_InBufferCount);即调用了你传入的函数.整个读取过程就这样了.如果还有不明白,请看我写的CComPort的类的代码.

当然,由于串行通讯各种情况综合在一起比较复杂,另外本人水平有限,所以一时很难考虑全面,这个版本暂时定为1.0,希望大家如果在使用过程中发现什么问题,请及时的告诉偶(E-Mail:Milo2002@sohu.com),有时间我做个升级什么的,当然,希望大家多多提出批评意见.

本文配套源码

上一页  2 3 4 5 6 7 

Tags:线程 接收 模式

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接