2010-04-23 5 views
1

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

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. Теперь я пытаюсь связать против 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).
Если я строй LIB QSerialDevice с выпуском конфигурацией, а также моей программой, она сразу выходит из строя, но с выходными кодом -1073741819

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

С наилучшими пожеланиями,
Tobias

+0

коды ошибок Windows, проще в шестнадцатеричном - они битовые. Кроме того, эти коды намного проще для Google. Например, почти все разработчики знают наизусть, что такое '0xC0000005'. – MSalters

+2

-1073741515 - 0xc0000135, STATUS_DLL_NOT_FOUND. Просто убедитесь, что отсутствующая DLL присутствует в папке EXE, каким бы она ни была. Просмотрите журнал событий приложения Windows. –

+0

Извините, но где я могу найти этот файл журнала? – Tobias

ответ

0

Tobias,

использование попытка из SVN: SVN Checkout SVN: //scm.fireforge.net/svnroot/qserialdevice

Смежные вопросы