void Teleinfo::ParseData(const unsigned char *pData, int Len) { int ii = 0; while (ii<Len) { const unsigned char c = pData[ii]; if ((c == 0x0d) || (c == 0x00) || (c == 0x02) || (c == 0x03)) { ii++; continue; } m_buffer[m_bufferpos] = c; if (c == 0x0a || m_bufferpos == sizeof(m_buffer) - 1) { // discard newline, close string, parse line and clear it. if (m_bufferpos > 0) m_buffer[m_bufferpos] = 0; //We check the line only if the checksum is ok if (isCheckSumOk()) MatchLine(); m_bufferpos = 0; } else { m_bufferpos++; } ii++; } }
void CTeleinfoSerial::ParseData(const char *pData, int Len) { int ii = 0; while (ii<Len) { const char c = pData[ii]; if ((c == 0x0d) || (c == 0x00) || (c == 0x02) || (c == 0x03)) { ii++; continue; } m_buffer[m_bufferpos] = c; if (c == 0x0a || m_bufferpos == sizeof(m_buffer) - 1) { // discard newline, close string, parse line and clear it. if (m_bufferpos > 0) m_buffer[m_bufferpos] = 0; //We process the line only if the checksum is ok and user did not request to bypass CRC verification if ((m_bDisableCRC) || isCheckSumOk(teleinfo.CRCmode1)) MatchLine(); m_bufferpos = 0; } else { m_bufferpos++; } ii++; } }