Beispiel #1
0
// verify checksum on chunk data
// (after unpacking)
//
bool XpkTags::verifyChecksum(XpkChunk *pChunk, CIOBuffer *pOutBuffer)
{
	uint8_t *pBuf = pOutBuffer->GetAt(pOutBuffer->GetCurrentPos() - pChunk->m_UnLen);
	uint16_t checksum = cchecksum((uint32_t*)pBuf, pChunk->m_UnLen);
	if (checksum == pChunk->m_ChunkChecksum)
	{
		return true;
	}
	return false;
}
/*!
 * \brief Rs232DevicePrivate::sendMsg - Richiamata solo privatamente per spedire "fisicamente"
 *                                      i messaggi verso il device
 * \param bufferIn
 */
void Rs232DevicePrivate::sendMsg(const QByteArray &bufferIn)
{
    QByteArray bufferOut;
    quint8 checksum = cchecksum(bufferIn);
    encode(bufferIn, bufferOut);
    bufferOut.append(~checksum);
    if (m_debug)
    {
        QDebug debugBuffer = qDebug();
        debugBuffer << headDebug << "Tx ";
        quint8 var;
        foreach (var, bufferOut) {
            debugBuffer << hex << var;
        }
    }

    write(bufferOut);
    flush();
}