Files
        @ b1ac644087e5
    
        
              Branch filter: 
        
    Location: tempo-plotter/commandwidget.cpp - annotation
        
            
            b1ac644087e5
            2.5 KiB
            text/x-c++hdr
        
        
    
    when switching from hex to ascii, patch hex string in case of missing nibble
    a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec e7af61f7cb69 e7af61f7cb69 e7af61f7cb69 fc3cbb071069 e7af61f7cb69 a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec e7af61f7cb69 a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec a90832d0c0ec ccdd0ce1b556 ccdd0ce1b556 ccdd0ce1b556 ccdd0ce1b556 ccdd0ce1b556 ccdd0ce1b556 ccdd0ce1b556 ccdd0ce1b556 ccdd0ce1b556 9add38e39c0a 9add38e39c0a 9add38e39c0a 9add38e39c0a 9add38e39c0a 9add38e39c0a ccdd0ce1b556 ccdd0ce1b556 ccdd0ce1b556 ccdd0ce1b556 ccdd0ce1b556 ccdd0ce1b556 ccdd0ce1b556 9add38e39c0a ccdd0ce1b556 ccdd0ce1b556 ccdd0ce1b556 ccdd0ce1b556 9add38e39c0a 9add38e39c0a ccdd0ce1b556 a90832d0c0ec e7af61f7cb69 e7af61f7cb69 e7af61f7cb69 fc3cbb071069 e7af61f7cb69 ccdd0ce1b556 ccdd0ce1b556 ccdd0ce1b556 ccdd0ce1b556 ccdd0ce1b556  | /*
  Copyright © 2015 Hasan Yavuz Özderya
  This file is part of serialplot.
  serialplot is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the 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 of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
  You should have received a copy of the GNU General Public License
  along with serialplot.  If not, see <http://www.gnu.org/licenses/>.
*/
#include "commandwidget.h"
#include "ui_commandwidget.h"
#include <QRegExp>
#include <QRegExpValidator>
#include <QtDebug>
CommandWidget::CommandWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::CommandWidget)
{
    ui->setupUi(this);
    connect(ui->pbDelete, &QPushButton::clicked, this, &CommandWidget::onDeleteClicked);
    connect(ui->pbSend, &QPushButton::clicked, this, &CommandWidget::onSendClicked);
    connect(ui->pbASCII, &QPushButton::toggled, this, &CommandWidget::onASCIIToggled);
}
CommandWidget::~CommandWidget()
{
    delete ui;
}
void CommandWidget::onDeleteClicked()
{
    this->deleteLater();
}
void CommandWidget::onSendClicked()
{
    auto command = ui->leCommand->text();
    if (command.isEmpty())
    {
        qWarning() << "Enter a command to send!";
        ui->leCommand->setFocus(Qt::OtherFocusReason);
        return;
    }
    if (isASCIIMode())
    {
        qDebug() << "Sending:" << command;
        emit sendCommand(command.toLatin1());
    }
    else // hex mode
    {
        command = command.remove(' ');
        // check if nibbles are missing
        if (command.size() % 2 == 1)
        {
            qWarning() << "HEX command is missing a nibble at the end!";
            ui->leCommand->setFocus(Qt::OtherFocusReason);
            // highlight the byte that is missing a nibble (last byte obviously)
            int textSize = ui->leCommand->text().size();
            ui->leCommand->setSelection(textSize-1, textSize);
            return;
        }
        qDebug() << "Sending HEX:" << command;
        emit sendCommand(QByteArray::fromHex(command.toLatin1()));
    }
}
void CommandWidget::onASCIIToggled(bool checked)
{
    ui->leCommand->setMode(checked);
}
bool CommandWidget::isASCIIMode()
{
    return ui->pbASCII->isChecked();
}
 |