First quick attempt at an API and demo for the stampdock software of http://stampdock.com/ it demonstrates how to use the stampdock software from an mbed

Dependencies:   mbed

Committer:
apspijkerman
Date:
Tue Nov 02 15:28:35 2010 +0000
Revision:
0:5e04d85f928a
first attempt

Who changed what in which revision?

UserRevisionLine numberNew contents of line
apspijkerman 0:5e04d85f928a 1
apspijkerman 0:5e04d85f928a 2 #include "mbed.h"
apspijkerman 0:5e04d85f928a 3 #include "stampdock.h"
apspijkerman 0:5e04d85f928a 4
apspijkerman 0:5e04d85f928a 5 Stampdock stampdock;
apspijkerman 0:5e04d85f928a 6
apspijkerman 0:5e04d85f928a 7
apspijkerman 0:5e04d85f928a 8
apspijkerman 0:5e04d85f928a 9 DigitalOut myled1(LED1);
apspijkerman 0:5e04d85f928a 10 DigitalOut myled2(LED2);
apspijkerman 0:5e04d85f928a 11 DigitalOut myled3(LED3);
apspijkerman 0:5e04d85f928a 12 DigitalOut myled4(LED4);
apspijkerman 0:5e04d85f928a 13
apspijkerman 0:5e04d85f928a 14
apspijkerman 0:5e04d85f928a 15
apspijkerman 0:5e04d85f928a 16 void SetLed(int led, int mode)
apspijkerman 0:5e04d85f928a 17 {
apspijkerman 0:5e04d85f928a 18 if (led == 0) myled1 = mode;
apspijkerman 0:5e04d85f928a 19 if (led == 1) myled2 = mode;
apspijkerman 0:5e04d85f928a 20 if (led == 2) myled3 = mode;
apspijkerman 0:5e04d85f928a 21 if (led == 3) myled4 = mode;
apspijkerman 0:5e04d85f928a 22 }
apspijkerman 0:5e04d85f928a 23
apspijkerman 0:5e04d85f928a 24 void Blink(int led)
apspijkerman 0:5e04d85f928a 25 {
apspijkerman 0:5e04d85f928a 26 if (led == 0) myled1 = 1;
apspijkerman 0:5e04d85f928a 27 if (led == 1) myled2 = 1;
apspijkerman 0:5e04d85f928a 28 if (led == 2) myled3 = 1;
apspijkerman 0:5e04d85f928a 29 if (led == 3) myled4 = 1;
apspijkerman 0:5e04d85f928a 30 wait(0.1);
apspijkerman 0:5e04d85f928a 31 if (led == 0) myled1 = 0;
apspijkerman 0:5e04d85f928a 32 if (led == 1) myled2 = 0;
apspijkerman 0:5e04d85f928a 33 if (led == 2) myled3 = 0;
apspijkerman 0:5e04d85f928a 34 if (led == 3) myled4 = 0;
apspijkerman 0:5e04d85f928a 35 }
apspijkerman 0:5e04d85f928a 36
apspijkerman 0:5e04d85f928a 37 void SetLeds(void)
apspijkerman 0:5e04d85f928a 38 {
apspijkerman 0:5e04d85f928a 39 int t;
apspijkerman 0:5e04d85f928a 40
apspijkerman 0:5e04d85f928a 41 // flash all leds
apspijkerman 0:5e04d85f928a 42 /*
apspijkerman 0:5e04d85f928a 43 for (t = 0; t < 4; t++){
apspijkerman 0:5e04d85f928a 44 SetLed(t, 1);
apspijkerman 0:5e04d85f928a 45 }
apspijkerman 0:5e04d85f928a 46 wait(1);
apspijkerman 0:5e04d85f928a 47 for (t = 0; t < 4; t++){
apspijkerman 0:5e04d85f928a 48 SetLed(t, 0);
apspijkerman 0:5e04d85f928a 49 }
apspijkerman 0:5e04d85f928a 50 */
apspijkerman 0:5e04d85f928a 51 // kitt led test
apspijkerman 0:5e04d85f928a 52 for (t = 0; t < 4; t++){
apspijkerman 0:5e04d85f928a 53 SetLed(t, 1);
apspijkerman 0:5e04d85f928a 54 wait(0.2);
apspijkerman 0:5e04d85f928a 55 SetLed(t, 0);
apspijkerman 0:5e04d85f928a 56 }
apspijkerman 0:5e04d85f928a 57 }
apspijkerman 0:5e04d85f928a 58
apspijkerman 0:5e04d85f928a 59 void ToggleLed(int led)
apspijkerman 0:5e04d85f928a 60 {
apspijkerman 0:5e04d85f928a 61 if (led == 0) myled1 = !myled1;
apspijkerman 0:5e04d85f928a 62 if (led == 1) myled2 = !myled2;
apspijkerman 0:5e04d85f928a 63 if (led == 2) myled3 = !myled3;
apspijkerman 0:5e04d85f928a 64 if (led == 3) myled4 = !myled4;
apspijkerman 0:5e04d85f928a 65 wait(0.25);
apspijkerman 0:5e04d85f928a 66 }
apspijkerman 0:5e04d85f928a 67
apspijkerman 0:5e04d85f928a 68
apspijkerman 0:5e04d85f928a 69
apspijkerman 0:5e04d85f928a 70 #define boolean int
apspijkerman 0:5e04d85f928a 71
apspijkerman 0:5e04d85f928a 72 // ChanXMode '0=off, 1=low, 2=high, 3=gnd ?
apspijkerman 0:5e04d85f928a 73 // Mode '0=scope, 1=XY, 2=record (3=off ?)
apspijkerman 0:5e04d85f928a 74
apspijkerman 0:5e04d85f928a 75 int main() {
apspijkerman 0:5e04d85f928a 76 boolean ready; // Bit
apspijkerman 0:5e04d85f928a 77 int x, s, cnt = 0, ptr, speed = 0; // Byte
apspijkerman 0:5e04d85f928a 78 int x1, y1, x2, y2, ecnt = 0;
apspijkerman 0:5e04d85f928a 79 int mem[10]; // int [] mem;
apspijkerman 0:5e04d85f928a 80
apspijkerman 0:5e04d85f928a 81 //stampdock *Stampdock = new stampdock();
apspijkerman 0:5e04d85f928a 82
apspijkerman 0:5e04d85f928a 83 //StringBuffer serbuf = new StringBuffer(80);
apspijkerman 0:5e04d85f928a 84
apspijkerman 0:5e04d85f928a 85 //mem = new int [10];
apspijkerman 0:5e04d85f928a 86
apspijkerman 0:5e04d85f928a 87 //InitStampdock();
apspijkerman 0:5e04d85f928a 88
apspijkerman 0:5e04d85f928a 89 //serial.printf("demo running .. \r\n");
apspijkerman 0:5e04d85f928a 90 stampdock.printf("demo running %d .. \r\n", 123);
apspijkerman 0:5e04d85f928a 91
apspijkerman 0:5e04d85f928a 92
apspijkerman 0:5e04d85f928a 93 for (cnt = 0; cnt < 100; cnt++){
apspijkerman 0:5e04d85f928a 94 stampdock.SetValue(cnt, 0);
apspijkerman 0:5e04d85f928a 95 }
apspijkerman 0:5e04d85f928a 96
apspijkerman 0:5e04d85f928a 97 stampdock.Cmd("!j0,250,0,0;"); // LED 0 to red
apspijkerman 0:5e04d85f928a 98 stampdock.Cmd("!j1,0,250,0;"); // LED 1 to green
apspijkerman 0:5e04d85f928a 99 stampdock.Cmd("!j2,0,0,250;"); // LED 2 to blue
apspijkerman 0:5e04d85f928a 100 stampdock.Cmd("!j3,4;"); // LED 3 to white
apspijkerman 0:5e04d85f928a 101
apspijkerman 0:5e04d85f928a 102 stampdock.Cmd4( 'j', 0, 250, 0, 0 ); // LED 0 to red
apspijkerman 0:5e04d85f928a 103
apspijkerman 0:5e04d85f928a 104 stampdock.SetColor(100,100,200);
apspijkerman 0:5e04d85f928a 105 stampdock.ClearScreen(); // clear graph
apspijkerman 0:5e04d85f928a 106
apspijkerman 0:5e04d85f928a 107 stampdock.SetColor(128,128,228);
apspijkerman 0:5e04d85f928a 108 stampdock.DrawGrid(20,20,29,19,55,12);
apspijkerman 0:5e04d85f928a 109
apspijkerman 0:5e04d85f928a 110 stampdock.SetColor(0,0,0); // black
apspijkerman 0:5e04d85f928a 111 for (cnt = 0; cnt < 20; cnt++){
apspijkerman 0:5e04d85f928a 112
apspijkerman 0:5e04d85f928a 113 x1 = cnt * 10;
apspijkerman 0:5e04d85f928a 114 y1 = 15;
apspijkerman 0:5e04d85f928a 115
apspijkerman 0:5e04d85f928a 116 stampdock.Plot(x1, y1);
apspijkerman 0:5e04d85f928a 117 }
apspijkerman 0:5e04d85f928a 118
apspijkerman 0:5e04d85f928a 119 for (cnt = 0; cnt < 20; cnt++){
apspijkerman 0:5e04d85f928a 120 x1 = 10 * cnt;
apspijkerman 0:5e04d85f928a 121 x2 = 15 * cnt;
apspijkerman 0:5e04d85f928a 122 y1 = 20;
apspijkerman 0:5e04d85f928a 123 y2 = 40;
apspijkerman 0:5e04d85f928a 124 stampdock.DrawLine(x1,y1,x2,y2);
apspijkerman 0:5e04d85f928a 125 }
apspijkerman 0:5e04d85f928a 126
apspijkerman 0:5e04d85f928a 127 stampdock.Cmd("!f12;"); // set greyscale value 12
apspijkerman 0:5e04d85f928a 128 stampdock.Cmd("!r60,60,100,100;"); // draw rectangle
apspijkerman 0:5e04d85f928a 129
apspijkerman 0:5e04d85f928a 130 stampdock.Cmd("!h10,70;"); // set draw position to home or 10,70
apspijkerman 0:5e04d85f928a 131 stampdock.Cmd("!g50;"); // draw grey pixel and increase
apspijkerman 0:5e04d85f928a 132 stampdock.Cmd("!g100;"); // draw grey pixel and increase
apspijkerman 0:5e04d85f928a 133 stampdock.Cmd("!g150;"); // draw grey pixel and increase
apspijkerman 0:5e04d85f928a 134 stampdock.Cmd("!g200;"); // draw grey pixel and increase
apspijkerman 0:5e04d85f928a 135 stampdock.Cmd("!w10;"); // draw 10 white pixels and increase
apspijkerman 0:5e04d85f928a 136 stampdock.Cmd("!b10;"); // draw 10 black pixels and increase
apspijkerman 0:5e04d85f928a 137
apspijkerman 0:5e04d85f928a 138
apspijkerman 0:5e04d85f928a 139 s = 80;
apspijkerman 0:5e04d85f928a 140 //serbuf.clear();
apspijkerman 0:5e04d85f928a 141 //serbuf.append("!Pb"); // poly line, binary mode
apspijkerman 0:5e04d85f928a 142 //serbuf.append((char)33); // 33 values follow
apspijkerman 0:5e04d85f928a 143 //serbuf.append((char)20); // dx=20
apspijkerman 0:5e04d85f928a 144 //serbuf.append((char) 0); // dy=0 .. so only y values
apspijkerman 0:5e04d85f928a 145 //serbuf.append((char)60); // x start
apspijkerman 0:5e04d85f928a 146 //serbuf.append((char) s); // y start
apspijkerman 0:5e04d85f928a 147
apspijkerman 0:5e04d85f928a 148 stampdock.printf("!Pb%c%c%c%c%c", 33, 20, 0, 60, s );
apspijkerman 0:5e04d85f928a 149
apspijkerman 0:5e04d85f928a 150 for (cnt = 0; cnt <= 28; cnt++){
apspijkerman 0:5e04d85f928a 151 x = cnt * cnt;
apspijkerman 0:5e04d85f928a 152 //serbuf.append((char) x ); // y value of next line
apspijkerman 0:5e04d85f928a 153
apspijkerman 0:5e04d85f928a 154 stampdock.printf("%c", x );
apspijkerman 0:5e04d85f928a 155 }
apspijkerman 0:5e04d85f928a 156
apspijkerman 0:5e04d85f928a 157 //serbuf.append(";"); // end poly line cmd
apspijkerman 0:5e04d85f928a 158 //System.out.print(serbuf.toString());
apspijkerman 0:5e04d85f928a 159 stampdock.print(";");
apspijkerman 0:5e04d85f928a 160
apspijkerman 0:5e04d85f928a 161
apspijkerman 0:5e04d85f928a 162 // do some file access
apspijkerman 0:5e04d85f928a 163
apspijkerman 0:5e04d85f928a 164 stampdock.Cmd("!Otempfile.txt;"); // open file for writing
apspijkerman 0:5e04d85f928a 165 stampdock.Cmd("!e12,24,48,96;"); // write some values
apspijkerman 0:5e04d85f928a 166 stampdock.Cmd("!O;"); // close file
apspijkerman 0:5e04d85f928a 167
apspijkerman 0:5e04d85f928a 168 stampdock.Cmd("?Otempfile.txt;"); // open file for reading
apspijkerman 0:5e04d85f928a 169 stampdock.ReadByte();
apspijkerman 0:5e04d85f928a 170 stampdock.ReadByte();
apspijkerman 0:5e04d85f928a 171 stampdock.ReadByte();
apspijkerman 0:5e04d85f928a 172 s = stampdock.ReadByte(); // read LSB size of file
apspijkerman 0:5e04d85f928a 173 stampdock.printf("file is ");
apspijkerman 0:5e04d85f928a 174 stampdock.printf( "%d", s );
apspijkerman 0:5e04d85f928a 175 stampdock.printf(" bytes.\r\n");
apspijkerman 0:5e04d85f928a 176
apspijkerman 0:5e04d85f928a 177 stampdock.printf("read values: ");
apspijkerman 0:5e04d85f928a 178 for (cnt = 0; cnt < s; cnt++){
apspijkerman 0:5e04d85f928a 179 stampdock.Cmd("?e;"); // read a byte
apspijkerman 0:5e04d85f928a 180 x = stampdock.ReadByte();
apspijkerman 0:5e04d85f928a 181 stampdock.printf( "%d", x );
apspijkerman 0:5e04d85f928a 182 stampdock.printf(",");
apspijkerman 0:5e04d85f928a 183 }
apspijkerman 0:5e04d85f928a 184 stampdock.printf("\r\n");
apspijkerman 0:5e04d85f928a 185 stampdock.Cmd("?O;"); // close file
apspijkerman 0:5e04d85f928a 186 stampdock.ReadByte();
apspijkerman 0:5e04d85f928a 187
apspijkerman 0:5e04d85f928a 188
apspijkerman 0:5e04d85f928a 189 stampdock.printf("ticks is: ");
apspijkerman 0:5e04d85f928a 190 stampdock.Cmd("?t0;"); // request ticks
apspijkerman 0:5e04d85f928a 191 for (cnt = 0; cnt < 4; cnt++){
apspijkerman 0:5e04d85f928a 192 mem[cnt] = (int) stampdock.ReadByte();
apspijkerman 0:5e04d85f928a 193 }
apspijkerman 0:5e04d85f928a 194 for (cnt = 0; cnt < 4; cnt++){
apspijkerman 0:5e04d85f928a 195 stampdock.printf( "%d", mem[cnt] );
apspijkerman 0:5e04d85f928a 196 stampdock.printf(",");
apspijkerman 0:5e04d85f928a 197 }
apspijkerman 0:5e04d85f928a 198 stampdock.printf("\r\n");
apspijkerman 0:5e04d85f928a 199
apspijkerman 0:5e04d85f928a 200
apspijkerman 0:5e04d85f928a 201
apspijkerman 0:5e04d85f928a 202 stampdock.printf("time: y2 y1 mon day hour min sec tic : ");
apspijkerman 0:5e04d85f928a 203 stampdock.Cmd("?t1;"); // request time
apspijkerman 0:5e04d85f928a 204 for (cnt = 0; cnt < 8; cnt++){
apspijkerman 0:5e04d85f928a 205 mem[cnt] = stampdock.ReadByte();
apspijkerman 0:5e04d85f928a 206 }
apspijkerman 0:5e04d85f928a 207 for (cnt = 0; cnt < 8; cnt++){
apspijkerman 0:5e04d85f928a 208 stampdock.printf( "%d", mem[cnt] );
apspijkerman 0:5e04d85f928a 209 stampdock.printf(",");
apspijkerman 0:5e04d85f928a 210 }
apspijkerman 0:5e04d85f928a 211 stampdock.printf("\r\n");
apspijkerman 0:5e04d85f928a 212
apspijkerman 0:5e04d85f928a 213 // for (cnt = 0; cnt < 50; cnt++)
apspijkerman 0:5e04d85f928a 214 // Cmd2( 'G', 20, 1 ); // do "!G20,1;"
apspijkerman 0:5e04d85f928a 215
apspijkerman 0:5e04d85f928a 216
apspijkerman 0:5e04d85f928a 217 stampdock.Cmd("!nThis is a speech test.;");
apspijkerman 0:5e04d85f928a 218
apspijkerman 0:5e04d85f928a 219 stampdock.Cmd("!LThis is a log file test;");
apspijkerman 0:5e04d85f928a 220
apspijkerman 0:5e04d85f928a 221 stampdock.Cmd("!Vmedia/video.mpg;");
apspijkerman 0:5e04d85f928a 222 wait( 1.1 ); // CPU.delay(1000);
apspijkerman 0:5e04d85f928a 223 stampdock.Cmd("!Vmedia/sound.mp3;");
apspijkerman 0:5e04d85f928a 224 wait (1.1); // CPU.delay(1000);
apspijkerman 0:5e04d85f928a 225 stampdock.Cmd("!Vmedia/pic.jpg;");
apspijkerman 0:5e04d85f928a 226
apspijkerman 0:5e04d85f928a 227 while (true){
apspijkerman 0:5e04d85f928a 228 if (ecnt == 2){ // test speed up
apspijkerman 0:5e04d85f928a 229 x = stampdock.GetEvent();
apspijkerman 0:5e04d85f928a 230 ecnt = 0;
apspijkerman 0:5e04d85f928a 231 }else{
apspijkerman 0:5e04d85f928a 232 ecnt++;
apspijkerman 0:5e04d85f928a 233 x = 0;
apspijkerman 0:5e04d85f928a 234 }
apspijkerman 0:5e04d85f928a 235
apspijkerman 0:5e04d85f928a 236 if (x != 0){ // do we have a gui click or event ?
apspijkerman 0:5e04d85f928a 237 ecnt = 0; // just had an event, so max wait
apspijkerman 0:5e04d85f928a 238 s = stampdock.GetValue(x); // get value of gui element x
apspijkerman 0:5e04d85f928a 239
apspijkerman 0:5e04d85f928a 240 // now handle GUI element x with value/state s
apspijkerman 0:5e04d85f928a 241 if (x == 1){
apspijkerman 0:5e04d85f928a 242 //mode = s;
apspijkerman 0:5e04d85f928a 243 // clear graph
apspijkerman 0:5e04d85f928a 244 //'DEBUG "!s100,100,200;!c;" 'set blue color , clear screen 17c
apspijkerman 0:5e04d85f928a 245 //DEBUG "!sb",3, 100,100,200, ";!c;" 'fast binary way to set color
apspijkerman 0:5e04d85f928a 246
apspijkerman 0:5e04d85f928a 247
apspijkerman 0:5e04d85f928a 248 //serial.printf("!s100,100,200;!c;");
apspijkerman 0:5e04d85f928a 249 stampdock.SetColor(100,100,200);
apspijkerman 0:5e04d85f928a 250 stampdock.ClearScreen();
apspijkerman 0:5e04d85f928a 251 } else
apspijkerman 0:5e04d85f928a 252
apspijkerman 0:5e04d85f928a 253 if (x == 10){ // checkmark 0
apspijkerman 0:5e04d85f928a 254 stampdock.SetValue(12, s); // set checkmark 2
apspijkerman 0:5e04d85f928a 255 } else
apspijkerman 0:5e04d85f928a 256 if (x == 11){ // checkmark 1
apspijkerman 0:5e04d85f928a 257 stampdock.SetValue(13, s); // set checkmark 3
apspijkerman 0:5e04d85f928a 258 } else
apspijkerman 0:5e04d85f928a 259
apspijkerman 0:5e04d85f928a 260 if (x == 20){ // hor switch 0
apspijkerman 0:5e04d85f928a 261 stampdock.SetValue(21, s); // set hor switch 1
apspijkerman 0:5e04d85f928a 262 } else
apspijkerman 0:5e04d85f928a 263 if (x == 21){ // hor switch1
apspijkerman 0:5e04d85f928a 264 stampdock.SetValue(20, s); // set hor switch 0
apspijkerman 0:5e04d85f928a 265 } else
apspijkerman 0:5e04d85f928a 266
apspijkerman 0:5e04d85f928a 267 if (x == 40){ // hor potm 0
apspijkerman 0:5e04d85f928a 268 stampdock.SetValue(41, s); // hor potm 1
apspijkerman 0:5e04d85f928a 269 stampdock.SetValue(60, s); // set analog meter
apspijkerman 0:5e04d85f928a 270 } else
apspijkerman 0:5e04d85f928a 271 if (x == 41){ // hor potm 1
apspijkerman 0:5e04d85f928a 272 stampdock.SetValue(40, s); // hor potm 0
apspijkerman 0:5e04d85f928a 273 stampdock.SetValue(61, s); // set analog meter
apspijkerman 0:5e04d85f928a 274 } else
apspijkerman 0:5e04d85f928a 275
apspijkerman 0:5e04d85f928a 276 if (x == 100){ // turn knob 0
apspijkerman 0:5e04d85f928a 277 stampdock.SetValue(101, s); // turn knob 1
apspijkerman 0:5e04d85f928a 278 } else
apspijkerman 0:5e04d85f928a 279 if (x == 101){ // turn knob 1
apspijkerman 0:5e04d85f928a 280 stampdock.SetValue(100, s); // turn knob 0
apspijkerman 0:5e04d85f928a 281 } else
apspijkerman 0:5e04d85f928a 282
apspijkerman 0:5e04d85f928a 283 if (x == 90){ // button 1
apspijkerman 0:5e04d85f928a 284 stampdock.ScrollLeft(); // scroll left 1 pixel
apspijkerman 0:5e04d85f928a 285 }
apspijkerman 0:5e04d85f928a 286
apspijkerman 0:5e04d85f928a 287
apspijkerman 0:5e04d85f928a 288 } // if event
apspijkerman 0:5e04d85f928a 289
apspijkerman 0:5e04d85f928a 290 wait(0.1); // CPU.delay(100);
apspijkerman 0:5e04d85f928a 291
apspijkerman 0:5e04d85f928a 292 // do ..
apspijkerman 0:5e04d85f928a 293
apspijkerman 0:5e04d85f928a 294
apspijkerman 0:5e04d85f928a 295 } // end while true
apspijkerman 0:5e04d85f928a 296 } // end main
apspijkerman 0:5e04d85f928a 297
apspijkerman 0:5e04d85f928a 298