Как использовать QSerialDevice в Qt?

Я пытаюсь использовать QSerialDevice в Qt, чтобы подключиться к моему последовательному порту. Я также пробовал QextSerialPort раньше (который работает в Windows Vista, но, к сожалению, не в Windows XP ..), но мне нужен API, который поддерживает XP, Vista и Win7... Я собрал библиотеку и настроил ее следующим образом:

CONFIG      += dll
CONFIG      += debug

Я использовал текущую версию из SVN (0.2.0 - 2010-04-05) и zip-пакет 0.2.0.
После сборки библиотеки я скопировал ее в свой Qt Libdir (C:\Qt\2009.05\ qt\lib), а также в C:\Windows\system32. Теперь я пытаюсь связать с lib в моем файле проекта:

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 (приложение не удалось правильно инициализировать). Это та же самая ошибка, которую я получил при использовании QextSerialPort под Windows XP (она работала с Windows Vista).
Если я соберу библиотеку QSerialDevice с конфигурацией выпуска, а также свою программу, она немедленно выйдет из строя, но с кодом выхода -1073741819.

Может ли кто-нибудь помочь мне с этой программой или с другим решением для работы последовательного порта с Qt (может быть, другой API или что-то в этом роде?). В противном случае мне придется использовать функции Windows API, что будет означать, что моя программа не будет работать с системами UNIX. .
Если у вас есть решение проблемы с QextSerialPort под WinXP SP3, они тоже приветствуются ;)

С наилучшими пожеланиями,
Тобиас


person Tobias    schedule 23.04.2010    source источник
comment
Коды ошибок Windows проще в шестнадцатеричном формате — это битовые поля. Кроме того, эти коды гораздо легче найти в Google. Например, почти все разработчики знают наизусть, что такое 0xC0000005.   -  person MSalters    schedule 23.04.2010
comment
-1073741515 — это 0xc0000135, STATUS_DLL_NOT_FOUND. Просто убедитесь, что отсутствующая DLL присутствует в папке EXE, какой бы она ни была. Посмотрите в журнале событий приложений Windows.   -  person Hans Passant    schedule 23.04.2010
comment
Извините, но где я могу найти этот лог-файл?   -  person Tobias    schedule 23.04.2010
comment
Вы можете попробовать использовать зависимости (dependencywalker.com), чтобы узнать, какие библиотеки DLL пытается загрузить ваше приложение и какие именно. это не находит. [1]:   -  person Harald Scheirich    schedule 24.04.2010
comment
Вам не следует использовать QSerialDevice, так как над ним сейчас не работают, а также у него было несколько недостатков, которые мы исправили в QtSerialPort, когда проект мигрировал на апстрим Qt.   -  person lpapp    schedule 27.09.2013


Ответы (1)


Тобиас,

попробуйте использовать из SVN: svn checkout svn://scm.fireforge.net/svnroot/qserialdevice

person kuzulis    schedule 24.04.2010