Werte auslesen und in Winkel umrechnen

Dependencies:   mbed

Committer:
Heidl
Date:
Wed Sep 30 16:08:36 2015 +0000
Revision:
0:d1960beb98fe
Werte von Beschleunigungssensor auslesen

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Heidl 0:d1960beb98fe 1
Heidl 0:d1960beb98fe 2 #ifndef SvProtocol_h
Heidl 0:d1960beb98fe 3 #define SvProtocol_h
Heidl 0:d1960beb98fe 4
Heidl 0:d1960beb98fe 5 #include "stdint.h"
Heidl 0:d1960beb98fe 6
Heidl 0:d1960beb98fe 7 namespace mbed {
Heidl 0:d1960beb98fe 8
Heidl 0:d1960beb98fe 9 class IStreamHL {
Heidl 0:d1960beb98fe 10 public:
Heidl 0:d1960beb98fe 11 virtual void PutChar(int aCh) = 0;
Heidl 0:d1960beb98fe 12 virtual int GetChar() = 0;
Heidl 0:d1960beb98fe 13 virtual void Write(void* aData, uint32_t aLenBytes) = 0;
Heidl 0:d1960beb98fe 14 virtual void Read(void* aData, uint32_t aLenBytes) = 0;
Heidl 0:d1960beb98fe 15 };
Heidl 0:d1960beb98fe 16
Heidl 0:d1960beb98fe 17 class SvProtocol {
Heidl 0:d1960beb98fe 18 public:
Heidl 0:d1960beb98fe 19 IStreamHL* _st;
Heidl 0:d1960beb98fe 20 uint8_t acqON;
Heidl 0:d1960beb98fe 21 uint8_t svMessageON;
Heidl 0:d1960beb98fe 22 public:
Heidl 0:d1960beb98fe 23 SvProtocol(IStreamHL* aStrm) {
Heidl 0:d1960beb98fe 24 acqON=0; svMessageON=1;
Heidl 0:d1960beb98fe 25 _st=aStrm;
Heidl 0:d1960beb98fe 26 }
Heidl 0:d1960beb98fe 27
Heidl 0:d1960beb98fe 28 // Check's first for acqOn/Off Command
Heidl 0:d1960beb98fe 29 // ret 0 if acqOn/Off was handled in GetCommand
Heidl 0:d1960beb98fe 30 int GetCommand();
Heidl 0:d1960beb98fe 31
Heidl 0:d1960beb98fe 32 void Puts(char* aCStr); // Terminate with 0
Heidl 0:d1960beb98fe 33
Heidl 0:d1960beb98fe 34 // \r\n is appended automatically
Heidl 0:d1960beb98fe 35 void Printf(const char* format, ...);
Heidl 0:d1960beb98fe 36
Heidl 0:d1960beb98fe 37 void SvPrintf(const char *format, ...);
Heidl 0:d1960beb98fe 38
Heidl 0:d1960beb98fe 39 void WriteSV(int aId, char* aData) {
Heidl 0:d1960beb98fe 40 if( !svMessageON ) return;
Heidl 0:d1960beb98fe 41 _st->PutChar(aId); Puts(aData);
Heidl 0:d1960beb98fe 42 }
Heidl 0:d1960beb98fe 43
Heidl 0:d1960beb98fe 44 void SvMessage(char* aTxt) {
Heidl 0:d1960beb98fe 45 if( !svMessageON ) return;
Heidl 0:d1960beb98fe 46 _st->PutChar(10); Puts(aTxt);
Heidl 0:d1960beb98fe 47 }
Heidl 0:d1960beb98fe 48
Heidl 0:d1960beb98fe 49 void VectHeader(int aId, int aNVals)
Heidl 0:d1960beb98fe 50 { _st->PutChar(aId); _st->PutChar(aNVals); }
Heidl 0:d1960beb98fe 51
Heidl 0:d1960beb98fe 52 void WriteSvI16(int aId, int16_t aData)
Heidl 0:d1960beb98fe 53 { _st->PutChar(aId+10); _st->Write(&aData,2); }
Heidl 0:d1960beb98fe 54
Heidl 0:d1960beb98fe 55 void WriteSvI32(int aId, int32_t aData)
Heidl 0:d1960beb98fe 56 { _st->PutChar(aId); _st->Write(&aData,4); }
Heidl 0:d1960beb98fe 57
Heidl 0:d1960beb98fe 58 void WriteSV(int aId, float aData)
Heidl 0:d1960beb98fe 59 { _st->PutChar(aId+20); _st->Write(&aData,4); }
Heidl 0:d1960beb98fe 60
Heidl 0:d1960beb98fe 61 // float in 3.13 Format
Heidl 0:d1960beb98fe 62 void WriteSV3p13(int aId, float aData);
Heidl 0:d1960beb98fe 63
Heidl 0:d1960beb98fe 64 int16_t ReadI16()
Heidl 0:d1960beb98fe 65 { int16_t ret; _st->Read(&ret,2); return ret; }
Heidl 0:d1960beb98fe 66
Heidl 0:d1960beb98fe 67 int32_t ReadI32()
Heidl 0:d1960beb98fe 68 { int32_t ret; _st->Read(&ret,4); return ret; }
Heidl 0:d1960beb98fe 69
Heidl 0:d1960beb98fe 70 float ReadF()
Heidl 0:d1960beb98fe 71 { float ret; _st->Read(&ret,4); return ret; }
Heidl 0:d1960beb98fe 72 };
Heidl 0:d1960beb98fe 73
Heidl 0:d1960beb98fe 74 } // namespace mbed
Heidl 0:d1960beb98fe 75
Heidl 0:d1960beb98fe 76 // SV-Id Ranges and DataTypes for SvVis3 Visualisation-Tool
Heidl 0:d1960beb98fe 77 //----------------------------------------------------------
Heidl 0:d1960beb98fe 78 // Id = 10 : string
Heidl 0:d1960beb98fe 79 // Id = 1 .. 9 : format 3.13 2 Bytes
Heidl 0:d1960beb98fe 80 // Id = 11 .. 20 : short 2 Bytes
Heidl 0:d1960beb98fe 81 // Id = 21 .. 30 : float 4 Bytes
Heidl 0:d1960beb98fe 82
Heidl 0:d1960beb98fe 83 #endif