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

Dependents:   EquatorStrutDigitalMonitor

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers LightWeightSerialTransmit.cpp Source File

LightWeightSerialTransmit.cpp

00001 #include "LightWeightSerialTransmit.h"
00002 
00003 LWSerialTX::LWSerialTX(int baudRate)
00004 {
00005     SerialConnection = new RawSerial(P1_27, P1_26);
00006     (*SerialConnection).baud(baudRate);
00007 }
00008 
00009 void LWSerialTX::NewFile()
00010 {
00011     (*SerialConnection).putc(28);
00012     (*SerialConnection).putc(10);
00013     (*SerialConnection).putc(13);
00014 }
00015 
00016 void LWSerialTX::NewLine()
00017 {
00018     (*SerialConnection).putc(10);
00019     (*SerialConnection).putc(13);
00020 }
00021 
00022 void LWSerialTX::Delimiter(Delimiters delimiter)
00023 {
00024     (*SerialConnection).putc(delimiter);
00025 }
00026 
00027 void LWSerialTX::Transmit(double output)
00028 {
00029     int outChar = 0;
00030     
00031     if (output < 0.0)
00032     {
00033         (*SerialConnection).putc('-');
00034         output *= -1.0;
00035     }
00036     if (output >= 1000.0)
00037     {
00038         outChar = output / 1000;
00039         (*SerialConnection).putc(outChar + 48);
00040         output -= outChar * 1000.0;
00041     }
00042     if (output >= 100.0)
00043     {
00044         outChar = output / 100;
00045         (*SerialConnection).putc(outChar + 48);
00046         output -= outChar * 100.0;
00047     }
00048     else if(outChar > 0)
00049     {
00050         (*SerialConnection).putc('0');
00051     }
00052     if (output >= 10.0)
00053     {
00054         outChar = output / 10;
00055         (*SerialConnection).putc(outChar + 48);
00056         output -= outChar * 10.0;
00057     }
00058     else if(outChar > 0)
00059     {
00060         (*SerialConnection).putc('0');
00061     }
00062     if (output >= 1.0)
00063     {
00064         outChar = output;
00065         (*SerialConnection).putc(outChar + 48);
00066         output -= outChar;
00067     }
00068     else
00069     {
00070         (*SerialConnection).putc('0');
00071     }
00072     if (output >= 0.1)
00073     {
00074         (*SerialConnection).putc('.');
00075         outChar = output * 10;
00076         (*SerialConnection).putc(outChar + 48);
00077         output -= (double)outChar / 10.0;
00078     }
00079     else
00080     {
00081         (*SerialConnection).putc('.');
00082         (*SerialConnection).putc('0');
00083     }
00084     if (output >= 0.01)
00085     {
00086         outChar = output * 100;
00087         (*SerialConnection).putc(outChar + 48);
00088         output -= (double)outChar / 100.0;
00089     }
00090     else
00091     {
00092         (*SerialConnection).putc('0');
00093     }
00094     if (output >= 0.001)
00095     {
00096         outChar= output * 1000;
00097         (*SerialConnection).putc(outChar + 48);
00098     }
00099 }