Serial Monitor using a specific PC application: XMON
XMONlib.cpp@0:ad2d25216a13, 2012-06-28 (annotated)
- Committer:
- clemente
- Date:
- Thu Jun 28 10:20:45 2012 +0000
- Revision:
- 0:ad2d25216a13
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
clemente | 0:ad2d25216a13 | 1 | /* mbed XMON library. |
clemente | 0:ad2d25216a13 | 2 | |
clemente | 0:ad2d25216a13 | 3 | XMON Micro controller serial port debugger variable view realtime curve tracer |
clemente | 0:ad2d25216a13 | 4 | http://webx.dk/XMON/index.htm |
clemente | 0:ad2d25216a13 | 5 | |
clemente | 0:ad2d25216a13 | 6 | XMON is a windows program that show and plot value received fomr the serial port. |
clemente | 0:ad2d25216a13 | 7 | This is the banner from the XMON documentation: |
clemente | 0:ad2d25216a13 | 8 | // XMON 2.1 ALPHA (autoscaling on/off/min/max) 15 feb 2008 |
clemente | 0:ad2d25216a13 | 9 | // XMON is a free utility for monitoring and communication with MCU development |
clemente | 0:ad2d25216a13 | 10 | // Made by DZL (help ideas support testing TST) |
clemente | 0:ad2d25216a13 | 11 | // if this program help you and you are happy to use it, please donate a fee to thomas@webx.dk via paypal |
clemente | 0:ad2d25216a13 | 12 | // any donation will be put into improving XMON, any size of donation small or big will be most appliciated. |
clemente | 0:ad2d25216a13 | 13 | // suggestions and bugs to thomas@webx.dk |
clemente | 0:ad2d25216a13 | 14 | // we will setup a homepage with features and tips and tricks and so on soon, see webx.dk and dzl.dk |
clemente | 0:ad2d25216a13 | 15 | |
clemente | 0:ad2d25216a13 | 16 | Copyright (c) 2011 NXP 3786 |
clemente | 0:ad2d25216a13 | 17 | |
clemente | 0:ad2d25216a13 | 18 | Permission is hereby granted, free of charge, to any person obtaining a copy |
clemente | 0:ad2d25216a13 | 19 | of this software and associated documentation files (the "Software"), to deal |
clemente | 0:ad2d25216a13 | 20 | in the Software without restriction, including without limitation the rights |
clemente | 0:ad2d25216a13 | 21 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
clemente | 0:ad2d25216a13 | 22 | copies of the Software, and to permit persons to whom the Software is |
clemente | 0:ad2d25216a13 | 23 | furnished to do so, subject to the following conditions: |
clemente | 0:ad2d25216a13 | 24 | |
clemente | 0:ad2d25216a13 | 25 | The above copyright notice and this permission notice shall be included in |
clemente | 0:ad2d25216a13 | 26 | all copies or substantial portions of the Software. |
clemente | 0:ad2d25216a13 | 27 | |
clemente | 0:ad2d25216a13 | 28 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
clemente | 0:ad2d25216a13 | 29 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
clemente | 0:ad2d25216a13 | 30 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
clemente | 0:ad2d25216a13 | 31 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
clemente | 0:ad2d25216a13 | 32 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
clemente | 0:ad2d25216a13 | 33 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
clemente | 0:ad2d25216a13 | 34 | THE SOFTWARE. |
clemente | 0:ad2d25216a13 | 35 | */ |
clemente | 0:ad2d25216a13 | 36 | #include "mbed.h" |
clemente | 0:ad2d25216a13 | 37 | #include "XMONlib.h" |
clemente | 0:ad2d25216a13 | 38 | |
clemente | 0:ad2d25216a13 | 39 | XMON::XMON( PinName tx, PinName rx) : Serial(tx, rx) |
clemente | 0:ad2d25216a13 | 40 | { |
clemente | 0:ad2d25216a13 | 41 | } |
clemente | 0:ad2d25216a13 | 42 | |
clemente | 0:ad2d25216a13 | 43 | /** Clear and restart x axis for the specified trace |
clemente | 0:ad2d25216a13 | 44 | * |
clemente | 0:ad2d25216a13 | 45 | * @param trace trace value |
clemente | 0:ad2d25216a13 | 46 | */ |
clemente | 0:ad2d25216a13 | 47 | void XMON::plotZero( unsigned int trace) |
clemente | 0:ad2d25216a13 | 48 | { // value is the plot trace you want to zero on XMON |
clemente | 0:ad2d25216a13 | 49 | putc('*'); |
clemente | 0:ad2d25216a13 | 50 | putc('T'); // re Trigger 'T', clear all traces and restart X axis scaling 'C' |
clemente | 0:ad2d25216a13 | 51 | putc( (unsigned char)trace); |
clemente | 0:ad2d25216a13 | 52 | } |
clemente | 0:ad2d25216a13 | 53 | |
clemente | 0:ad2d25216a13 | 54 | /** Clear all trace and restart x axis |
clemente | 0:ad2d25216a13 | 55 | * @param none |
clemente | 0:ad2d25216a13 | 56 | */ |
clemente | 0:ad2d25216a13 | 57 | void XMON::plotZero( void) |
clemente | 0:ad2d25216a13 | 58 | { |
clemente | 0:ad2d25216a13 | 59 | putc('*'); |
clemente | 0:ad2d25216a13 | 60 | putc('T'); // re Trigger 'T', clear |
clemente | 0:ad2d25216a13 | 61 | putc( 0); |
clemente | 0:ad2d25216a13 | 62 | |
clemente | 0:ad2d25216a13 | 63 | putc('*'); |
clemente | 0:ad2d25216a13 | 64 | putc('T'); // re Trigger 'T', clear |
clemente | 0:ad2d25216a13 | 65 | putc( 1); |
clemente | 0:ad2d25216a13 | 66 | |
clemente | 0:ad2d25216a13 | 67 | putc('*'); |
clemente | 0:ad2d25216a13 | 68 | putc('T'); // re Trigger 'T', clear |
clemente | 0:ad2d25216a13 | 69 | putc( 2); |
clemente | 0:ad2d25216a13 | 70 | |
clemente | 0:ad2d25216a13 | 71 | putc('*'); |
clemente | 0:ad2d25216a13 | 72 | putc('T'); // re Trigger 'T', clear |
clemente | 0:ad2d25216a13 | 73 | putc( 3); |
clemente | 0:ad2d25216a13 | 74 | } |
clemente | 0:ad2d25216a13 | 75 | |
clemente | 0:ad2d25216a13 | 76 | /** Plot float data |
clemente | 0:ad2d25216a13 | 77 | * |
clemente | 0:ad2d25216a13 | 78 | * @param data float value to plot. |
clemente | 0:ad2d25216a13 | 79 | * @param trace color graph |
clemente | 0:ad2d25216a13 | 80 | */ |
clemente | 0:ad2d25216a13 | 81 | void XMON::plotf( float data, unsigned int trace) |
clemente | 0:ad2d25216a13 | 82 | { |
clemente | 0:ad2d25216a13 | 83 | putc('*'); |
clemente | 0:ad2d25216a13 | 84 | putc('d'); |
clemente | 0:ad2d25216a13 | 85 | putc(((char*)&data)[3]); |
clemente | 0:ad2d25216a13 | 86 | putc('D'); |
clemente | 0:ad2d25216a13 | 87 | putc(((char*)&data)[2]); |
clemente | 0:ad2d25216a13 | 88 | putc('D'); |
clemente | 0:ad2d25216a13 | 89 | putc(((char*)&data)[1]); |
clemente | 0:ad2d25216a13 | 90 | putc('D'); |
clemente | 0:ad2d25216a13 | 91 | putc(((char*)&data)[0]); |
clemente | 0:ad2d25216a13 | 92 | putc('F'); // here is the data handler selector indicator to XMON |
clemente | 0:ad2d25216a13 | 93 | putc( (unsigned char)trace); |
clemente | 0:ad2d25216a13 | 94 | } |
clemente | 0:ad2d25216a13 | 95 | |
clemente | 0:ad2d25216a13 | 96 | /** View float data |
clemente | 0:ad2d25216a13 | 97 | * |
clemente | 0:ad2d25216a13 | 98 | * @param data float value to view. |
clemente | 0:ad2d25216a13 | 99 | * @param line line label |
clemente | 0:ad2d25216a13 | 100 | */ |
clemente | 0:ad2d25216a13 | 101 | void XMON::viewf( float data, unsigned int trace) |
clemente | 0:ad2d25216a13 | 102 | { |
clemente | 0:ad2d25216a13 | 103 | putc('*'); |
clemente | 0:ad2d25216a13 | 104 | putc('d'); |
clemente | 0:ad2d25216a13 | 105 | putc(((char*)&data)[3]); |
clemente | 0:ad2d25216a13 | 106 | putc('D'); |
clemente | 0:ad2d25216a13 | 107 | putc(((char*)&data)[2]); |
clemente | 0:ad2d25216a13 | 108 | putc('D'); |
clemente | 0:ad2d25216a13 | 109 | putc(((char*)&data)[1]); |
clemente | 0:ad2d25216a13 | 110 | putc('D'); |
clemente | 0:ad2d25216a13 | 111 | putc(((char*)&data)[0]); |
clemente | 0:ad2d25216a13 | 112 | putc('f');// here is the data handler selector indicator to XMON |
clemente | 0:ad2d25216a13 | 113 | putc( (unsigned char)trace); |
clemente | 0:ad2d25216a13 | 114 | } |
clemente | 0:ad2d25216a13 | 115 | |
clemente | 0:ad2d25216a13 | 116 | /** Plot signed 32 bits data |
clemente | 0:ad2d25216a13 | 117 | * |
clemente | 0:ad2d25216a13 | 118 | * @param data signed 32bit value to plot. |
clemente | 0:ad2d25216a13 | 119 | * @param trace color graph |
clemente | 0:ad2d25216a13 | 120 | */ |
clemente | 0:ad2d25216a13 | 121 | void XMON::plotl( int data,unsigned int trace) |
clemente | 0:ad2d25216a13 | 122 | { |
clemente | 0:ad2d25216a13 | 123 | putc('*'); |
clemente | 0:ad2d25216a13 | 124 | putc('d'); |
clemente | 0:ad2d25216a13 | 125 | putc(((char*)&data)[3]); |
clemente | 0:ad2d25216a13 | 126 | putc('D'); |
clemente | 0:ad2d25216a13 | 127 | putc(((char*)&data)[2]); |
clemente | 0:ad2d25216a13 | 128 | putc('D'); |
clemente | 0:ad2d25216a13 | 129 | putc(((char*)&data)[1]); |
clemente | 0:ad2d25216a13 | 130 | putc('D'); |
clemente | 0:ad2d25216a13 | 131 | putc(((char*)&data)[0]); |
clemente | 0:ad2d25216a13 | 132 | putc('I'); // here is the data handler selector indicator to XMON |
clemente | 0:ad2d25216a13 | 133 | putc( (unsigned char)trace); |
clemente | 0:ad2d25216a13 | 134 | } |
clemente | 0:ad2d25216a13 | 135 | |
clemente | 0:ad2d25216a13 | 136 | /** View signed 32 bits data |
clemente | 0:ad2d25216a13 | 137 | * |
clemente | 0:ad2d25216a13 | 138 | * @param data unsigned short value to view. |
clemente | 0:ad2d25216a13 | 139 | * @param line line label |
clemente | 0:ad2d25216a13 | 140 | */ |
clemente | 0:ad2d25216a13 | 141 | void XMON::viewl( int data, unsigned int trace) |
clemente | 0:ad2d25216a13 | 142 | { |
clemente | 0:ad2d25216a13 | 143 | putc('*'); |
clemente | 0:ad2d25216a13 | 144 | putc('d'); |
clemente | 0:ad2d25216a13 | 145 | putc(((char*)&data)[3]); |
clemente | 0:ad2d25216a13 | 146 | putc('D'); |
clemente | 0:ad2d25216a13 | 147 | putc(((char*)&data)[2]); |
clemente | 0:ad2d25216a13 | 148 | putc('D'); |
clemente | 0:ad2d25216a13 | 149 | putc(((char*)&data)[1]); |
clemente | 0:ad2d25216a13 | 150 | putc('D'); |
clemente | 0:ad2d25216a13 | 151 | putc(((char*)&data)[0]); |
clemente | 0:ad2d25216a13 | 152 | putc('i'); // here is the data handler selector indicator to XMON |
clemente | 0:ad2d25216a13 | 153 | putc( (unsigned char)trace); |
clemente | 0:ad2d25216a13 | 154 | } |
clemente | 0:ad2d25216a13 | 155 | |
clemente | 0:ad2d25216a13 | 156 | |
clemente | 0:ad2d25216a13 | 157 | /** Plot unsigned 16 bits data |
clemente | 0:ad2d25216a13 | 158 | * |
clemente | 0:ad2d25216a13 | 159 | * @param data unsigned short value to plot. |
clemente | 0:ad2d25216a13 | 160 | * @param trace color graph |
clemente | 0:ad2d25216a13 | 161 | */ |
clemente | 0:ad2d25216a13 | 162 | void XMON::plot( unsigned short data, unsigned int trace) |
clemente | 0:ad2d25216a13 | 163 | { |
clemente | 0:ad2d25216a13 | 164 | putc('*'); |
clemente | 0:ad2d25216a13 | 165 | putc('d'); |
clemente | 0:ad2d25216a13 | 166 | putc( (unsigned char)(data>>8)); |
clemente | 0:ad2d25216a13 | 167 | putc('D'); |
clemente | 0:ad2d25216a13 | 168 | putc( (unsigned char)data); |
clemente | 0:ad2d25216a13 | 169 | putc('P'); // here is the data handler selector indicator to XMON |
clemente | 0:ad2d25216a13 | 170 | putc( (unsigned char)trace); |
clemente | 0:ad2d25216a13 | 171 | } |
clemente | 0:ad2d25216a13 | 172 | |
clemente | 0:ad2d25216a13 | 173 | /** View unsigned 16 bits data |
clemente | 0:ad2d25216a13 | 174 | * |
clemente | 0:ad2d25216a13 | 175 | * @param data unsigned short value to view. |
clemente | 0:ad2d25216a13 | 176 | * @param line line label |
clemente | 0:ad2d25216a13 | 177 | */ |
clemente | 0:ad2d25216a13 | 178 | void XMON::view( unsigned short data, unsigned int line) // Unsigned Integers 16 bits values in the VIEW variable value area |
clemente | 0:ad2d25216a13 | 179 | { |
clemente | 0:ad2d25216a13 | 180 | putc('*'); |
clemente | 0:ad2d25216a13 | 181 | putc('d'); |
clemente | 0:ad2d25216a13 | 182 | putc( (unsigned char)(data>>8)); |
clemente | 0:ad2d25216a13 | 183 | putc('D'); |
clemente | 0:ad2d25216a13 | 184 | putc( (unsigned char)data); |
clemente | 0:ad2d25216a13 | 185 | putc('V');// here is the data handler selector indicator to XMON |
clemente | 0:ad2d25216a13 | 186 | putc( (unsigned char)line); |
clemente | 0:ad2d25216a13 | 187 | } |
clemente | 0:ad2d25216a13 | 188 | |
clemente | 0:ad2d25216a13 | 189 | /** Put the PLOT GRAPH in auto scale mode |
clemente | 0:ad2d25216a13 | 190 | * |
clemente | 0:ad2d25216a13 | 191 | * @param s 0 auto scale OFF, 1 auto scale ON |
clemente | 0:ad2d25216a13 | 192 | */ |
clemente | 0:ad2d25216a13 | 193 | void XMON::autoscale( char s) // |
clemente | 0:ad2d25216a13 | 194 | { |
clemente | 0:ad2d25216a13 | 195 | putc('*'); |
clemente | 0:ad2d25216a13 | 196 | putc('A'); |
clemente | 0:ad2d25216a13 | 197 | putc(s); |
clemente | 0:ad2d25216a13 | 198 | } |
clemente | 0:ad2d25216a13 | 199 | |
clemente | 0:ad2d25216a13 | 200 | /* |
clemente | 0:ad2d25216a13 | 201 | |
clemente | 0:ad2d25216a13 | 202 | void ViewFreqBin( int data) |
clemente | 0:ad2d25216a13 | 203 | { |
clemente | 0:ad2d25216a13 | 204 | viewl( data, XMON_RED); |
clemente | 0:ad2d25216a13 | 205 | |
clemente | 0:ad2d25216a13 | 206 | } |
clemente | 0:ad2d25216a13 | 207 | |
clemente | 0:ad2d25216a13 | 208 | void PlotSpectrum( int * specarray, float data) |
clemente | 0:ad2d25216a13 | 209 | { |
clemente | 0:ad2d25216a13 | 210 | unsigned int i=0; |
clemente | 0:ad2d25216a13 | 211 | |
clemente | 0:ad2d25216a13 | 212 | plotZero( XMON_RED); |
clemente | 0:ad2d25216a13 | 213 | |
clemente | 0:ad2d25216a13 | 214 | viewf( data, XMON_RED); |
clemente | 0:ad2d25216a13 | 215 | |
clemente | 0:ad2d25216a13 | 216 | while ( i < NBIN/2) |
clemente | 0:ad2d25216a13 | 217 | { |
clemente | 0:ad2d25216a13 | 218 | plot( specarray[i], XMON_RED); |
clemente | 0:ad2d25216a13 | 219 | i++; |
clemente | 0:ad2d25216a13 | 220 | } |
clemente | 0:ad2d25216a13 | 221 | } |
clemente | 0:ad2d25216a13 | 222 | |
clemente | 0:ad2d25216a13 | 223 | */ |