#include "DigitalAfterProc.h" DigitalAfterProc::DigitalAfterProc(QObject* parent) : IAfterProc(parent) {} DigitalAfterProc::~DigitalAfterProc() { m_file.flush(); m_file.close(); } void DigitalAfterProc::run() { m_uiDataSize = m_byteArray.size(); while (m_uiIndex + m_pFrame->m_uiFrameLen <= m_uiDataSize) { m_tempArray = m_byteArray.mid(m_uiIndex, m_pFrame->m_uiFrameLen); // 提取一个数据,添加一个时间 for (auto channel : m_pParam->m_pChannelGroup->m_vecChannel) { m_validArray.append(m_tempArray.at(channel->m_uiAbsolutePos)); } m_tempArray.clear(); m_uiIndex += m_pFrame->m_uiFrameLen; } m_uiDataSize = 0; m_uiIndex = 0; m_byteArray.clear(); if (m_fillArray.size() != 0) { rejectFillData(); } else { m_ableArray = m_validArray; m_validArray.clear(); } // 将数据写入文件中 m_file.write(m_ableArray); m_file.flush(); m_ableArray.clear(); } // 剔除无效填充数据 void DigitalAfterProc::rejectFillData() { m_uiDataSize = m_validArray.size(); m_uiIndex = 0; while (m_uiIndex + m_usFillSize <= m_uiDataSize) { if (m_validArray.at(m_uiIndex) != m_fillArray.at(0)) { m_ableArray.append(m_validArray.at(m_uiIndex)); ++m_uiIndex; } else if (m_validArray.at(m_uiIndex) == m_fillArray.at(0)) { if (m_validArray.mid(m_uiIndex, m_usFillSize) != m_fillArray) { m_ableArray.append(m_validArray.at(m_uiIndex)); ++m_uiIndex; } else { m_uiIndex += m_usFillSize; } } } m_uiDataSize = 0; m_uiIndex = 0; m_validArray.clear(); }