如何在Qt小部件中的C ++串行端口上发送数据

时间:2018-07-25 15:55:46

标签: c++ qtserialport flashing

我想用qt小部件使三星flasher类似于odin flasher,以用于Flash rom(系统数据包)。

我需要在端口上使用c ++命令将数据刷新到设备以及如何将程序连接到设备以进行此操作。

2 个答案:

答案 0 :(得分:0)

您可以在qtserial library使用库。这是使uart工作的示例代码。

QextSerialPort port;
port.setPortName("portName");
port.setBaudRate(BAUD115200);
port.setFlowControl(FLOW_OFF);
port.setParity(PAR_NONE);
port.setDataBits(DATA_8);
port.setStopBits(STOP_1);
port.open(QIODevice::ReadWrite);

用于从UART读取数据。

char ch;
port.getChar(&ch))

答案 1 :(得分:0)

这里您拥有几乎完整的代码,可以通过串行连接来连接和发送数据:

.h文件:

private slots:

    void connectSerial();
    void sendData();
    void closeSerial();
...

.cpp文件:

#include <QSerialPort>
#include <QSerialPortInfo>

static QSerialPort * serialPort;
...

连接到串行:

void MainWindow::connectSerial()
{
    serialPort = new QSerialPort;
    serialPort->setPortName("com1");
    serialPort->open(QIODevice::ReadWrite);
    serialPort->setBaudRate(QSerialPort::Baud9600);
    serialPort->setDataBits(QSerialPort::Data8);
    serialPort->setParity(QSerialPort::NoParity);
    serialPort->setStopBits(QSerialPort::OneStop);
    serialPort->setFlowControl(QSerialPort::NoFlowControl);
    QObject::connect(serialPort, SIGNAL(readyRead()), this, SLOT(readSerial()));
}
...

读取从设备发送的数据:

void MainWindow::readSerial()
{
    ....
}

将QString数据(12345)发送到串行:

void MainWindow::sendData()
{
    QByteArray payload_buffer;
    QString Data = "12345";
    payload_buffer = payload_buffer.append(Data.toLatin1());
    if(serialPort->isWritable()){
        serialPort->write(payload_buffer,(payload_buffer.size()));
    }
}
...

记住要关闭连接!:

void MainWindow::closeSerial()
{
    serialPort->close();
}
...