A simple wrapper for the Raw serial class to transmit double variables.

Dependents:   EquatorStrutDigitalMonitor

LightWeightSerialTransmit.cpp

Committer:
pyrostew
Date:
2014-08-22
Revision:
0:ff597e1c059d

File content as of revision 0:ff597e1c059d:

#include "LightWeightSerialTransmit.h"

LWSerialTX::LWSerialTX(int baudRate)
{
    SerialConnection = new RawSerial(P1_27, P1_26);
    (*SerialConnection).baud(baudRate);
}

void LWSerialTX::NewFile()
{
    (*SerialConnection).putc(28);
    (*SerialConnection).putc(10);
    (*SerialConnection).putc(13);
}

void LWSerialTX::NewLine()
{
    (*SerialConnection).putc(10);
    (*SerialConnection).putc(13);
}

void LWSerialTX::Delimiter(Delimiters delimiter)
{
    (*SerialConnection).putc(delimiter);
}

void LWSerialTX::Transmit(double output)
{
    int outChar = 0;
    
    if (output < 0.0)
    {
        (*SerialConnection).putc('-');
        output *= -1.0;
    }
    if (output >= 1000.0)
    {
        outChar = output / 1000;
        (*SerialConnection).putc(outChar + 48);
        output -= outChar * 1000.0;
    }
    if (output >= 100.0)
    {
        outChar = output / 100;
        (*SerialConnection).putc(outChar + 48);
        output -= outChar * 100.0;
    }
    else if(outChar > 0)
    {
        (*SerialConnection).putc('0');
    }
    if (output >= 10.0)
    {
        outChar = output / 10;
        (*SerialConnection).putc(outChar + 48);
        output -= outChar * 10.0;
    }
    else if(outChar > 0)
    {
        (*SerialConnection).putc('0');
    }
    if (output >= 1.0)
    {
        outChar = output;
        (*SerialConnection).putc(outChar + 48);
        output -= outChar;
    }
    else
    {
        (*SerialConnection).putc('0');
    }
    if (output >= 0.1)
    {
        (*SerialConnection).putc('.');
        outChar = output * 10;
        (*SerialConnection).putc(outChar + 48);
        output -= (double)outChar / 10.0;
    }
    else
    {
        (*SerialConnection).putc('.');
        (*SerialConnection).putc('0');
    }
    if (output >= 0.01)
    {
        outChar = output * 100;
        (*SerialConnection).putc(outChar + 48);
        output -= (double)outChar / 100.0;
    }
    else
    {
        (*SerialConnection).putc('0');
    }
    if (output >= 0.001)
    {
        outChar= output * 1000;
        (*SerialConnection).putc(outChar + 48);
    }
}