我正在尝试在 Qt 中使用 QSerialDevice 来连接到我的串口。我之前也尝试过 QextSerialPort(它适用于 Windows Vista,但不幸的是不适用于 Windows XP ..),但我需要一个支持 XP、Vista 和 Win7 的 API ......我构建了库并以这种方式配置它:
CONFIG += dll
CONFIG += debug
我确实使用了 SVN (0.2.0 - 2010-04-05) 的当前版本和 0.2.0 zip 包。
在构建库之后,我确实将它复制到了我的 Qt Libdir (C:\Qt\2009.05\qt\lib) 以及 C:\Windows\system32。现在我尝试链接到我的项目文件中的库:
LIBS += -lqserialdevice
我导入所需的标头(abstractserial.h)并像这样使用我自己的 AbstractSerial:
// Initialize
this->serialPort->setDeviceName("COM1");
if (!this->serialPort->open(QIODevice::ReadWrite | QIODevice::Unbuffered))
qWarning() << "Error" << this->serialPort->errorString();
// Configure SerialPort
this->serialPort->setBaudRate(AbstractSerial::BaudRate4800);
this->serialPort->setDataBits(AbstractSerial::DataBits8);
this->serialPort->setFlowControl(AbstractSerial::FlowControlOff);
this->serialPort->setParity(AbstractSerial::ParityNone);
this->serialPort->setStopBits(AbstractSerial::StopBits1);
问题是,如果我运行我的应用程序,它会立即崩溃,退出代码为 -1073741515(应用程序无法正确初始化)。这与我在 Windows XP 下使用 QextSerialPort 时遇到的错误相同(它适用于 Windows Vista)。
如果我使用发布配置和我的程序构建 QSerialDevice 库,它会立即崩溃,但退出代码为 -1073741819
有人可以帮助我使用这个程序或让串行端口与 Qt 一起使用的另一种解决方案(可能是另一个 API 或其他东西?)否则我必须使用 Windows API 函数,这意味着我的程序将无法与 UNIX 系统一起使用。 .
如果你对 WinXP SP3 下 QextSerialPort 的问题有解决方案,也欢迎他们;)
最好的问候,
托拜厄斯