Qt 5.1使用QSerialPort进行串行通信

时间:2015-01-26 20:17:54

标签: c++ qt serial-port x86 ubuntu-14.04

我尝试使用Qt配置与serial-pot的通信,这是我在Qt中的第一个应用程序,根据许多线程,我写了这段代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSerialPort>

QSerialPort serial;

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), 
                                         ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    serial.open(QSerialPort::ReadWrite);
    serial.setPortName("ttyACM0");
    serial.setBaudRate(QSerialPort::Baud9600);
    serial.setDataBits(QSerialPort::Data8);
    serial.setParity(QSerialPort::NoParity);
    serial.setStopBits(QSerialPort::OneStop);
    serial.setFlowControl(QSerialPort::NoFlowControl);
    serial.write("hello");
}

MainWindow::~MainWindow()
{
    delete ui;
    serial.close();
}

编译器告诉我在构建项目时设备没有打开。

2 个答案:

答案 0 :(得分:1)

您是否确定可以打开该设备?如果这是* nix系统,请尝试:

ls -l  /sys/class/tty/ttyUSB* ### if USB device or 
ls -l /sys/class/tty/ttyACM* ### if ACM, whatever that is

你应该得到一个指向设备目录的符号链接,至少你是在linux上做的。

此外,您的代码构建正常,但我想它实际上运行

此外,看起来QSerialPort还有一个名为&#34; isOpen&#34;的方法(继承自QioDevice)。如果设备已经打开,则返回一个布尔值,您应该在打开和关闭之前使用它,以了解设备的实际状态。

答案 1 :(得分:0)

我使用serial.open(QIODevice::ReadWrite)打开设备并运行。谢谢你的帮助。