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:57:45 2013 +0000
Revision:
1:0f0b1ad6f3ac
Parent:
0:6885118d9d3f
Initial commit.

Who changed what in which revision?

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