Forum: Mikrocontroller und Digitale Elektronik uint16_t als ASCII mit HAL_UART_Transmit


von Walt N. (belayason)


Lesenswert?

Moin Leute,
ich lese Sensordaten die wie folgt definiert sind werden.
1
typedef struct {
2
    uint8_t  sensor_id;
3
    int16_t x;
4
    int16_t y;
5
    int16_t z;
6
    int16_t w;
7
    int16_t estimated_accuracy;
8
} bhy_data_quaternion_t;

In d er Callback funktion nachdem neue Daten eingelesen wurden, versuche 
ich sie wie folgt per Uart an meine serielle Schnittstelle zu senden.
1
HAL_UART_Transmit(&huart2,(uint8_t*)&sensor_data->data_quaternion.x, 16, HAL_MAX_DELAY);

Ankommen tuen aber nur undefinierbare Zeichen die Putty nicht erkennt. 
Ist der typecast nicht richtig oder stimmt vielleicht was anderes nicht. 
Würde mich über tipps freuen !-

von Harry L. (mysth)


Lesenswert?

Du kennst den Unterschied zwischen Binär-Daten und 
human-readable-Strings?

Ganz nebenbei ist deine struct eben NICHT 16 Byte groß

von Walt N. (belayason)


Lesenswert?

2 Byte funktionieren auch nicht

von STK500-Besitzer (Gast)


Lesenswert?

Harry L. schrieb:
> Ganz nebenbei ist deine struct eben NICHT 16 Byte groß
ungepakt dürften es 48 Bytes sein, wenn es sich um einem 32bit-Prozessor 
handelt, und die struct nicht "gepacked" wurde.

Für sowas gibt es dann aber auch "sizeof()"...

Harry L. schrieb:
> Du kennst den Unterschied zwischen Binär-Daten und
> human-readable-Strings?

Dem sollte man kennen.

von Dirk B. (dirkb2)


Lesenswert?

STK500-Besitzer schrieb:
> ungepakt dürften es 48 Bytes sein,

Dafür hätte ich gerne die Erklärung.

Ich komme auf 12 Byte. Auch bei 32-Bit Prozessor.

von Dirk B. (dirkb2)


Lesenswert?

Walt N. schrieb:
> Ankommen tuen aber nur undefinierbare Zeichen

Ist dir klar, warum printf gibt?
Und dann noch mit so vielen Formatspecifieren?

von A. S. (Gast)


Lesenswert?

Schreib Mal was du bei PuTTY erwartest. Für sensorid=1, x=2 ..

von PittyJ (Gast)


Lesenswert?

printf("Size is %ld ", sizeof(bhy_data_quaternion_t));

64 Bit Linux auf X86
12

32 Bit Linux auf Raspi
12

von pegel (Gast)


Lesenswert?

Das lässt sich mit einem "sprintf" ins lesbare formatieren und 
übertragen.

von pegel (Gast)


Lesenswert?

und als Textpuffer übertragen

hätte ich schreiben sollen.

von Dieter (Gast)


Lesenswert?

Matthias S. schrieb:
> Irgendwie ....  nach einer 100mV Quelle fragen?

Vermutlich Physiker, Chemiker, ggf. noch Maschinenbauer und keiner mit 
Bastlererfahrung.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.