/*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 "dataformatpanel.h"#include "ui_dataformatpanel.h"#include <QRadioButton>#include <QtEndian>#include <QMap>#include <QtDebug>#include "utils.h"#include "setting_defines.h"#include "floatswap.h"DataFormatPanel::DataFormatPanel(QSerialPort* port,ChannelManager* channelMan,DataRecorder* recorder,QWidget *parent) :QWidget(parent),ui(new Ui::DataFormatPanel),bsReader(port, channelMan, recorder, this),asciiReader(port, channelMan, recorder, this),framedReader(port, channelMan, recorder, this),demoReader(port, channelMan, recorder, this){ui->setupUi(this);serialPort = port;_channelMan = channelMan;paused = false;demoEnabled = false;// initalize default readercurrentReader = &bsReader;bsReader.enable();ui->rbBinary->setChecked(true);ui->horizontalLayout->addWidget(bsReader.settingsWidget(), 1);connect(&bsReader, SIGNAL(numOfChannelsChanged(unsigned)),this, SIGNAL(numOfChannelsChanged(unsigned)));connect(&bsReader, SIGNAL(samplesPerSecondChanged(unsigned)),this, SIGNAL(samplesPerSecondChanged(unsigned)));// initalize reader selection buttonsconnect(ui->rbBinary, &QRadioButton::toggled, [this](bool checked){if (checked) selectReader(&bsReader);});connect(ui->rbAscii, &QRadioButton::toggled, [this](bool checked){if (checked) selectReader(&asciiReader);});connect(ui->rbFramed, &QRadioButton::toggled, [this](bool checked){if (checked) selectReader(&framedReader);});// re-purpose numofchannels settings from actual reader settings to demo readerconnect(this, &DataFormatPanel::numOfChannelsChanged,&demoReader, &DemoReader::setNumOfChannels);}DataFormatPanel::~DataFormatPanel(){delete ui;}unsigned DataFormatPanel::numOfChannels(){return currentReader->numOfChannels();}void DataFormatPanel::pause(bool enabled){paused = enabled;currentReader->pause(enabled);demoReader.pause(enabled);}void DataFormatPanel::enableDemo(bool enabled){if (enabled){demoReader.enable();demoReader.recording = currentReader->recording;connect(&demoReader, &DemoReader::samplesPerSecondChanged,this, &DataFormatPanel::samplesPerSecondChanged);}else{demoReader.enable(false);disconnect(&demoReader, 0, this, 0);}demoEnabled = enabled;}void DataFormatPanel::startRecording(){currentReader->recording = true;if (demoEnabled) demoReader.recording = true;}void DataFormatPanel::stopRecording(){currentReader->recording = false;if (demoEnabled) demoReader.recording = false;}void DataFormatPanel::selectReader(AbstractReader* reader){currentReader->enable(false);reader->enable();// re-connect signalsdisconnect(currentReader, 0, this, 0);connect(reader, SIGNAL(numOfChannelsChanged(unsigned)),this, SIGNAL(numOfChannelsChanged(unsigned)));connect(reader, SIGNAL(samplesPerSecondChanged(unsigned)),this, SIGNAL(samplesPerSecondChanged(unsigned)));// switch the settings widgetui->horizontalLayout->removeWidget(currentReader->settingsWidget());currentReader->settingsWidget()->hide();ui->horizontalLayout->addWidget(reader->settingsWidget(), 1);reader->settingsWidget()->show();// notify if number of channels is differentif (currentReader->numOfChannels() != reader->numOfChannels()){emit numOfChannelsChanged(reader->numOfChannels());}reader->pause(paused);reader->recording = currentReader->recording;currentReader = reader;}void DataFormatPanel::saveSettings(QSettings* settings){settings->beginGroup(SettingGroup_DataFormat);// save selected formatQString format;if (currentReader == &bsReader){format = "binary";}else if (currentReader == &asciiReader){format = "ascii";}else // framed reader{format = "custom";}settings->setValue(SG_DataFormat_Format, format);settings->endGroup();// save reader settingsbsReader.saveSettings(settings);asciiReader.saveSettings(settings);framedReader.saveSettings(settings);}void DataFormatPanel::loadSettings(QSettings* settings){settings->beginGroup(SettingGroup_DataFormat);// load selected formatQString format = settings->value(SG_DataFormat_Format, QString()).toString();if (format == "binary"){selectReader(&bsReader);ui->rbBinary->setChecked(true);}else if (format == "ascii"){selectReader(&asciiReader);ui->rbAscii->setChecked(true);}else if (format == "custom"){selectReader(&framedReader);ui->rbFramed->setChecked(true);} // else current selection stayssettings->endGroup();// load reader settingsbsReader.loadSettings(settings);asciiReader.loadSettings(settings);framedReader.loadSettings(settings);}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。