|
- #include "DigitalProcess.h"
-
- DigitalProcess::DigitalProcess(QObject* parent) : IProcess(parent)
- {}
- DigitalProcess::~DigitalProcess()
- {
- if (m_pConstBuffer) {
- delete m_pConstBuffer;
- m_pConstBuffer = nullptr;
- }
- m_file.write(m_fileArray);
- m_file.flush();
- m_file.close();
- }
-
- void DigitalProcess::run()
- {
- unsigned char* m_ReadBuffer = new unsigned char[m_pFrame->m_uiFrameLen];
- unsigned short usReadLen;
- m_bNeedWork = true;
- while (m_bNeedWork) {
- usReadLen = m_pConstBuffer->read(m_ReadBuffer, m_pFrame->m_uiFrameLen);
- if (usReadLen <= 0) {
- QThread::usleep(1);
- continue;
- }
- // 提取通道数据
- m_tempArray = QByteArray((char*)m_ReadBuffer, 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();
- // 剔除无效数据
- if (m_usFillSize != 0) {
- rejectFillData();
- } else {
- m_ableArray = m_validArray;
- m_validArray.clear();
- }
- // 将数据写入文件中
- m_fileArray.append(m_ableArray);
- m_ableArray.clear();
- if (DataAchiveBuffer <= m_fileArray.size()) {
- m_file.write(m_fileArray);
- m_file.flush();
- m_fileArray.clear();
- }
- }
- }
-
- void DigitalProcess::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_validArray.remove(0, m_uiIndex);
- m_uiDataSize = 0;
- m_uiIndex = 0;
- }
|