qt - 如何用qt向给定的串口写入数据?

标签 qt serial-port qt5

#include <QSerialPort>
#include <QSerialPortInfo>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // Example use QSerialPortInfo
    foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {

        // Example use QSerialPort
        QSerialPort serial;
        serial.setPort(info);
        if (serial.open(QIODevice::ReadWrite))
             //I try to send a string of hexadecimal numbers,seems not right
            //serial.write(QByteArray("0xFF010100FFFFFF"));
            serial.close();
    }

    return a.exec();
}

上面的示例显示了如何打开所有可用的串行端口然后关闭它们。但我想打开一个给定的串口,例如COM6,设置其BaudRate,DataBits,Parity,StopBits,FlowControl,然后发送一串十六进制数字。

最佳答案

这个视频一定会对您有帮助:https://www.youtube.com/watch?v=UD78xyKbrfk

您还可以在这里找到类似的代码:https://cboard.cprogramming.com/cplusplus-programming/169624-read-write-serial-port.html

示例代码:

#include <QSerialPort>

MySerialPort::MySerialPort()
{
    serial = new QSerialPort(this);
    openSerialPort();
}     

void MySerialPort::openSerialPort()
{
    serial->setPortName("COM3");
    serial->setBaudRate(QSerialPort::Baud9600);
    serial->setDataBits(QSerialPort::Data8);
    serial->setParity(QSerialPort::NoParity);
    serial->setStopBits(QSerialPort::OneStop);
    serial->setFlowControl(QSerialPort::NoFlowControl);

    if (serial->open(QIODevice::ReadWrite))
    {     
        //Connected    
    }
    else
    {     
        //Open error
    }
}     

void MySerialPort::writeData(const QByteArray &data)
{
    serial->write(data);
}

关于qt - 如何用qt向给定的串口写入数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43203447/

相关文章:

.NET:从串口读取数据

java - 从 JcomboBox 获取参数

c++ - 阅读 QML 中结构的 C++ QVector

c++ - 实例渲染 OpenGL

qt - 将参数传递给槽

c++ - QMap::freeData() 上的 Qt 核心

android - 在启动时启动 Qt 应用程序 - Android

c++ - Qt5 如何将 qDebug() 语句重定向到 Qt Creator 2.6 控制台

perl - 在 perl 中将原始十六进制转换为可读的十六进制?

qt - QDialog:显示()与打开()