SerialMonitor::SerialMonitor(const QString& portName, QWidget *parent) :
    QFrame(parent),
    mPortName(portName)
{
    setupUi(this);

    sendHexEdit = new QHexEdit();
    gridLayoutSend->addWidget(sendHexEdit, 1, 0, 1, 1);

    recvHexEdit = new QHexEdit();
    gridLayoutRecv->addWidget(recvHexEdit, 1, 0, 1, 1);

    recvHexEdit->setAddressArea(false);
    recvHexEdit->setOverwriteMode(false);
    recvHexEdit->setReadOnly(true);

    sendHexEdit->setAddressArea(false);
    sendHexEdit->setAsciiArea(false);
    sendHexEdit->setOverwriteMode(false);

    settingMenu = 0;

    serialPort = new QextSerialPort(portName, QextSerialPort::EventDriven);

    connect(btnConnect, SIGNAL(clicked()), this, SLOT(openDevice()));

    connect(serialPort, SIGNAL(readyRead()), this, SLOT(onReadyRead()));

    connect(btnSendData, SIGNAL(clicked()), this, SLOT(wirteData()));

    settingMapper = new QSignalMapper();

    connect(settingMapper, SIGNAL(mapped(QString)), this, SLOT(updateSetting(QString)));

    connect(btnSendFile, SIGNAL(clicked()),this, SLOT(sendFile()));

    connect(btnClearRecv, SIGNAL(clicked()), textRecv, SLOT(clear()));

    connect(btnClearRecv, SIGNAL(clicked()), recvHexEdit, SLOT(clear()));

    connect(btnRecvTextMode, SIGNAL(clicked()), this, SLOT(switchRecvTextMode()));

    connect(btnSendTextMode, SIGNAL(clicked()), this, SLOT(switchSendTextMode()));

    recvTextModeHex = false;

    sendTextModeHex = false;

    updateUI();

    updateTextMode();
}
Beispiel #2
0
bool QAsioTcpSocket::writeDataed(std::size_t bytes_transferred)
{
    writeMutex.lock();
    if (static_cast<std::size_t>(writeQueue.head().size()) == bytes_transferred){
        writeQueue.dequeue();
        if (!writeQueue.isEmpty()) {
            wirteData(writeQueue.head().data(),static_cast<std::size_t>(writeQueue.head().size()));
        }
        writeMutex.unlock();
        return true;
    } else {
        writeMutex.unlock();
        return false;
    }
}
Beispiel #3
0
bool QAsioTcpSocket::write(const QByteArray &data)
{
    if (state() != ConnectedState)
        return false;
    writeMutex.lock();
    if (!data.isEmpty())
        writeQueue.append(data);
    if (writeQueue.isEmpty()) {
        writeMutex.unlock();
        return false;
    }
    if (writeQueue.size() == 1) {
        wirteData(writeQueue.head().data(),static_cast<std::size_t>(writeQueue.head().size()));
    }
    writeMutex.unlock();
    return true;
}
void SerialMonitor::wirteData()
{
    if(serialPort->isOpen()){
        if(sendTextModeHex){
            serialPort->write(sendHexEdit->data());
        }else{
            QString text = textSend->toPlainText();
            serialPort->write(text.toAscii());
        }

        if(spinBox->value() != 0){
            spinBox->setValue(spinBox->value() - 1);
        }
        if(spinBox->value() != 0){
            QTimer::singleShot(1000, this, SLOT(wirteData()));
        }
    }
}