First quick attempt at a demo for the stampdock software of http://stampdock.com/ it demonstrates how to use the stampdock software from an mbed
Revision 0:f032bf4440c4, committed 2010-11-02
- Comitter:
- apspijkerman
- Date:
- Tue Nov 02 15:29:20 2010 +0000
- Commit message:
- first version
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Nov 02 15:29:20 2010 +0000 @@ -0,0 +1,1012 @@ + + +// mbed demo program (needs stampdock software) +// by apspijkerman ap@apsdev.com + + +#include "mbed.h" + +//Serial pc(USBTX, USBRX); // tx, rx +Serial serial(USBTX, USBRX); // tx, rx default 9600 8N1 + +AnalogIn xa(p15); +AnalogIn ya(p16); + +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); +} + +//public class demo { + + // seems we need to write commands in one go, so have a buffer + //static StringBuffer buf = new StringBuffer(128); + + // check if the system has events for us + // if value greater then zero then thats the ID number of + // the gui element or the event number + + +void InitStampdock(void) +{ +// serial.begin( 9600 ); +// serial.baud(19200); +// serial.format(8,None,1); + SetLeds(); + +} + + + static int GetEvent() + { + int e = 0, ready = 0, cnt = 0; + char v; + // DEBUG "?Q;" 'query for events .. also sync with PC + // SERIN 16, Baud, [x] '16468 + // PAUSE 1 ' millisecs .. let serial bus settle + + //serial.printf("\n"); // test .. purge buffer ? + serial.printf("?Q;"); // query for event + //wait(0.11); //CPU.delay(1); // ?? + do{ + if (serial.readable()){ + //v = Serial.read(); + v = serial.getc(); + + e = v; + if (e < 0) e += 256; // signed char to int ? + + //e = (255-v) + 1; // 2's complement + + //serial.printf("EVENT:"); + //serial.printf(e); + //serial.printf("<-"); + ready = 1; + }else{ + //serial.printf("no event"); + wait(0.0001); + cnt++; + if (cnt == 1000) ready = 1; + Blink(0); + } + }while(!ready); + //CPU.delay(10); + + // .. flush out of sync events .. + //while (serial.readable()){ + if (serial.readable()){ + // Serial.read(); + serial.getc(); + Blink(1); + } + + if (serial.readable()){ + // Serial.read(); + serial.getc(); + Blink(2); + } + + return e; + } + + // request the state of GUI element i + + static int GetValue(int i) + { + int e = 0, ready = 0, cnt = 0; + char v; + //StringBuffer buf=new StringBuffer(12); + + // DEBUG "?i",DEC x,";" 'get state of gui element x + // SERIN 16, Baud, [s] '16468 + // PAUSE 1 ' millisecs + + //serial.printf("?i"); // query for event + //serial.printf(i); + //serial.printf(";"); + + //buf.clear(); + //buf.append("?i"); + //buf.append( i ); + //buf.append(";"); + //System.out.print(buf.toString()); + + serial.printf("?i%d;", i ); + + //wait(0.1); //CPU.delay(1); // ?? + do { + if (serial.readable()){ + //v = Serial.read(); + v = serial.getc(); + + e = v; + if (e < 0) e += 256; // signed char to int ? + + //e = (255-v) + 1; // 2's complement + ready = 1; + }else{ + wait(0.0001); + cnt++; + if (cnt == 1000) ready = 1; + } + //CPU.delay(10); + }while(!ready); + return e; + } + + // set the state (v) of gui element i + + static void SetValue(int i, int v) + { + //StringBuffer buf=new StringBuffer(16); + + // DEBUG "?i",DEC x,";" 'get state of gui element x + // SERIN 16, Baud, [s] '16468 + // PAUSE 1 ' millisecs + + //serial.printf("!i"); // set value + //serial.printf(i); + //serial.printf(",") + //serial.printf(v); + //serial.printf(";"); + + //buf.clear(); // slow ascii method to allow values > 255 + if (i <= 255){ + //buf.append("!ib"); // fast binary way + //buf.append((char) 2 ); // write 2 bytes + //buf.append((char) i ); // write id + //buf.append((char) v ); // always smaller als 256 + + serial.printf("!ib%c%c%c;", 2 , i , v ); + }else{ + //buf.append("!i"); // slow ascii way + //buf.append( i ); // in case ID greater as 255 + //buf.append(","); + //buf.append( v ); + + serial.printf("!i%d,%d;", i, v); + } + //buf.append(";"); + //System.out.print(buf.toString()); + + //CPU.delay(1); // ?? + } + + + static char ReadByte() + { + char v = 0, ready = 0, cnt = 0; + + //wait(0.1); + do { + if (serial.readable()){ + //v = Serial.read(); + v = serial.getc(); + + //e = v; + //if (e < 0) e += 256; // signed char to int ? + ready = 1; + }else{ + wait(0.0001); + cnt++; + if (cnt == 1000) ready = 1; + } + }while(!ready); + return v; + } + + + static void SetColor(int r, int g, int b) + { + // StringBuffer buf=new StringBuffer(12); + + if (r == 0 && g == 0 && b == 0){ + serial.printf("!s;"); // black + }else{ + //buf.clear(); + //buf.append("!sb"); // fast binary method .. so values <= 255 + //buf.append((char) 3 ); // write 3 bytes + //buf.append((char) r ); + //buf.append((char) g ); + //buf.append((char) b ); + //buf.append(";" ); + //System.out.print(buf.toString()); + + serial.printf("!sb%c%c%c%c;", 3, r, g, b ); + } + //CPU.delay(1); // ?? + } + + + static void SetGrey(int g) + { + // StringBuffer buf=new StringBuffer(12); + + // DEBUG "!fb", 1, dat, ";" + + if (g == 0){ + //System.out.print("!f;"); // black + serial.printf("!f;"); // black + }else{ + //buf.clear(); + //buf.append("!fb"); // fast binary method .. so values <= 255 + //buf.append((char) 1 ); // write 3 bytes + //buf.append((char) g ); + //buf.append(";" ); + //System.out.print(buf.toString()); + + + serial.printf("!sf%c%c;", 1, g ); + } + //CPU.delay(1); // ?? + } + + + + static void SetLED(int i, int r, int g, int b) + { + // StringBuffer buf=new StringBuffer(12); + + //buf.clear(); + //buf.append("!jb"); // fast binary method .. so values <= 255 + //buf.append((char) 4 ); // write 4 bytes + //buf.append((char) i ); + //buf.append((char) r ); + //buf.append((char) g ); + //buf.append((char) b ); + //buf.append(";" ); + //System.out.print(buf.toString()); + + serial.printf("!jb%c%c%c%c%c;", 4, i, r, g, b ); + + //CPU.delay(1); // ?? + } + + static void DrawLine(int x1, int y1, int x2, int y2) + { + //StringBuffer buf=new StringBuffer(36); + + //if (x1 < 0) x1 = 0; + //if (y1 < 0) y1 = 0; + //if (x2 < 0) x2 = 0; + //if (y2 < 0) y2 = 0; + + //buf.clear(); + if (x1 >= 0 && x1 <= 255 && y1 >= 0 && y1 <= 255 && x2 >= 0 && x2 <= 255 && y2 + +>= 0 && x2 <= 255){ + //buf.append("!lb"); // fast binary method + //buf.append((char) 4 ); // write 4 bytes + //buf.append((char) x1 ); + //buf.append((char) y1 ); + //buf.append((char) x2 ); + //buf.append((char) y2 ); + + serial.printf("!lb%c%c%c%c%c;", 4, x1, y1, x2, y2 ); + }else{ + //buf.append("!l"); // slow method .. so values > 255 + //buf.append( x1 ); + //buf.append("," ); + //buf.append( y1 ); + //buf.append("," ); + //buf.append( x2 ); + //buf.append("," ); + //buf.append( y2 ); + + serial.printf("!l%d,%d,%d,%d;", x1, y1, x2, y2); + } + //buf.append(";" ); + //System.out.print(buf.toString()); + + //CPU.delay(1); // ?? + } + + static void Plot(int x, int y) + { + //StringBuffer buf=new StringBuffer(16); + + //if (x < 0) x = 0; + //if (y < 0) y = 0; + + //buf.clear(); + if (x >= 0 && x <= 255 && y >= 0 && y <= 255){ + //buf.append("!pb"); // fast method .. so values <= 255 + //buf.append((char) 2 ); // write 2 bytes + //buf.append((char) x ); + //buf.append((char) y ); + + serial.printf("!pb%c%c%c;", 2, x, y); + }else{ + //buf.append("!p"); // slow method .. so values > 255 + //buf.append( x ); + //buf.append("," ); + //buf.append( y ); + + serial.printf("!p%d,%d;", x, y); + } + //buf.append(";" ); + //System.out.print(buf.toString()); + + //CPU.delay(1); // ?? + } + + + static void DrawGrid(int a, int b, int c, int d, int e, int f) + { + //StringBuffer buf=new StringBuffer(36); + + //buf.clear(); + //buf.append("!ab"); // fast binary method + //buf.append((char) 6 ); // write 6 bytes + //buf.append((char) a ); // xspace + //buf.append((char) b ); // yspace + //buf.append((char) c ); // xlines + //buf.append((char) d ); // ylines + //buf.append((char) e ); // xoffset + //buf.append((char) f ); // yoffset + //buf.append(";" ); + //System.out.print(buf.toString()); + + serial.printf("!ab%c%c%c%c%c%c%c;", 6, a, b, c, d, e, f ); + + //CPU.delay(1); // ?? + } + + static void ClearScreen() + { + serial.printf("!c;"); + } + + // shortcut: Cmd("!c;"); or Cmd("?O;"); + + static void Cmd(char *p) + { + serial.printf(p); + } + + // for "!nSpeech;" or "!Llog file;" + + static void CmdStr(char cmd, char *p ) + { + //buf.clear(); + //buf.append("!"); + //buf.append( cmd ); + //buf.append( p ); + //buf.append(";" ); + //System.out.print(buf.toString()); + + serial.printf("!%c%s;", cmd, p); + } + + // cmd with no argument so Cmd0('s'); = "!s;" + + static void Cmd0(char cmd ) + { + //buf.clear(); + //buf.append("!"); + //buf.append( cmd ); + //buf.append(";" ); + //System.out.print(buf.toString()); + + serial.printf("!%c;", cmd); + } + + // request with no arguments + // Req0( 'm' ); = "?m;" + + static void Req0(char req ) + { + //buf.clear(); + //buf.append("?"); + //buf.append( req ); + //buf.append(";" ); + //System.out.print(buf.toString()); + + serial.printf("?%c;", req ); + } + + // cmd with 1 arg Cmd1('a' , 1 ); = "!a1;" + + static void Cmd1(char cmd, int arg1 ) + { + //buf.clear(); + //buf.append("!"); + //buf.append( cmd ); + if (arg1 < 256){ + //buf.append( 'b' ); // binary mode + //buf.append((char) 1 ); // 1 argument + //buf.append((char) arg1 ); + + serial.printf("!%cb%c%c;", cmd, 1, arg1 ); + }else{ + //buf.append( arg1 ); // slow ascii mode + + serial.printf("!%c%d;", cmd, arg1 ); + } + //buf.append(";" ); + //System.out.print(buf.toString()); + } + + // cmd with 2 args Cmd2('G', 20, 1); = "!G20,1;" + // plot = Cmd2( 'p', x, y ); + + static void Cmd2(char cmd, int arg1, int arg2 ) + { + //buf.clear(); + //buf.append("!" ); // ! + //buf.append( cmd ); + if (arg1 < 255 && arg2 < 255){ + //buf.append( 'b' ); // binary mode + //buf.append((char) 2 ); // 2 arguments + //buf.append((char) arg1 ); + //buf.append((char) arg2 ); + + serial.printf("!%cb%c%c%c;", cmd, 2, arg1, arg2 ); + }else{ + //buf.append( arg1 ); // slow ascii mode + //buf.append("," ); + //buf.append( arg2 ); + + serial.printf("!%c%d,%d;", cmd, arg1, arg2 ); + } + //buf.append(";" ); + //System.out.print(buf.toString()); + } + + // cmd with 3 args + // setcolor = Cmd3( 's', r, g, b ); + + static void Cmd3(char cmd, int arg1, int arg2, int arg3 ) + { + //buf.clear(); + //buf.append("!" ); // ! + //buf.append( cmd ); + if (arg1 < 255 && arg2 < 255 && arg3 < 255){ + //buf.append( 'b' ); // binary mode + //buf.append((char) 3 ); // 3 arguments + //buf.append((char) arg1 ); + //buf.append((char) arg2 ); + //buf.append((char) arg3 ); + + serial.printf("!%cb%c%c%c%c;", cmd, 3, arg1, arg2, arg3 ); + }else{ + //buf.append( arg1 ); // slow ascii mode + //buf.append("," ); + //buf.append( arg2 ); + //buf.append("," ); + //buf.append( arg3 ); + + serial.printf("!%c%d,%d,%d;", cmd, arg1, arg2, arg3 ); + } + //buf.append(";" ); + //System.out.print(buf.toString()); + } + + // cmd with 4 args + // line = Cmd4( 'l', x1, y1, x2, y2); + + static void Cmd4(char cmd, int arg1, int arg2, int arg3, int arg4 ) + { + //buf.clear(); + //buf.append("!" ); // ! + //buf.append( cmd ); + if (arg1 < 255 && arg2 < 255 && arg3 < 255 && arg4 < 255){ + //buf.append( 'b' ); // binary mode + //buf.append((char) 4 ); // 4 arguments + //buf.append((char) arg1 ); + //buf.append((char) arg2 ); + //buf.append((char) arg3 ); + //buf.append((char) arg4 ); + + serial.printf("!%cb%c%c%c%c%c;", cmd, 4, arg1, arg2, arg3, arg4 ); + }else{ + //buf.append( arg1 ); // slow ascii mode + //buf.append("," ); + //buf.append( arg2 ); + //buf.append("," ); + //buf.append( arg3 ); + //buf.append("," ); + //buf.append( arg4 ); + + serial.printf("!%c%d,%d,%d,%d;", cmd, arg1, arg2, arg3, arg4 ); + } + //buf.append(";" ); + //System.out.print(buf.toString()); + } + + // play video, mp3 or picture + + static void Media(char *p) + { + //buf.clear(); + //buf.append("!V"); + //buf.append( p ); + //buf.append(";" ); + //System.out.print(buf.toString()); + + serial.printf("!V%s;", p); + } + + static void Speech(char *p) + { + //buf.clear(); + //buf.append("!n"); + //buf.append( p ); + //buf.append(";" ); + //System.out.print(buf.toString()); + + serial.printf("!n%s;", p); + } + + static void Log(char *p) + { + //buf.clear(); + //buf.append("!L"); + //buf.append( p ); + //buf.append(";" ); + //System.out.print(buf.toString()); + + serial.printf("!L%s;", p); + } + + static void ScrollLeft() + { + serial.printf("!G20,1;"); + } + +/* + static void DrawGrid(int a, int b, int c, int d, int e, int f) + { + //StringBuffer buf=new StringBuffer(36); + + //buf.clear(); + //buf.append("!ab"); // fast binary method + //buf.append((char) 6 ); // write 6 bytes + //buf.append((char) a ); // xspace + //buf.append((char) b ); // yspace + //buf.append((char) c ); // xlines + //buf.append((char) d ); // ylines + //buf.append((char) e ); // xoffset + //buf.append((char) f ); // yoffset + //buf.append(";" ); + + //System.out.print(buf.toString()); + + serial.printf("!ab%c%c%c%c%c%c%c;", 6, a, b, c, d, e, f ); + + //CPU.delay(1); // ?? + } +*/ + + /* + static void initpins() { + // OUTPUT dischargecap 'capacitor reset p 15 + // LOW dischargecap 'disable p 15 + + // OUTPUT chargecap 'capacitor charge p 14 + // HIGH chargecap 'disable p 14 + + // INPUT chanblow 'channel b p 12 + // INPUT chanalow 'channel a p 13 + // INPUT chanbhigh 'channel b high p 10 + // INPUT chanahigh 'channel a high p 11 + + CPU.setInput (CPU.pins[10]); // chan b high opamp + CPU.setInput (CPU.pins[11]); // chan a high opamp + CPU.setInput (CPU.pins[12]); // chan b low opamp + CPU.setInput (CPU.pins[13]); // chan a low opamp + + CPU.setOutput(CPU.pins[14]); // charge cap pin + CPU.setOutput(CPU.pins[15]); // discarge cap pin + + CPU.writePin (CPU.pins[15] , false ); + CPU.writePin (CPU.pins[14] , true ); + } + + + // interface with ltc1298 chip + + // static int gEnablePin; // speedup ? + // static int gClockPin; + // static int gDataPin; + + static void initadc(int dataPin, int clockPin, int enablePin){ + + //gEnablePin = CPU.pins[enablePin]; // speedup ? + //gClockPin = CPU.pins[clockPin]; + //gDataPin = CPU.pins[dataPin]; + + CPU.writePin(CPU.pins[enablePin],false); // init the bus + CPU.writePin(CPU.pins[clockPin ],false); + CPU.delay(100); // settle down + CPU.writePin(CPU.pins[enablePin],false); + CPU.writePin(CPU.pins[enablePin],true ); + + //CPU.writePin(CPU.pins[dataPin ],false ); // test + //Serial.print(CPU.pins[ 1 ]); // just adds one ? + } + + static int readadc(int dataPin, int clockPin, int enablePin, int channel, int + +mode){ + + int command, readSize; + int clockIn; + + if (channel == 0) command = 0x1a; // %11010 read ch0 (pin2) + else command = 0x1e; // %11110 read ch1 (pin3) + + readSize = 12; // Bytes to Read on the LTC1298 + //resolution = 4096; // Range of the LTC1298 + //clockIn = 1000; + + CPU.writePin(CPU.pins[enablePin],false); + // set port + CPU.shiftOut(CPU.pins[dataPin],CPU.pins[clockPin],5,CPU.SHIFT_MSB,(command << + +11)); + // read the value + clockIn = + +CPU.shiftIn(CPU.pins[dataPin],CPU.pins[clockPin],readSize,CPU.PRE_CLOCK_MSB); + CPU.writePin(CPU.pins[enablePin],true); + + //CPU.delay(100); + //CPU.writePin(CPU.pins[dataPin],false ); // test + //CPU.setInput(dataPin); + + + if (mode == 0){ // low + clockIn = clockIn - (2048-128); + }else{ + if (mode == 1){ // high + //clockIn = clockIn / 16; // make 8 bits from 12 + clockIn = clockIn >> 4; // make 8 bits from 12 + }else{ // gnd + clockIn = 128; + } + } + + // Serial.print("v:"); + // Serial.print(channel); + // Serial.print(","); + // Serial.print(clockIn); + // Serial.println(""); + + return clockIn; + } + */ + + + /* + static int measure(int channel, int mode) { + int e, time; + + if (channel == 0){ // chan a + if (mode == 0){ + e = 13; // a low + }else{ + if (mode == 1){ + e = 11; // a high + }else{ + return 128; // gnd + } + } + }else{ // chan b + if (mode == 0){ + e = 12; // b low + }else{ + if (mode == 1){ + e = 10; // b high + }else{ + return 128; // gnd + } + } + } + + // PULSOUT dischargecap, 10 '2uS units -> 20uS + + //CPU.writePin(CPU.pins[15] , 1 ); // discharge cap + //CPU.delay( 1 ); + //CPU.writePin(CPU.pins[15] , 0 ); + CPU.pulseOut(2, CPU.pins[15] ); // 2 x 8.7 = 17 uS + + // LOW chargecap 'start charge + // RCTIME chanahigh, 0 , val 'PULSIN + // HIGH chargecap 'stop charge + + CPU.writePin(CPU.pins[14] , false ); + time = CPU.rcTime( 1000 ,CPU.pins[ e ], true ); // 8.68 uS units (0-200uS) + CPU.writePin(CPU.pins[14] , true ); + + //CPU.readPin( CPU.pins[e]); // switch back to input + time = time << 3; // resolution 8 times lower as basic stamp + + return time; + } + */ + + +#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; + + //StringBuffer serbuf = new StringBuffer(80); + + //mem = new int [10]; + + InitStampdock(); + + serial.printf("demo running .. \r\n"); + + + + for (cnt = 0; cnt < 100; cnt++){ + SetValue(cnt, 0); + } + + Cmd("!j0,250,0,0;"); // LED 0 to red + Cmd("!j1,0,250,0;"); // LED 1 to green + Cmd("!j2,0,0,250;"); // LED 2 to blue + Cmd("!j3,4;"); // LED 3 to white + + Cmd4( 'j', 0, 250, 0, 0 ); // LED 0 to red + + SetColor(100,100,200); + ClearScreen(); // clear graph + + SetColor(128,128,228); + DrawGrid(20,20,29,19,55,12); + + SetColor(0,0,0); // black + for (cnt = 0; cnt < 20; cnt++){ + + x1 = cnt * 10; + y1 = 15; + + Plot(x1, y1); + } + + for (cnt = 0; cnt < 20; cnt++){ + x1 = 10 * cnt; + x2 = 15 * cnt; + y1 = 20; + y2 = 40; + DrawLine(x1,y1,x2,y2); + } + + Cmd("!f12;"); // set greyscale value 12 + Cmd("!r60,60,100,100;"); // draw rectangle + + Cmd("!h10,70;"); // set draw position to home or 10,70 + Cmd("!g50;"); // draw grey pixel and increase + Cmd("!g100;"); // draw grey pixel and increase + Cmd("!g150;"); // draw grey pixel and increase + Cmd("!g200;"); // draw grey pixel and increase + Cmd("!w10;"); // draw 10 white pixels and increase + 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 + + serial.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 + + serial.printf("%c", x ); + } + + //serbuf.append(";"); // end poly line cmd + //System.out.print(serbuf.toString()); + serial.printf(";"); + + + // do some file access + + Cmd("!Otempfile.txt;"); // open file for writing + Cmd("!e12,24,48,96;"); // write some values + Cmd("!O;"); // close file + + Cmd("?Otempfile.txt;"); // open file for reading + ReadByte(); + ReadByte(); + ReadByte(); + s = ReadByte(); // read LSB size of file + serial.printf("file is "); + serial.printf( "%d", s ); + serial.printf(" bytes.\r\n"); + + serial.printf("read values: "); + for (cnt = 0; cnt < s; cnt++){ + Cmd("?e;"); // read a byte + x = ReadByte(); + serial.printf( "%d", x ); + serial.printf(","); + } + serial.printf("\r\n"); + Cmd("?O;"); // close file + ReadByte(); + + + serial.printf("ticks is: "); + Cmd("?t0;"); // request ticks + for (cnt = 0; cnt < 4; cnt++){ + mem[cnt] = (int) ReadByte(); + } + for (cnt = 0; cnt < 4; cnt++){ + serial.printf( "%d", mem[cnt] ); + serial.printf(","); + } + serial.printf("\r\n"); + + + + serial.printf("time: y2 y1 mon day hour min sec tic : "); + Cmd("?t1;"); // request time + for (cnt = 0; cnt < 8; cnt++){ + mem[cnt] = ReadByte(); + } + for (cnt = 0; cnt < 8; cnt++){ + serial.printf( "%d", mem[cnt] ); + serial.printf(","); + } + serial.printf("\r\n"); + + // for (cnt = 0; cnt < 50; cnt++) + // Cmd2( 'G', 20, 1 ); // do "!G20,1;" + + + Cmd("!nThis is a speech test.;"); + + Cmd("!LThis is a log file test;"); + + Cmd("!Vmedia/video.mpg;"); + wait( 1.1 ); // CPU.delay(1000); + Cmd("!Vmedia/sound.mp3;"); + wait (1.1); // CPU.delay(1000); + Cmd("!Vmedia/pic.jpg;"); + + while (true){ + if (ecnt == 2){ // test speed up + x = 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 = 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;"); + SetColor(100,100,200); + ClearScreen(); + } else + + if (x == 10){ // checkmark 0 + SetValue(12, s); // set checkmark 2 + } else + if (x == 11){ // checkmark 1 + SetValue(13, s); // set checkmark 3 + } else + + if (x == 20){ // hor switch 0 + SetValue(21, s); // set hor switch 1 + } else + if (x == 21){ // hor switch1 + SetValue(20, s); // set hor switch 0 + } else + + if (x == 40){ // hor potm 0 + SetValue(41, s); // hor potm 1 + SetValue(60, s); // set analog meter + } else + if (x == 41){ // hor potm 1 + SetValue(40, s); // hor potm 0 + SetValue(61, s); // set analog meter + } else + + if (x == 100){ // turn knob 0 + SetValue(101, s); // turn knob 1 + } else + if (x == 101){ // turn knob 1 + SetValue(100, s); // turn knob 0 + } else + + if (x == 90){ // button 1 + ScrollLeft(); // scroll left 1 pixel + } + + + } // if event + + wait(0.1); // CPU.delay(100); + + // do .. + + + } // end while true + } // end main + + + + + //} // class demo \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Nov 02 15:29:20 2010 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/e2ac27c8e93e