000
01.02.2006, 21:51 Uhr
Antialc
|
Hi
also ich führe zur Zeit gerade ein Projekt in der Schule durch. Dabei habe ich einen Temperatursensor und einen Empfänger an der seriellen Schnittstelle.
Wie ich die Daten auslese weiss ich mitlerweile. Das Problem ist das Auswerten.
Es wird ein fester Rahmen gesendet : <STX> <Typ> <W1> <W2> <W3> <W4> <W5> <ETX> <STX> = 02h = Startzeichen <ETX> = 03h = Endzeichen bei <Typ>, <W1> .. <W5> ist Bit 7 immer gesetzt
0x48 – 0x4f Innensensor V1.2 Adresse 0 bis 7 - W1 (b0-b6) :obere 7 Bit der Temperatur - W2 (b0-b6) :untere 7 Bit der Temperatur - W3 (b0-b6) :Feuchte (binär) - W4 (b0-b6) :obere 7 Bit des Luftdrucks - W5 (b0-b6) :untere 7 Bit des Luftdrucks Aus W1 und W2 ergibt sich ein vorzeichenbehafteter 14-Bit-Binär-Wert Aus W4 und W5 ergibt sich ein 14-Bit-Binär-Wert des Luftdrucks in hPa
Mein Problem ist schon mal, dass wenn ich bei readFile in ein char Array speichern will, ich negative und immer unterschiedliche Werte bekomme. Wenn ich stattdessen ein BYTE Array nehme habe ich immer konstante Werte. Jedenfalls da wo sie konstant sein sollen.
Jetzt bekomme ich z.B. 129 für W1 und 239 für W2 rauß (Umgerechnet wird mit .Format("%d", wert)). Hat Jemand von euch ne Idee wie ich diese beiden Dezimalwerte jetzt in eine sinnvolle Temperatur umrechnen kann? Müssten wohl so etwa 22,0° rauskommen (Die Temperatur hat eine Dezimalstelle). -- Microsoft Visual C++.NET Version 7 |