QT5问题打开SerialPort

时间:2016-01-10 20:44:11

标签: c++ qt serial-port

我正在尝试使用QT5.5打开SerialPort,但始终无法打开端口。我对端口和串口并不熟悉,但我发现一切都没有任何问题。我正在使用Mac OSX

void MainWindow::init_port()
{
    port = new QSerialPort("com4");     //create port

    port->open(QIODevice::ReadWrite); //open port
    if(!port->isOpen())
    {
        QMessageBox::warning(this, "port error", "Can't open port!");
    }
//    if(serial.open(QIODevice::ReadWrite))
//        serial.write("ok*");
    else
    {
        //error
        qDebug() << port->errorString();
    }

    //set port properties
    port->setBaudRate(QSerialPort::Baud9600); //9600 FOR ARDUINO
    port->setFlowControl(QSerialPort::NoFlowControl);
    port->setParity(QSerialPort::NoParity);
    port->setDataBits(QSerialPort::Data8);
    port->setStopBits(QSerialPort::OneStop);
}

我的总体目标是通过GUI与Arduino微控制器进行通信。

2 个答案:

答案 0 :(得分:0)

最有可能的是,端口的属性需要在 open()之前设置

void MainWindow::init_port()
{
    port = new QSerialPort("com4");     //create port

    //set port properties
    port->setBaudRate(QSerialPort::Baud9600); //9600 FOR ARDUINO
    port->setFlowControl(QSerialPort::NoFlowControl);
    port->setParity(QSerialPort::NoParity);
    port->setDataBits(QSerialPort::Data8);
    port->setStopBits(QSerialPort::OneStop);

    port->open(QIODevice::ReadWrite); //open port
    if(!port->isOpen())
    {
        QMessageBox::warning(this, "port error", "Can't open port!");
    }
    else
    {
        //error
        qDebug() << port->errorString();
    }
} 

如果error()失败,还要检查port->open()open()的返回值。

  

使用OpenMode模式打开串行端口,然后返回true   成功的;否则返回false并设置可以的错误代码   通过调用error()方法获得。

答案 1 :(得分:0)

打开serialPort之后,在检查端口是否打开之前,最好睡250毫秒。