Serial Monitor using a specific PC application: XMON

Committer:
clemente
Date:
Thu Jun 28 10:20:45 2012 +0000
Revision:
0:ad2d25216a13

        

Who changed what in which revision?

UserRevisionLine numberNew 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 */