warum ich das machen möchte? Ich möchte nen float über die RS232 schicken,die kann aber nur Byteweise senden und daran kann ich nichts ändern.
Bin echt am verzweilfen. Bekomme den Compilerfehler Can't convert Doube* to char*, Muss aber auch gestehen das ich bis jetzt mehr mit ANSI C zutuhen hatte. und da klappts Ist das nen C != C++ Problem ? Oder könnte das auch ein meinen Compilerflags liegen ?
Hi, sowas erzeugt immer ne Warnung/Fehler - implizit kann er da nix casten.
Was du machen willst ist folgendes: Du willst den Speicherbereich (die 4 Bytes) vom float in ein Socket schieben:
C++:
float a = 4.4323f; send(sock, (char*)&a, sizeof(float), 0);
fertig, da musste nicht erst rumkopieren. Was im Speicher an irgendeiner Stelle steht interessiert ja nicht - du kopierst so sozusagen 4 Bytes irgendwo aus dem Speicher (wo eben dein float steht). Was da dahintersteht interessiert dem Compiler nicht. Man muss ihm halt nur sagen "betrachte die Werte hinter der Adresse als char" - mit dem expliziten Cast. -- class God : public ChuckNorris { };
Hab mal auf die schnelle was über sockets gelesen und was ich mitbekommen habe, taugt das nicht für mein Porblem . Ich muss expilizit die 4 float Bytes in ein Char Array kopieren. Eigentlich Sende ich ein Packet von 20 Bytes über die RS232. Dazu baue ich mir ein 20 Byte CharArray kopiere dort meine Steuerbefehle und 4 float Byte rein ,das schicke ich dann an die RS232.
Vielleicht sollte ich mal kurz erzählen was ich bauen möchte. Damit man mein Problem besser versteht. Also Ich hab hier nen Microcontroller und ich möchte eine GUI haben mit der ich dem Microcontroller Werte übermitteln und vom Microcontroller Werte abfragen kann. Auf der Controllerseite bin ich ziehmlich eingeschrängt z.B kann er nur Byteweise auf der RS232 senden und empfangen. Deswegen muss ich alles in Bytes zerlegen rübersenden und auf der anderen Seite wieder zusammen bauen. Den Controller programmier ich in C. und für den hab ich auch schon alles fertig. Nächste Frage die man sich stellen könnte warum Der Kram in C++ auf der PC Seite? Weil ich die GUI in QT4 baue.
So jetzt noch kurz zu Fehlermeldung. Der GCC für den Microcontroller spuckt mir nur ein Warning aus. Aber der MinGW meint das es ein ERROR sei wenn ich ein doublezeiger auf nen charzeiger setze.
Was traugt denn da nicht ? Du kriegst doch über den Cast alles hin, nimm dir die Adresse von der Floatvariable und caste sie in einen Char*. Danach schiebst du die passende Anzahl von Bytes über die Schnittstelle und setzt sie auf der anderen Seite wieder zusammen.
char ist ein integraler Typ - das geht net so ohne weiteres nach double Suchst du vl. den Shift Operator? Den hab ich bei unserem I/O immer verwendet um Werte die größer als die Bandbreite sind asynchron zu senden. --