ASCIIGraph draws graphs to serial console using the "Terminal" lib. The graph scales automatically, shows minimum and maximum. Custom designs can be applied through setting several characters.

Committer:
tknapp
Date:
Fri Jul 12 08:50:39 2013 +0000
Revision:
0:6885118d9d3f
Child:
1:0f0b1ad6f3ac
Initial commit. ASCIIGraph draws float data to serial console using Terminal library. Graph scales automatically, shows minumum and maximum.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tknapp 0:6885118d9d3f 1
tknapp 0:6885118d9d3f 2 #include "Terminal.h"
tknapp 0:6885118d9d3f 3
tknapp 0:6885118d9d3f 4 #ifndef MBED_ASCIIGRAPH_H
tknapp 0:6885118d9d3f 5 #define MBED_ASCIIGRAPH_H
tknapp 0:6885118d9d3f 6
tknapp 0:6885118d9d3f 7 /** Print ASCII graph to serial console using Terminal Lib
tknapp 0:6885118d9d3f 8 *
tknapp 0:6885118d9d3f 9 * This allows you to display measuring data at serial console
tknapp 0:6885118d9d3f 10 */
tknapp 0:6885118d9d3f 11 class ASCIIGraph {
tknapp 0:6885118d9d3f 12
tknapp 0:6885118d9d3f 13 public:
tknapp 0:6885118d9d3f 14 /** Create a ASCIIGraph object
tknapp 0:6885118d9d3f 15 *
tknapp 0:6885118d9d3f 16 * @param terminal Terminal* Pointer to a Terminal instance
tknapp 0:6885118d9d3f 17 * @param startX int Coordinate to start graph (left 0 -> right positive)
tknapp 0:6885118d9d3f 18 * @param startY int Coordinate to start graph (top 0 -> down positive)
tknapp 0:6885118d9d3f 19 * @param width int Width of graph
tknapp 0:6885118d9d3f 20 * @param height int Height of graph
tknapp 0:6885118d9d3f 21 * @param labelXoffset int Space between startX and y-axis (for printing labels) [default = 7]
tknapp 0:6885118d9d3f 22 */
tknapp 0:6885118d9d3f 23 ASCIIGraph(Terminal * terminal, int startX, int startY, int width, int height, int labelXoffset = 7);
tknapp 0:6885118d9d3f 24
tknapp 0:6885118d9d3f 25 /** Destroys the ASCIIGraph object */
tknapp 0:6885118d9d3f 26 ~ASCIIGraph();
tknapp 0:6885118d9d3f 27
tknapp 0:6885118d9d3f 28 char getXAxisChar(){ return xAxisChar; };
tknapp 0:6885118d9d3f 29 /** Set character for printing x-axis */
tknapp 0:6885118d9d3f 30 void setXAxisChar(char c) { xAxisChar = c; };
tknapp 0:6885118d9d3f 31
tknapp 0:6885118d9d3f 32 char getYAxisChar(){ return yAxisChar; };
tknapp 0:6885118d9d3f 33 /** Set character for printing y-axis */
tknapp 0:6885118d9d3f 34 void setYAxisChar(char c){ yAxisChar = c; };
tknapp 0:6885118d9d3f 35
tknapp 0:6885118d9d3f 36 char getZeroChar(){ return zeroChar; };
tknapp 0:6885118d9d3f 37 /** Set character for printing (0|0)-Point */
tknapp 0:6885118d9d3f 38 void setZeroChar(char c){ zeroChar = c; };
tknapp 0:6885118d9d3f 39
tknapp 0:6885118d9d3f 40 char getFilledChar(){ return filledChar; };
tknapp 0:6885118d9d3f 41 /** Set character for printing a filled cell */
tknapp 0:6885118d9d3f 42 void setFilledChar(char c){ filledChar = c; };
tknapp 0:6885118d9d3f 43
tknapp 0:6885118d9d3f 44 char getPlainChar(){ return plainChar; };
tknapp 0:6885118d9d3f 45 /** Set character for printing a not filled cell */
tknapp 0:6885118d9d3f 46 void setPlainChar(char c){ plainChar = c; };
tknapp 0:6885118d9d3f 47
tknapp 0:6885118d9d3f 48 /** Prints the axis initially */
tknapp 0:6885118d9d3f 49 void initGraph();
tknapp 0:6885118d9d3f 50
tknapp 0:6885118d9d3f 51 /** Add new float value to the graph
tknapp 0:6885118d9d3f 52 *
tknapp 0:6885118d9d3f 53 * @param dataPoint float Value to be added to the graph
tknapp 0:6885118d9d3f 54 */
tknapp 0:6885118d9d3f 55 void pushDataPoint(float dataPoint);
tknapp 0:6885118d9d3f 56
tknapp 0:6885118d9d3f 57 /** Draw graph */
tknapp 0:6885118d9d3f 58 void drawGraph();
tknapp 0:6885118d9d3f 59
tknapp 0:6885118d9d3f 60 /** Reset graph (e.g. Changing messure data source) */
tknapp 0:6885118d9d3f 61 void reset();
tknapp 0:6885118d9d3f 62
tknapp 0:6885118d9d3f 63 private:
tknapp 0:6885118d9d3f 64 bool first;
tknapp 0:6885118d9d3f 65
tknapp 0:6885118d9d3f 66 Terminal * term;
tknapp 0:6885118d9d3f 67
tknapp 0:6885118d9d3f 68 float * pData;
tknapp 0:6885118d9d3f 69 char * pLine;
tknapp 0:6885118d9d3f 70
tknapp 0:6885118d9d3f 71 int START_X;
tknapp 0:6885118d9d3f 72 int START_Y;
tknapp 0:6885118d9d3f 73 int WIDTH;
tknapp 0:6885118d9d3f 74 int HEIGHT;
tknapp 0:6885118d9d3f 75 int LABEL_X_OFFSET;
tknapp 0:6885118d9d3f 76 int BASE_X;
tknapp 0:6885118d9d3f 77 int BASE_Y;
tknapp 0:6885118d9d3f 78
tknapp 0:6885118d9d3f 79 char xAxisChar;
tknapp 0:6885118d9d3f 80 char zeroChar;
tknapp 0:6885118d9d3f 81 char yAxisChar;
tknapp 0:6885118d9d3f 82 char filledChar;
tknapp 0:6885118d9d3f 83 char plainChar;
tknapp 0:6885118d9d3f 84 };
tknapp 0:6885118d9d3f 85
tknapp 0:6885118d9d3f 86 #endif