/*!
 * \brief  功能概述 响应readyRead(QByteArray)信号,解析收到的报文函数
 * \param  参数描述 Respond_是收到的报文
 * \return 返回值描述 无
 * \author zzy
 * \date   2015/5/25
 */
void CProtocolDLT_645_07::ProcessRespond(QByteArray Respond_)
{

//    qDebug()<<Respond_.toHex()<<"打印收到的信息";
    QMutexLocker locker(&m_mutexProcessData);

    m_bufferReceive.AppendData(Respond_.data(),Respond_.count());

    QByteArray array((char *)m_bufferReceive.GetBuffer(0),m_bufferReceive.GetInfoSize());
    qDebug()<<"array.toHex()"<<array.toHex();

    if (m_bufferReceive.GetInfoSize() < MinFrameLength)
        return ;
//    ShowMessage(1,m_arrayRespondBuffer.toHex());
//    DecodeReceive(m_arrayRespondBuffer);
    for(int nStart=0; nStart<=m_bufferReceive.GetInfoSize() - MinFrameLength; ++nStart)
    {
        int nFrameLength = IsAFrame(m_bufferReceive.GetBuffer(nStart),m_bufferReceive.GetInfoSize()-nStart);
        if(nFrameLength)
        {
            m_Response.SetData(m_bufferReceive.GetBuffer(nStart),nFrameLength);
            QByteArray frame;
            if (nStart != 0)
            {
                frame = QByteArray((char*)m_bufferReceive.GetBuffer(0),nStart);
                ShowMessage(SHOWMESSAGE_TYPE_DEBUG,frame.toHex().toUpper());
            }
            frame = QByteArray((char*)m_Response.GetBuffer(0),m_Response.GetInfoSize());
            ShowMessage(SHOWMESSAGE_TYPE_RECEIVE,frame.toHex().toUpper());
            m_bufferReceive.Fifo(nStart+nFrameLength);
            ProcessRespond(m_Response);
//            ProcessResponse(m_CDTResponse);
            nStart=-1;//重新再来
        }
    }
    if(m_bufferReceive.GetInfoSize()>MAX_FRAME)
    {
        m_bufferReceive.SetInfoSize(0);
        Q_ASSERT(false);
    }
}
bool CProtocolBase::SetInitLink(ChannelType nChannelType_, const QDomElement &MainPort_)
{
#if defined(TIAOSHI)
        m_CGI_CLinkLib.setFileName("Protocol/CGI_CLINKLib_d");//文件名
#else
        m_CGI_CLinkLib.setFileName("Protocol/CGI_CLINKLib");//文件名
#endif
    if (m_CGI_CLinkLib.load())
    {
        qDebug()<<"DLL load is OK!"<<m_CGI_CLinkLib.fileName();
        typedef CGI_CLINKI * (DLLAPI_CreateDriver)(QObject *parent );//初始化协议
        DLLAPI_CreateDriver *pCreateDriver = (DLLAPI_CreateDriver *)m_CGI_CLinkLib.resolve("CreateCGI_CLINKI");//获取 用于获取类对象的全局函数
        if (pCreateDriver)
        {
            qDebug()<<"Link to Function is OK!"<<m_CGI_CLinkLib.fileName();
            m_pLink = pCreateDriver(this);///< 库中导出类的初始化
            if (m_pLink != NULL)
            {
                connect(m_pLink,SIGNAL(ReadyRead(QByteArray)),this,SLOT(ProcessRespond(QByteArray)));
                connect(m_pLink,SIGNAL(signalConnect(bool)),this,SLOT(slotConnect(bool)));
                return m_pLink->CGI_SetInitLink(nChannelType_,MainPort_);
            }else
            {