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.
ASCIIGraph.h@1:0f0b1ad6f3ac, 2013-07-12 (annotated)
- 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?
User | Revision | Line number | New 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 |