mein Problem: Ich übergebe die Referenz auf einen QByteArray an eine Funktion als Parameter. Darin soll es befüllt werden. Die Daten kommen von einem Aufruf der read-Funktionen der QSerialPort-Klasse. Auch wenn die Länge des QByteArray danach meiner Erwartung entspricht, kann ich mit den enthaltenen Daten nichts anfangen.
Code: Alles auswählen
Library *lib = new Library;
QSerialPort *port = new QSerialPort("COM1");
QByteArray answer;
int err = lib->readAnswer(port, &answer);
if(err < 0) return;
QDatastream out(&answer, QIODevice::ReadOnly);
int data;
out >> data;
Code: Alles auswählen
int Library::readAnswer(QSerialPort *port, QByteArray *answer)
{
int count = port->bytesAvailable();
if(count < 1) return -1;
char *temp = new char[count];
port->read(temp, count);
answer->append(temp, count);
delete [] temp;
return 0;
}
Code: Alles auswählen
int Library::readAnswer(QSerialPort *port, QByteArray *answer)
{
int count = port->bytesAvailable();
char *temp = new char[count];
port->read(temp, count);
QBuffer buffer(data_read);
buffer.open(QIODevice::ReadWrite);
QDataStream out(&buffer);
out.writeRawData(temp, count);
buffer.close();
delete [] temp;
return 0;
}
Grüße,
leif