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

Revision:
0:5e04d85f928a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Nov 02 15:28:35 2010 +0000
@@ -0,0 +1,298 @@
+
+#include "mbed.h"
+#include "stampdock.h"
+
+Stampdock stampdock;
+
+
+
+DigitalOut myled1(LED1);
+DigitalOut myled2(LED2);
+DigitalOut myled3(LED3);
+DigitalOut myled4(LED4);
+
+
+
+void SetLed(int led, int mode)
+{
+   if (led == 0) myled1 = mode;
+   if (led == 1) myled2 = mode;
+   if (led == 2) myled3 = mode;
+   if (led == 3) myled4 = mode;
+}
+
+void Blink(int led)
+{
+   if (led == 0) myled1 = 1;
+   if (led == 1) myled2 = 1;
+   if (led == 2) myled3 = 1;
+   if (led == 3) myled4 = 1;
+   wait(0.1);
+   if (led == 0) myled1 = 0;
+   if (led == 1) myled2 = 0;
+   if (led == 2) myled3 = 0;
+   if (led == 3) myled4 = 0;   
+}
+
+void SetLeds(void)
+{
+   int t;
+
+// flash all leds
+/*
+   for (t = 0; t < 4; t++){
+      SetLed(t, 1);
+   }
+   wait(1);
+   for (t = 0; t < 4; t++){
+      SetLed(t, 0);
+   }   
+*/
+// kitt led test
+   for (t = 0; t < 4; t++){
+      SetLed(t, 1);
+      wait(0.2);
+      SetLed(t, 0);
+   }
+}
+
+void ToggleLed(int led)
+{
+   if (led == 0) myled1 = !myled1;
+   if (led == 1) myled2 = !myled2;
+   if (led == 2) myled3 = !myled3;
+   if (led == 3) myled4 = !myled4;
+   wait(0.25);
+}
+
+
+
+#define boolean int
+
+  // ChanXMode    '0=off, 1=low, 2=high, 3=gnd ?
+ //  Mode          '0=scope,  1=XY,  2=record   (3=off ?)
+
+int main() {
+   boolean ready;    // Bit
+   int   x, s, cnt = 0, ptr, speed = 0;     // Byte
+   int   x1, y1, x2, y2, ecnt = 0;
+   int mem[10];   //  int    [] mem;
+
+   //stampdock *Stampdock = new stampdock();
+
+   //StringBuffer serbuf = new StringBuffer(80);
+
+   //mem      = new int [10];
+
+   //InitStampdock();
+
+   //serial.printf("demo running .. \r\n");
+   stampdock.printf("demo running %d .. \r\n", 123);
+
+
+   for (cnt = 0; cnt < 100; cnt++){
+      stampdock.SetValue(cnt, 0);
+   }
+
+   stampdock.Cmd("!j0,250,0,0;");    // LED 0 to red
+   stampdock.Cmd("!j1,0,250,0;");    // LED 1 to green
+   stampdock.Cmd("!j2,0,0,250;");    // LED 2 to blue
+   stampdock.Cmd("!j3,4;");          // LED 3 to white
+
+   stampdock.Cmd4( 'j', 0, 250, 0, 0 );   // LED 0 to red
+
+   stampdock.SetColor(100,100,200);
+   stampdock.ClearScreen();            // clear graph
+
+   stampdock.SetColor(128,128,228);
+   stampdock.DrawGrid(20,20,29,19,55,12);
+
+   stampdock.SetColor(0,0,0);   // black
+   for (cnt = 0; cnt < 20; cnt++){
+
+      x1 = cnt * 10;
+      y1 = 15;
+
+      stampdock.Plot(x1, y1);
+   }
+
+   for (cnt = 0; cnt < 20; cnt++){
+      x1 = 10 * cnt;
+      x2 = 15 * cnt;
+      y1 = 20;
+      y2 = 40;
+      stampdock.DrawLine(x1,y1,x2,y2);
+   }
+
+   stampdock.Cmd("!f12;");      // set greyscale value 12
+   stampdock.Cmd("!r60,60,100,100;");    // draw rectangle
+
+   stampdock.Cmd("!h10,70;");     // set draw position to home or 10,70
+   stampdock.Cmd("!g50;");        // draw grey pixel and increase
+   stampdock.Cmd("!g100;");       // draw grey pixel and increase
+   stampdock.Cmd("!g150;");       // draw grey pixel and increase
+   stampdock.Cmd("!g200;");       // draw grey pixel and increase
+   stampdock.Cmd("!w10;");        // draw 10 white pixels and increase
+   stampdock.Cmd("!b10;");        // draw 10 black pixels and increase
+
+
+   s = 80;
+   //serbuf.clear();
+   //serbuf.append("!Pb");        // poly line, binary mode
+   //serbuf.append((char)33);     // 33 values follow
+   //serbuf.append((char)20);     // dx=20
+   //serbuf.append((char) 0);     // dy=0 .. so only y values
+   //serbuf.append((char)60);     // x start
+   //serbuf.append((char) s);     // y start
+
+   stampdock.printf("!Pb%c%c%c%c%c", 33, 20, 0, 60, s );
+
+   for (cnt = 0; cnt <= 28; cnt++){
+      x = cnt * cnt;
+      //serbuf.append((char) x  );    // y value of next line
+
+      stampdock.printf("%c", x );
+   }
+
+   //serbuf.append(";");     // end poly line cmd
+   //System.out.print(serbuf.toString());
+   stampdock.print(";");
+
+
+   // do some file access
+
+   stampdock.Cmd("!Otempfile.txt;");    // open file for writing
+   stampdock.Cmd("!e12,24,48,96;");     // write some values
+   stampdock.Cmd("!O;");                // close file
+
+   stampdock.Cmd("?Otempfile.txt;");   // open file for reading
+   stampdock.ReadByte();
+   stampdock.ReadByte();
+   stampdock.ReadByte();
+   s = stampdock.ReadByte();    // read LSB size of file
+   stampdock.printf("file is ");
+   stampdock.printf( "%d", s );
+   stampdock.printf(" bytes.\r\n");
+
+   stampdock.printf("read values: ");
+   for (cnt = 0; cnt < s; cnt++){
+      stampdock.Cmd("?e;");    // read a byte
+      x = stampdock.ReadByte();
+      stampdock.printf( "%d", x );
+      stampdock.printf(",");
+   }
+   stampdock.printf("\r\n");
+   stampdock.Cmd("?O;");    // close file
+   stampdock.ReadByte();
+
+
+   stampdock.printf("ticks is: ");
+   stampdock.Cmd("?t0;");    // request ticks
+   for (cnt = 0; cnt < 4; cnt++){
+      mem[cnt] = (int) stampdock.ReadByte();
+   }
+   for (cnt = 0; cnt < 4; cnt++){
+      stampdock.printf( "%d", mem[cnt] );
+      stampdock.printf(",");
+   }
+   stampdock.printf("\r\n");
+
+
+
+   stampdock.printf("time: y2 y1 mon day hour min sec tic : ");
+   stampdock.Cmd("?t1;");    // request time
+   for (cnt = 0; cnt < 8; cnt++){
+      mem[cnt] = stampdock.ReadByte();
+   }
+   for (cnt = 0; cnt < 8; cnt++){
+      stampdock.printf( "%d", mem[cnt] );
+      stampdock.printf(",");
+   }
+   stampdock.printf("\r\n");
+
+   // for (cnt = 0; cnt < 50; cnt++)
+   // Cmd2( 'G', 20, 1 );          // do "!G20,1;"
+
+
+   stampdock.Cmd("!nThis is a speech test.;");
+
+   stampdock.Cmd("!LThis is a log file test;");
+
+   stampdock.Cmd("!Vmedia/video.mpg;");
+   wait( 1.1 ); // CPU.delay(1000);
+   stampdock.Cmd("!Vmedia/sound.mp3;");
+   wait (1.1); // CPU.delay(1000);
+   stampdock.Cmd("!Vmedia/pic.jpg;");
+
+   while (true){
+      if (ecnt == 2){        // test speed up
+         x = stampdock.GetEvent();
+         ecnt = 0;
+      }else{
+         ecnt++;
+         x = 0;
+      }
+
+      if (x != 0){      // do we have a gui click or event ?
+        ecnt = 0;            // just had an event, so max wait
+        s = stampdock.GetValue(x);     // get value of gui element x
+
+        // now handle GUI element x with value/state s
+        if (x == 1){
+           //mode = s;
+           // clear graph
+           //'DEBUG "!s100,100,200;!c;"    'set blue color , clear screen    17c
+           //DEBUG "!sb",3, 100,100,200, ";!c;"     'fast binary way to set color  
+
+
+           //serial.printf("!s100,100,200;!c;");
+           stampdock.SetColor(100,100,200);
+           stampdock.ClearScreen();
+        } else
+
+        if (x == 10){     // checkmark 0
+           stampdock.SetValue(12, s);    // set checkmark 2
+        } else
+        if (x == 11){     // checkmark 1
+           stampdock.SetValue(13, s);    // set checkmark 3
+        } else
+
+        if (x == 20){     // hor switch 0
+           stampdock.SetValue(21, s);    // set hor switch 1
+        } else
+         if (x == 21){     // hor switch1
+           stampdock.SetValue(20, s);    // set hor switch 0
+        } else
+
+        if (x == 40){     // hor potm 0
+           stampdock.SetValue(41, s);    // hor potm 1
+           stampdock.SetValue(60, s);    // set analog meter
+        } else
+        if (x == 41){     // hor potm 1
+           stampdock.SetValue(40, s);    // hor potm 0
+           stampdock.SetValue(61, s);    // set analog meter
+        } else
+
+         if (x == 100){     // turn knob 0
+           stampdock.SetValue(101, s);    // turn knob 1
+        } else
+        if (x == 101){     // turn knob 1
+           stampdock.SetValue(100, s);    // turn knob 0
+        } else
+
+        if (x == 90){     // button 1
+           stampdock.ScrollLeft();    // scroll left 1 pixel
+        }
+
+
+       }  // if event
+
+       wait(0.1);   // CPU.delay(100);
+
+       // do ..
+
+
+   }   // end while true
+ }       // end main
+
+