2010-04-23 6 views
1

J'essaye d'employer QSerialDevice dans Qt pour obtenir une connexion à mon port série. J'ai également essayé QextSerialPort avant (qui fonctionne sur Windows Vista mais malheureusement pas sur Windows XP ..) mais j'ai besoin d'une API qui supporte XP, Vista et Win7 ... Je construis la bibliothèque et la configure de cette façon:Comment utiliser QSerialDevice dans Qt?

CONFIG  += dll 
CONFIG  += debug 

J'ai utilisé la version actuelle de SVN (0.2.0 - 2010-04-05) et le package zip 0.2.0.
Après avoir construit la bibliothèque, je l'ai copiée dans mon Qd Libdir (C: \ Qt \ 2009.05 \ qt \ lib) et aussi dans C: \ Windows \ system32. Maintenant, je tente de se lier à la lib dans mon dossier de projet:

LIBS += -lqserialdevice 

j'importer l'en-tête nécessaire (de abstractserial.h) et utiliser mon propre AbstractSerial comme ceci:

// 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); 

Le problème est que si je cours mon application, il se bloque immédiatement avec le code de sortie -1073741515 (l'application n'a pas réussi à s'initialiser correctement). C'est la même erreur que j'ai eu en utilisant QextSerialPort sous Windows XP (cela a fonctionné avec Windows Vista).
Si je construis le QSerialDevice lib avec config de libération et aussi mon programme, il se bloque immédiatement, mais avec le code de sortie -1073741819

quelqu'un peut me aider avec ce programme ou avec une autre solution d'obtenir un port série pour travailler avec Qt (peut-être une autre API ou quelque chose?) Sinon, je dois utiliser les fonctions API de Windows ce qui signifierait que mon programme ne fonctionnera pas avec les systèmes UNIX ..
Si vous avez une solution au problème avec QextSerialPort sous WinXP SP3, ils sont également les bienvenus ;)

Cordialement,
Tobias

+0

codes d'erreur de Windows sont plus faciles dans l'hexagone - ils sont bitfields. En outre, ces codes sont beaucoup plus faciles googlable. Par exemple, presque tous les développeurs savent par cœur ce qu'est '0xC0000005'. – MSalters

+2

-1073741515 est 0xc0000135, STATUS_DLL_NOT_FOUND. Assurez-vous simplement que la DLL manquante est présente dans le dossier EXE, quel qu'il soit. Regardez dans le journal des événements de l'application Windows. –

+0

Désolé, mais où puis-je trouver ce fichier journal? – Tobias

Répondre

0

Tobias,

utilisation try de SVN: svn checkout svn: //scm.fireforge.net/svnroot/qserialdevice

Questions connexes