Daten zwischen zwei Sourcefiles austauschen ( Anfängerfrage)

Gast #2130856
Lesenswert?

Hallo Leute

Ich habe ein kleines Problem bei meinem Programm.
Ich habe zwei Programmteile eins in der uart.c und uart.h und eins in 
der mainwindow.c und mainwindow.h.

Ich habe eine struct in der mainwindow.h definiert mit dem ich die Daten 
anzeigen lasse.
Die Uart.c empfängt nun die Daten vom RS232 Anschluss und soll ihn in 
dieselbe Struct schreiben. wie definier ich die struct denn jetzt nun, 
dass ich sie in der uart.c und in der mainwindow.c benutzen kann ?

mfg Jan
Angehängte Dateien:
Gast #2130883
Lesenswert?

Jan schrieb:
> Hallo Leute
>
> Ich habe ein kleines Problem bei meinem Programm.
> Ich habe zwei Programmteile eins in der uart.c und uart.h und eins in
> der mainwindow.c und mainwindow.h.

Uart.c, uart.h? Habe ich nicht gesehen... ;-)

> Ich habe eine struct in der mainwindow.h definiert mit dem ich die Daten
> anzeigen lasse.
> Die Uart.c empfängt nun die Daten vom RS232 Anschluss und soll ihn in
> dieselbe Struct schreiben.

Schlechte Idee. Wieso sollte der Code für die serielle Schnittstelle 
irgendwas von der (vielleicht garnicht vorhandenen) Anzeige wissen?

> wie definier ich die struct denn jetzt nun,
> dass ich sie in der uart.c und in der mainwindow.c benutzen kann ?

In einem dritten *.h - aber wie gesagt, ganz schlechte Idee.

Besser ist es so: von der seriellen Schnittstelle bekommst Du ein Array 
von Bytes (genauer gesagt Octets). In mainwindow.c pflückst Du dann die 
Bytes auseinander (unter Beachtung Little, Big, Sonstige Endian, 
Representation von Gleitkommazahlen, Representation von Integern, etc. 
pp.) und stopfst die in Dein struct. Danach kannst Du mit dem struct 
fröhlich weiterarbeiten.

Weil: Serielle Schnittstelle weiss dann nix von irgendeiner Anzeige, und 
Du behandelst den Fall dass Endianness oder Datenrepresentation an den 
beiden Enden der seriellen Leitung verschieden sind - was nicht so 
selten vorkommt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren