Werte auslesen und in Winkel umrechnen
Fork of Beschleunigungssensor by
Serial_HL.cpp@0:d1960beb98fe, 2015-09-30 (annotated)
- Committer:
- Heidl
- Date:
- Wed Sep 30 16:08:36 2015 +0000
- Revision:
- 0:d1960beb98fe
Werte von Beschleunigungssensor auslesen
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Heidl | 0:d1960beb98fe | 1 | |
Heidl | 0:d1960beb98fe | 2 | #include "Serial_HL.h" |
Heidl | 0:d1960beb98fe | 3 | #include <stdarg.h> |
Heidl | 0:d1960beb98fe | 4 | #include <stdio.h> |
Heidl | 0:d1960beb98fe | 5 | |
Heidl | 0:d1960beb98fe | 6 | namespace mbed { |
Heidl | 0:d1960beb98fe | 7 | |
Heidl | 0:d1960beb98fe | 8 | SerialBLK::SerialBLK(PinName tx, PinName rx) { |
Heidl | 0:d1960beb98fe | 9 | serial_init(&_serial, tx, rx); |
Heidl | 0:d1960beb98fe | 10 | _baud = 9600; |
Heidl | 0:d1960beb98fe | 11 | serial_irq_handler(&_serial, SerialBLK::_irq_handler, (uint32_t)this); |
Heidl | 0:d1960beb98fe | 12 | } |
Heidl | 0:d1960beb98fe | 13 | |
Heidl | 0:d1960beb98fe | 14 | void SerialBLK::baud(int baudrate) { |
Heidl | 0:d1960beb98fe | 15 | serial_baud(&_serial, baudrate); |
Heidl | 0:d1960beb98fe | 16 | _baud = baudrate; |
Heidl | 0:d1960beb98fe | 17 | } |
Heidl | 0:d1960beb98fe | 18 | |
Heidl | 0:d1960beb98fe | 19 | void SerialBLK::format(int bits, Parity parity, int stop_bits) { |
Heidl | 0:d1960beb98fe | 20 | serial_format(&_serial, bits, (SerialParity)parity, stop_bits); |
Heidl | 0:d1960beb98fe | 21 | } |
Heidl | 0:d1960beb98fe | 22 | |
Heidl | 0:d1960beb98fe | 23 | int SerialBLK::readable() { |
Heidl | 0:d1960beb98fe | 24 | return serial_readable(&_serial); |
Heidl | 0:d1960beb98fe | 25 | } |
Heidl | 0:d1960beb98fe | 26 | |
Heidl | 0:d1960beb98fe | 27 | int SerialBLK::writeable() { |
Heidl | 0:d1960beb98fe | 28 | return serial_writable(&_serial); |
Heidl | 0:d1960beb98fe | 29 | } |
Heidl | 0:d1960beb98fe | 30 | |
Heidl | 0:d1960beb98fe | 31 | void SerialBLK::attach(void (*fptr)(void), IrqType type) { |
Heidl | 0:d1960beb98fe | 32 | if (fptr) { |
Heidl | 0:d1960beb98fe | 33 | _irq[type].attach(fptr); |
Heidl | 0:d1960beb98fe | 34 | serial_irq_set(&_serial, (SerialIrq)type, 1); |
Heidl | 0:d1960beb98fe | 35 | } else { |
Heidl | 0:d1960beb98fe | 36 | serial_irq_set(&_serial, (SerialIrq)type, 0); |
Heidl | 0:d1960beb98fe | 37 | } |
Heidl | 0:d1960beb98fe | 38 | } |
Heidl | 0:d1960beb98fe | 39 | |
Heidl | 0:d1960beb98fe | 40 | void SerialBLK::_irq_handler(uint32_t id, SerialIrq irq_type) { |
Heidl | 0:d1960beb98fe | 41 | SerialBLK *obj = (SerialBLK*)id; |
Heidl | 0:d1960beb98fe | 42 | obj->_irq[irq_type].call(); |
Heidl | 0:d1960beb98fe | 43 | } |
Heidl | 0:d1960beb98fe | 44 | |
Heidl | 0:d1960beb98fe | 45 | int SerialBLK::GetChar() { |
Heidl | 0:d1960beb98fe | 46 | return serial_getc(&_serial); |
Heidl | 0:d1960beb98fe | 47 | } |
Heidl | 0:d1960beb98fe | 48 | |
Heidl | 0:d1960beb98fe | 49 | void SerialBLK::PutChar(int aCh) { |
Heidl | 0:d1960beb98fe | 50 | serial_putc(&_serial, aCh); |
Heidl | 0:d1960beb98fe | 51 | } |
Heidl | 0:d1960beb98fe | 52 | |
Heidl | 0:d1960beb98fe | 53 | void SerialBLK::Write(void* aData, uint32_t aLenBytes) |
Heidl | 0:d1960beb98fe | 54 | { |
Heidl | 0:d1960beb98fe | 55 | uint8_t* ptr = (uint8_t*)aData; |
Heidl | 0:d1960beb98fe | 56 | for(int i=0; i<aLenBytes; i++) { |
Heidl | 0:d1960beb98fe | 57 | this->PutChar(*ptr); ptr++; |
Heidl | 0:d1960beb98fe | 58 | } |
Heidl | 0:d1960beb98fe | 59 | } |
Heidl | 0:d1960beb98fe | 60 | |
Heidl | 0:d1960beb98fe | 61 | void SerialBLK::Read(void* aData, uint32_t aLenBytes) |
Heidl | 0:d1960beb98fe | 62 | { |
Heidl | 0:d1960beb98fe | 63 | uint8_t* ptr = (uint8_t*)aData; |
Heidl | 0:d1960beb98fe | 64 | for(int i=0; i<aLenBytes; i++) { |
Heidl | 0:d1960beb98fe | 65 | *ptr=this->GetChar(); ptr++; |
Heidl | 0:d1960beb98fe | 66 | } |
Heidl | 0:d1960beb98fe | 67 | } |
Heidl | 0:d1960beb98fe | 68 | |
Heidl | 0:d1960beb98fe | 69 | |
Heidl | 0:d1960beb98fe | 70 | |
Heidl | 0:d1960beb98fe | 71 | |
Heidl | 0:d1960beb98fe | 72 | void SvProtocol::Puts(char* aCStr) |
Heidl | 0:d1960beb98fe | 73 | { |
Heidl | 0:d1960beb98fe | 74 | while( *aCStr != '\0' ) |
Heidl | 0:d1960beb98fe | 75 | { |
Heidl | 0:d1960beb98fe | 76 | if( *aCStr=='\n' ) |
Heidl | 0:d1960beb98fe | 77 | _st->PutChar('\r'); |
Heidl | 0:d1960beb98fe | 78 | _st->PutChar(*aCStr); |
Heidl | 0:d1960beb98fe | 79 | aCStr++; |
Heidl | 0:d1960beb98fe | 80 | } |
Heidl | 0:d1960beb98fe | 81 | _st->PutChar(0); // terminate with 0 |
Heidl | 0:d1960beb98fe | 82 | } |
Heidl | 0:d1960beb98fe | 83 | |
Heidl | 0:d1960beb98fe | 84 | static char sBuffer[50]; |
Heidl | 0:d1960beb98fe | 85 | |
Heidl | 0:d1960beb98fe | 86 | void SvProtocol::Printf(const char *format, ...) |
Heidl | 0:d1960beb98fe | 87 | { |
Heidl | 0:d1960beb98fe | 88 | va_list vArgs; |
Heidl | 0:d1960beb98fe | 89 | va_start(vArgs, format); |
Heidl | 0:d1960beb98fe | 90 | vsprintf(sBuffer, (char const *)format, vArgs); |
Heidl | 0:d1960beb98fe | 91 | va_end(vArgs); |
Heidl | 0:d1960beb98fe | 92 | Puts(sBuffer); |
Heidl | 0:d1960beb98fe | 93 | } |
Heidl | 0:d1960beb98fe | 94 | |
Heidl | 0:d1960beb98fe | 95 | void SvProtocol::SvPrintf(const char *format, ...) |
Heidl | 0:d1960beb98fe | 96 | { |
Heidl | 0:d1960beb98fe | 97 | va_list vArgs; |
Heidl | 0:d1960beb98fe | 98 | va_start(vArgs, format); |
Heidl | 0:d1960beb98fe | 99 | vsprintf(sBuffer, (char const *)format, vArgs); |
Heidl | 0:d1960beb98fe | 100 | va_end(vArgs); |
Heidl | 0:d1960beb98fe | 101 | if( !svMessageON ) return; |
Heidl | 0:d1960beb98fe | 102 | _st->PutChar(10); |
Heidl | 0:d1960beb98fe | 103 | Puts(sBuffer); |
Heidl | 0:d1960beb98fe | 104 | } |
Heidl | 0:d1960beb98fe | 105 | |
Heidl | 0:d1960beb98fe | 106 | void SvProtocol::WriteSV3p13(int aId, float aData) { |
Heidl | 0:d1960beb98fe | 107 | // int16_t val = To3p13(aData); |
Heidl | 0:d1960beb98fe | 108 | // PutChar(aId); Write(&val,2); |
Heidl | 0:d1960beb98fe | 109 | } |
Heidl | 0:d1960beb98fe | 110 | |
Heidl | 0:d1960beb98fe | 111 | int SvProtocol::GetCommand() |
Heidl | 0:d1960beb98fe | 112 | { |
Heidl | 0:d1960beb98fe | 113 | uint8_t cmd = _st->GetChar(); |
Heidl | 0:d1960beb98fe | 114 | if( cmd==1 ) |
Heidl | 0:d1960beb98fe | 115 | { |
Heidl | 0:d1960beb98fe | 116 | this->acqON = _st->GetChar(); |
Heidl | 0:d1960beb98fe | 117 | if( this->acqON ) |
Heidl | 0:d1960beb98fe | 118 | this->SvMessage("AcqON"); |
Heidl | 0:d1960beb98fe | 119 | else |
Heidl | 0:d1960beb98fe | 120 | this->SvMessage("AcqOFF"); |
Heidl | 0:d1960beb98fe | 121 | return 0; |
Heidl | 0:d1960beb98fe | 122 | } |
Heidl | 0:d1960beb98fe | 123 | return cmd; |
Heidl | 0:d1960beb98fe | 124 | } |
Heidl | 0:d1960beb98fe | 125 | |
Heidl | 0:d1960beb98fe | 126 | } // namespace mbed |
Heidl | 0:d1960beb98fe | 127 | |
Heidl | 0:d1960beb98fe | 128 | |
Heidl | 0:d1960beb98fe | 129 | |
Heidl | 0:d1960beb98fe | 130 |