我使用QT5.0.2与QSerialport进行了一个小项目,该项目在Linux和Windows XP/7上运行良好。在Linux上编译它是很无麻烦的,因为所有库都已经到位。要在Windows上编译它,我使用了安装在Windows上的QTCreator(不是Visual Studio)(无交叉编译)。
首先,您必须检查QTCreator是否可以找到QSerialport,然后实际上应该已经在Windows下的QtCreator下进行编译。要部署程序,您必须确保所有使用过的Qtlibraries都已到位。最简单的方法是将其与程序放置在相同的目录中。对于我的程序,这看起来像这样:
+平台(以下两个DLL的目录)
- -qminimal.dll
-qwindows.dll
icudt51.dll
- icuin51.dll
- icuuc51.dll
- libegl.dll
- libglesv2.dll
- qt5core.dll
- qt5gui.dll
- qt5serialport.dll
- qt5widgets.dll
应该注意 使用的DLL匹配您的编译器! 32位与64位 以及匹配二手编译器(Mingw或Visual Studio编译器).
代码段以打开我的串行端口:
void MainWindow::openSerialPort()
{
struct Settings p;
/* Use name of ComPort from Combobox */
p.name = ui->cboComPort->currentText();
p.baudRate = 38400;
p.dataBits = QSerialPort::Data8;
p.parity = QSerialPort::NoParity;
p.stopBits = QSerialPort::OneStop;
p.flowControl = QSerialPort::NoFlowControl;
p.stringBaudRate = "38400";
p.stringDataBits = "8";
p.stringParity = tr("no parity");
p.stringFlowControl = tr("no flow control");
p.stringStopBits = tr("1 stopbit");
serial->setPortName(p.name);
if (serial->open(QIODevice::ReadWrite)) {
if (serial->setBaudRate(p.baudRate)
&& serial->setDataBits(p.dataBits)
&& serial->setParity(p.parity)
&& serial->setStopBits(p.stopBits)
&& serial->setFlowControl(p.flowControl)) {
//console->setEnabled(true);
//console->setLocalEchoEnabled(p.localEchoEnabled);
ui->actionConnect->setEnabled(false);
ui->actionDisconnect->setEnabled(true);
ui->actionConfigure->setEnabled(false);
ui->statusBar->showMessage(tr("Connected to %1 : %2, %3, %4, %5, %6")
.arg(p.name).arg(p.stringBaudRate).arg(p.stringDataBits)
.arg(p.stringStopBits).arg(p.stringParity).arg(p.stringFlowControl));
} else {
serial->close();
QMessageBox::critical(this, tr("Error"), serial->errorString());
ui->statusBar->showMessage(tr("Configure error"));
}
} else {
QMessageBox::critical(this, tr("Error"), serial->errorString());
ui->statusBar->showMessage(tr("Open error"));
}
}