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 #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