c++ - 在QT中连接到串口

标签 c++ qt serial-port read-write

我想使用 QSerialPort 连接到微 Controller 。我已将线路串行端口添加到我的 .pro 文件中,在我的源文件中包含 QSerialPort 并运行 qmake。我的代码如下:

    serial.setPortName("COM3");
    serial.setBaudRate(QSerialPort::Baud9600);
    serial.setDataBits(QSerialPort::Data8);
    serial.setParity(QSerialPort::NoParity);
    serial.setStopBits(QSerialPort::OneStop);
    serial.setFlowControl(QSerialPort::NoFlowControl);
    serial.open(QIODevice::ReadWrite);
    serial.write("ok*");

当我运行代码时,我收到一条消息,指出设备未打开,但我已使用 TeraTerm 确认它已打开。我错过了什么?错误信息如下:

QIODevice::write: device not open

最佳答案

首先,您应该检查打开是否返回 true。如果不是,则告诉用户有关错误并调用 errorString()

if(serial.open(QIODevice::ReadWrite))
    serial.write("ok*");
else
{
    //error
    qDebug() << serial.errorString();
}

您尝试在不同的程序中打开一个端口。它在 Windows 中是被禁止的。所以你不能用这个。在你的video作者在 Qt 中打开 com3 但在 teraterm 中打开 com4,它们是不同的端口,所以你应该使用相同的东西,几个程序没有一个端口。

关注本期节目:com0com

关于c++ - 在QT中连接到串口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26994742/

相关文章:

java - 从 Arduino 读取串行数据

linux - 连接到 STN1110

C++ 错误 : no matching function call from pointer to pointer reference using Qt and QVariant

c++ - 无法解释不明确的模板特化

c++ - 如何比较C++和MATLAB之间的结果?

c++ - Qt找不到平台插件cocoa

c++ - 类中的链表,应通过类中的函数调用

c++ - QDrag 在拖动时被破坏

android - AndroidManifest.xml中的 "android.app.background_running"是什么意思?

linux - 在 Linux 中锁定串行端口和其他设备的最佳做法是什么?