QtSerialPort通信问题

时间:2014-06-30 03:33:24

标签: c++ qt ubuntu-13.10 qtserialport

QSerialPort *serial;
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    serial = new QSerialPort(this);
    serial->setPortName("/dev/ttyUSB0");
    serial->setBaudRate(QSerialPort::Baud9600);
    serial->setStopBits(QSerialPort::OneStop);
    serial->setParity(QSerialPort::NoParity);
    serial->setDataBits(QSerialPort::Data8);
    serial->setFlowControl(QSerialPort::NoFlowControl);
    serial->open(QIODevice::ReadWrite);
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(serialReceived())); 
    connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(serialSent()));
}

MainWindow::~MainWindow()
{
    delete ui;
    serial->close();
}
void MainWindow::serialReceived()
{
    ui->label->setText(serial->readAll());
}
void MainWindow::serialSent()
{
    QByteArray bytes;
    serial->write(bytes);
}

从这段代码我在Ubuntu上运行qt。它显示QIOdevice :: write设备未打开。但我已经将usb插入此端口的串口,如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

1)在ubuntu中访问串口,您必须拥有正确的权限。尝试使用sudo命令运行代码。

2)在打开端口后必须完成串口的各种设置,更改代码如下:

serial->setPortName("/dev/ttyUSB0");
if(serial->open(QIODevice::ReadWrite){
   serial->setBaudRate(QSerialPort::Baud9600);
   serial->setStopBits(QSerialPort::OneStop);
   serial->setParity(QSerialPort::NoParity);
   serial->setDataBits(QSerialPort::Data8);
   serial->setFlowControl(QSerialPort::NoFlowControl);
}

每个设置都可以返回true或false。正确的方法是检查每个人!