You can not select more than 25 topics
Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
- #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();
- }
|