Доброго времени суток.
Помогите разобраться. Читаю в потоке LPT порт с помощью библиотеки inpout32.dll, результат вывожу в qDebug().
В режиме отладки программа выдает результат 5 раз затем вылетает.
В режиме релиза 2 раза, дальше бред, затем вылет:
Запускается D:\Develop\QT\TLPT-build-desktop\release\TLPT.exe...
255
255
-244
16696
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
QObject::killTimers: timers cannot be stopped from another thread
D:\Develop\QT\TLPT-build-desktop\release\TLPT.exe завершился с кодом 3
lptport.h
#ifndef LPTPORT_H
#define LPTPORT_H
#include <QThread>
#include <QLibrary>
typedef short(*Inp32)(short portAddr);
typedef void(*Out32)(short portAddr, short data);
class LptPort: public QThread
{
Q_OBJECT
public:
LptPort();
volatile bool workStatus;
public slots:
void clickStart();
private:
QLibrary * lib;
Inp32 inp32;
Out32 out32;
void run();
};
#endif // LPTPORT_H
lptport.cpp
#include <QDebug>
#include <lptport.h>
LptPort::LptPort(){
workStatus = false;
lib = new QLibrary("inpout32");
if(lib->load()){
inp32 = (Inp32) lib->resolve("Inp32");
out32 = (Out32) lib->resolve("Out32");
}
}
void LptPort::clickStart()
{
if(workStatus)
workStatus = false;
else if(lib->isLoaded()){
workStatus = true;
start();
}
}
void LptPort::run()
{
while(workStatus){
qDebug() << inp32(0x378);
msleep(1000);
}
}
P.S. Система: Qt Creator 2.0.1, Qt 4.7.0, Win7 32bit