/*Copyright © 2017 Hasan Yavuz ÖzderyaThis file is part of serialplot.serialplot is free software: you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation, either version 3 of the License, or(at your option) any later version.serialplot is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with serialplot. If not, see <http://www.gnu.org/licenses/>.*/#include "datarecorder.h"#include <QtDebug>DataRecorder::DataRecorder(QObject *parent) :QObject(parent),fileStream(&file){lastNumChannels = 0;disableBuffering = false;windowsLE = false;}bool DataRecorder::startRecording(QString fileName, QString separator, QStringList channelNames){Q_ASSERT(!file.isOpen());_sep = separator;// open filefile.setFileName(fileName);if (!file.open(QIODevice::WriteOnly)){qCritical() << "Opening file " << fileName<< " for recording failed with error: " << file.error();return false;}// write header lineif (!channelNames.isEmpty()){fileStream << channelNames.join(_sep);fileStream << le();lastNumChannels = channelNames.length();}return true;}void DataRecorder::addData(double* data, unsigned length, unsigned numOfChannels){Q_ASSERT(length > 0);Q_ASSERT(length % numOfChannels == 0);if (lastNumChannels != 0 && numOfChannels != lastNumChannels){qWarning() << "Number of channels changed from " << lastNumChannels<< " to " << numOfChannels <<" during recording, CSV file is corrupted but no data will be lost.";}lastNumChannels = numOfChannels;unsigned numOfSamples = length / numOfChannels; // per channelfor (unsigned int i = 0; i < numOfSamples; i++){for (unsigned ci = 0; ci < numOfChannels; ci++){fileStream << data[ci * numOfSamples + i];if (ci != numOfChannels-1) fileStream << _sep;}fileStream << le();}if (disableBuffering) fileStream.flush();}void DataRecorder::stopRecording(){Q_ASSERT(file.isOpen());file.close();lastNumChannels = 0;}const char* DataRecorder::le() const{return windowsLE ? "\r\n" : "\n";}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。