我正在尝试使用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微控制器进行通信。
答案 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毫秒。