Geodesic Light Dome Controller Program

Dependencies:   mbed

Committer:
lolpcc
Date:
Wed Mar 24 09:06:23 2010 +0000
Revision:
1:dc58f0b0eeec
Parent:
0:a7af7ec8b12f

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lolpcc 0:a7af7ec8b12f 1 #include "mbed.h"
lolpcc 0:a7af7ec8b12f 2 #include "useful.h"
lolpcc 0:a7af7ec8b12f 3
lolpcc 0:a7af7ec8b12f 4 Serial rs232(p13, p14); // tx, rx
lolpcc 0:a7af7ec8b12f 5 /******************************************/
lolpcc 0:a7af7ec8b12f 6 /* */
lolpcc 0:a7af7ec8b12f 7 /* Test the RS232 interface */
lolpcc 0:a7af7ec8b12f 8 /* Should send and recieve data on the */
lolpcc 0:a7af7ec8b12f 9 /* serial port, send a string, and get */
lolpcc 0:a7af7ec8b12f 10 /* back what is returned from the RX */
lolpcc 0:a7af7ec8b12f 11 /* */
lolpcc 0:a7af7ec8b12f 12 /******************************************/
lolpcc 0:a7af7ec8b12f 13 void rs232_opener(void)
lolpcc 0:a7af7ec8b12f 14 {
lolpcc 0:a7af7ec8b12f 15 rs232.baud(9600);
lolpcc 0:a7af7ec8b12f 16 rs232.printf("\n\r");
lolpcc 0:a7af7ec8b12f 17 rs232.printf("Dome Controler\n\r");
lolpcc 0:a7af7ec8b12f 18 rs232.printf("\n\rCMD > ");
lolpcc 0:a7af7ec8b12f 19 }
lolpcc 0:a7af7ec8b12f 20
lolpcc 0:a7af7ec8b12f 21 void rs232_output_string(char *buf)
lolpcc 0:a7af7ec8b12f 22 {
lolpcc 0:a7af7ec8b12f 23 int a = 0;
lolpcc 0:a7af7ec8b12f 24 while(a != strlen(buf)){
lolpcc 0:a7af7ec8b12f 25 rs232.putc(buf[a]);
lolpcc 0:a7af7ec8b12f 26 if(buf[a]=='\n')
lolpcc 0:a7af7ec8b12f 27 rs232.putc('\r');
lolpcc 0:a7af7ec8b12f 28 a++;
lolpcc 0:a7af7ec8b12f 29 }
lolpcc 0:a7af7ec8b12f 30 }
lolpcc 0:a7af7ec8b12f 31
lolpcc 0:a7af7ec8b12f 32 int rs232_readable(void)
lolpcc 0:a7af7ec8b12f 33 {
lolpcc 0:a7af7ec8b12f 34 return(rs232.readable());
lolpcc 0:a7af7ec8b12f 35 }
lolpcc 0:a7af7ec8b12f 36
lolpcc 0:a7af7ec8b12f 37 int rs232_gets(char *s,int len)
lolpcc 0:a7af7ec8b12f 38 {
lolpcc 0:a7af7ec8b12f 39 char c;
lolpcc 0:a7af7ec8b12f 40 int cnt=0;
lolpcc 0:a7af7ec8b12f 41
lolpcc 0:a7af7ec8b12f 42 while ((c = rs232.getc()) != 0) {
lolpcc 0:a7af7ec8b12f 43 if ((c == 0x0a) || (c==0x0d)) {
lolpcc 0:a7af7ec8b12f 44 rs232.printf("\n\r");
lolpcc 0:a7af7ec8b12f 45 *s++ = '\0';
lolpcc 0:a7af7ec8b12f 46 return(cnt); /* Return length */
lolpcc 0:a7af7ec8b12f 47 } else if (c==0x7f) { /* Delete */
lolpcc 0:a7af7ec8b12f 48 rs232.putc(0x08);
lolpcc 0:a7af7ec8b12f 49 rs232.putc(0x20);
lolpcc 0:a7af7ec8b12f 50 rs232.putc(0x08);
lolpcc 0:a7af7ec8b12f 51 cnt--;
lolpcc 0:a7af7ec8b12f 52 *s--;
lolpcc 0:a7af7ec8b12f 53 } else if (c==0x08) { /* BS */
lolpcc 0:a7af7ec8b12f 54 rs232.putc(0x08);
lolpcc 0:a7af7ec8b12f 55 rs232.putc(0x20);
lolpcc 0:a7af7ec8b12f 56 rs232.putc(0x08);
lolpcc 0:a7af7ec8b12f 57 cnt--;
lolpcc 0:a7af7ec8b12f 58 *s--;
lolpcc 0:a7af7ec8b12f 59 } else if (c==025) { /* CTRL-U */
lolpcc 0:a7af7ec8b12f 60 while (cnt!=0) {
lolpcc 0:a7af7ec8b12f 61 rs232.putc(0x08);
lolpcc 0:a7af7ec8b12f 62 rs232.putc(0x20);
lolpcc 0:a7af7ec8b12f 63 rs232.putc(0x08);
lolpcc 0:a7af7ec8b12f 64 cnt--;
lolpcc 0:a7af7ec8b12f 65 *s--;
lolpcc 0:a7af7ec8b12f 66 }
lolpcc 0:a7af7ec8b12f 67 } else {
lolpcc 0:a7af7ec8b12f 68 *s++ = c;
lolpcc 0:a7af7ec8b12f 69 rs232.putc(c);
lolpcc 0:a7af7ec8b12f 70 cnt++;
lolpcc 0:a7af7ec8b12f 71 }
lolpcc 0:a7af7ec8b12f 72 }
lolpcc 0:a7af7ec8b12f 73 return(cnt);
lolpcc 0:a7af7ec8b12f 74 }
lolpcc 0:a7af7ec8b12f 75
lolpcc 0:a7af7ec8b12f 76 /******************************************/
lolpcc 0:a7af7ec8b12f 77 /* */
lolpcc 0:a7af7ec8b12f 78 /* Set the baud rate of the serial line */
lolpcc 0:a7af7ec8b12f 79 /* from the command line input */
lolpcc 0:a7af7ec8b12f 80 /* */
lolpcc 0:a7af7ec8b12f 81 /******************************************/
lolpcc 0:a7af7ec8b12f 82 #define BAUD_NUMBER 10
lolpcc 0:a7af7ec8b12f 83 void baud_rate(int c, char **a)
lolpcc 0:a7af7ec8b12f 84 {
lolpcc 0:a7af7ec8b12f 85 int b,cnt;
lolpcc 0:a7af7ec8b12f 86 int v[BAUD_NUMBER] = {300,600,1200,2400,4800,9600,19200,38400,57600,15200};
lolpcc 0:a7af7ec8b12f 87
lolpcc 0:a7af7ec8b12f 88 b = atoi(a[1]);
lolpcc 0:a7af7ec8b12f 89 cnt = 0;
lolpcc 0:a7af7ec8b12f 90 while(cnt < BAUD_NUMBER){
lolpcc 0:a7af7ec8b12f 91 if(v[cnt]==b){
lolpcc 0:a7af7ec8b12f 92 rs232.baud(b);
lolpcc 0:a7af7ec8b12f 93 return;
lolpcc 0:a7af7ec8b12f 94 }
lolpcc 0:a7af7ec8b12f 95 cnt++;
lolpcc 0:a7af7ec8b12f 96 }
lolpcc 0:a7af7ec8b12f 97 cnt=0;
lolpcc 0:a7af7ec8b12f 98 lprintf("Select a speed from ");
lolpcc 0:a7af7ec8b12f 99 while(cnt < BAUD_NUMBER){
lolpcc 0:a7af7ec8b12f 100 lprintf("%d ",v[cnt]);
lolpcc 0:a7af7ec8b12f 101 cnt++;
lolpcc 0:a7af7ec8b12f 102 }
lolpcc 0:a7af7ec8b12f 103 lprintf("\n\r");
lolpcc 0:a7af7ec8b12f 104 }
lolpcc 0:a7af7ec8b12f 105
lolpcc 0:a7af7ec8b12f 106 void serial_test(int c, char **a)
lolpcc 0:a7af7ec8b12f 107 {
lolpcc 0:a7af7ec8b12f 108 char ch;
lolpcc 0:a7af7ec8b12f 109
lolpcc 0:a7af7ec8b12f 110 rs232_output_string("Serial Test Routine\n\r");
lolpcc 0:a7af7ec8b12f 111
lolpcc 0:a7af7ec8b12f 112 while(1){
lolpcc 0:a7af7ec8b12f 113 ch = rs232.getc();
lolpcc 0:a7af7ec8b12f 114 printf("Got %c\n\r",ch);
lolpcc 0:a7af7ec8b12f 115 if(ch=='q')
lolpcc 0:a7af7ec8b12f 116 return;
lolpcc 0:a7af7ec8b12f 117 }
lolpcc 0:a7af7ec8b12f 118 }