QT Funktionen für endian Probleme
-
Hallo,
ich vermute ich habe big/little endian Probleme zwischen zwei Rechner, welche sich via TCP/IP unterhalten.
Auf der einen Seite ist ein Embedded Linux (ARM Processor) und auf der anderen Seite ein PC Ubuntu Linux (386).
Bei der Übertragung kommen auf dem PC nur blödsinn an.
Auf dem Embeeded PC kommt es richtig an, welche Funktionen bietet mir
QT, wenn ich die Daten mittcpSocket->write(QString("BVOLT;1;").toUtf8());
raussende.
Wie wäre es mit der Zeile:
TCPIPBuffer =QString::fromUtf8( tcpSocket->readLine( 0 ) );
Gruss
-
Hallo Ritchie,
die Klasse QSysInfo gibt dir zumindestens schon mal Auskunft welche Endianess du hast. Ansonsten würde ich den Socket über einen QDataStream füttern - den bei dem kannst du die Endianess wählen. Alternativ kannst du natürlich auch deine Daten in die richtige Endianess konvertieren über htonl oder ntohl. Netzwerkübertragungen sind normalerweise Big Endian.
m.
-
Hallo muggelmaster,
danke für die Info. Ich werde wohl auf beiden Seiten eine Anpassung machen müssen. Mit QDataStream hatte ich es auch mal probiert, hatte aber den gleichen Effekt. Hier liegt es wohl daran, das ich die falsche Endianess auf dem Partnerrechner programmiert habe.
Erstmal viele für die Infos.
Gruss
-
Es war nicht die Endianess.
Ein Pointerfehler in der Senderoutine.
Gruss