Ciao a tutti,
Ho realizzato un applicazione con le qt su linux mint 13 a 64bit...e tutto funziona
A questo punto volevo creare una versione per i 32bit, quindi ho istallato su virtualbox mint 14 @32bit
- Installato qt creator
- Aperto il progetto e compilato
risultato: mi da questi errori
'close' was not declared in this scope
'read' was not declared in this scope
'write' was not declared in this scope
Questo il codice incriminato
codice:
#ifndef DEVICEMANAGER_H
#define DEVICEMANAGER_H
#include <QObject>
#include <QMessageBox>
#include <QString>
#include "datamanager.h"
class DeviceManager : public QObject{
Q_OBJECT
public:
explicit DeviceManager(QWidget *parent = 0, DataManager *d = 0){p = parent; d_manager=d;}
virtual void openPort(const char *port)=0;
~DeviceManager(){}
protected:
DataManager *d_manager;
QWidget *p;
int reading_errors;
public slots:
virtual void t_readData() = 0;
signals:
void update();
void error();
};
#endif // DEVICEMANAGER_H
codice:
#include <stdio.h>
#include <fcntl.h>
#include <termios.h>
#include <errno.h>
#include <devicemanager.h>
#include <vector>
#include <QTime>
#include "exceptions.h"
class SerialPort : public DeviceManager{
Q_OBJECT
public:
explicit SerialPort(QWidget *parent = 0, DataManager *dm = 0);
void openPort(const char *port);
~SerialPort();
std::vector<int> values;
private:
int fd;
int nBlocks;
public slots:
void t_readData();
};
#endif // SERIALPORT_H
Dentro openPort() e t_readData() utilizzo close(), read(), write, tipo:
codice:
SerialPort::~SerialPort(){
if(this->fd != -1); close(this->fd);
}
void SerialPort::t_readData(){
int len = 1;
uchar byte = 0;
int count = 0;
ushort iValue =0;
uchar *pValue = (uchar*)&iValue;
int pIndex = 0;
int vIndex = 0;
double values[N_PARAMS+1];
double max[N_PARAMS+1];
double min[N_PARAMS+1];
QTime t;
if(this->fd == -1) return;
tcflush(this->fd, TCIFLUSH);
len = write(this->fd, "\xAA", sizeof(char));
....
}
Qualcuno sa il motivo di questo ?