SerialHandler::readComplete(const boost::system::error_code& error, size_t bytesTransferred) { size_t pos = 0; DebugStream& debug = Options::serialDebug(); if (error) { doClose(error); return; } if (debug) { debug << "SERIAL: Got bytes "; for (size_t i = 0; i < bytesTransferred; i++) { debug << std::setfill('0') << std::showbase << std::hex << std::setw(2) << (unsigned int) m_recvBuffer[i] << " "; } debug << std::endl; } if(m_recvBuffer[0]==0xaa && m_recvBuffer[1]==0x55){ // find start string.... /* only for Data */ for (size_t i = 2; i < (bytesTransferred -4); i++) { unsigned char dataByte = m_recvBuffer[i]; if (i==2){ debug << "new DataMessage "<< std::setfill('0') << std::setw(2) << std::showbase << std::hex << (unsigned int) m_recvBuffer[i] << " "; m_message = new DataMessage(m_db, dataByte); }else{ debug << std::setfill('0') << std::showbase << std::hex << std::setw(2) << (unsigned int) m_recvBuffer[i] << " "; m_message->addData(dataByte); if (m_message->isFull()) { debug << std::endl; m_state = Checksum; } } } // end only data m_message->parse(); delete m_message; m_message = NULL; m_state = Syncing; } readStart(); }