LinuxとWindows XP/7で正常に実行されるQSErialPortを使用して、QT5.0.2を使用して小さなプロジェクトを作成しました。 Linuxでコンパイルすることは、すべてのライブラリがすでに配置されているため、かなり手間がかかりませんでした。 Windowsでコンパイルするには、Windows(クロスコンパイルなし)にインストールされたQTCreator(Visual Studioではなく)を使用しました。
最初に、QTCreatorがQSerialPortを見つけることができるかどうかを確認する必要があります。実際、Windowsの下のQTCreatorの下でコンパイルするように実際に機能するはずです。プログラムを展開するには、使用されているすべてのqtlibrariesが導入されていることを確認する必要があります。最も簡単な方法は、プログラムと同じディレクトリに配置することです。私のプログラムでは、これは次のようになります:
注意する必要があります 使用済みの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"));
}
}