我在Qt 5.1.1中的Arduino应用程序有问题
我使用过QextSerialPort然后我想升级到QtSerialPort,它是Qt5.1.1的一部分
该应用正在使用QextSerialPort。 所以我只改变了一些东西,但核心应该是一样的。因此,我想知道为什么我无法连接到Arduino。
当要求errorString()时,答案是'句柄无效'
这是我的代码:
void MainWindow::init_schnittstelle()
{
port = new QSerialPort; //create the port
port->setPortName(schnittstelle); //create the port
port->setBaudRate(QSerialPort::Baud115200);
port->setFlowControl(QSerialPort::NoFlowControl);
port->setParity(QSerialPort::NoParity);
port->setDataBits(QSerialPort::Data8);
port->setStopBits(QSerialPort::OneStop);
port->open(QIODevice::ReadWrite | QIODevice::Unbuffered); //open the port
schnittstelleZustand = port->errorString();
if(!port->isOpen())
{
QMessageBox::warning(this, "Schnittstelle", "Schnittstelle "+schnittstelle+" reagiert nicht. "+schnittstelleZustand);
}
else{
schnittstelleZustand = ("verbunden");
}
}
在变量schnittstelle中给出了地址。我可以连接到arduino每个Arduino软件,所以我确信我的Arduino是在COM10上,但这说我不是......
怎么了?
答案 0 :(得分:0)
http://qt-project.org/doc/qt-5.1/qtserialport/qserialport.html#details
提供访问串行端口的功能。
您可以获取信息 关于使用
QSerialPortInfo
帮助程序的可用串行端口 class,允许枚举中的所有串口 系统。这对于获取串行端口的正确名称很有用 你想用。您可以将辅助类的对象作为一个传递给 分配setPort()
或setPortName()
方法的参数 所需的串行设备。
尝试使用QSerialPortInfo
对象枚举您的端口,然后打印出端口名称。
http://qt-project.org/doc/qt-5.1/qtserialport/qserialportinfo.html#portName
拥有有效的端口名称后,您的无效句柄应该消失。
希望有所帮助。
答案 1 :(得分:0)
我检查了Qt文档,我看到了:
警告:模式必须是QIODevice :: ReadOnly,QIODevice :: WriteOnly或QIODevice :: ReadWrite。其他模式不受支持。
更改您的代码
port->open(QIODevice::ReadWrite | QIODevice::Unbuffered);
到
port->open(QIODevice::ReadWrite);
再试一次。
有文档链接