ec fan
/
ec19d_test
eConais EC19D AT command test serial interface, machine mode
main.cpp@0:661c91abde03, 2014-08-12 (annotated)
- Committer:
- ecfan
- Date:
- Tue Aug 12 06:54:38 2014 +0000
- Revision:
- 0:661c91abde03
1st build;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ecfan | 0:661c91abde03 | 1 | /* |
ecfan | 0:661c91abde03 | 2 | * eConais EC19D01 |
ecfan | 0:661c91abde03 | 3 | * AT command test |
ecfan | 0:661c91abde03 | 4 | * serial interface, machine mode |
ecfan | 0:661c91abde03 | 5 | */ |
ecfan | 0:661c91abde03 | 6 | |
ecfan | 0:661c91abde03 | 7 | #include "mbed.h" |
ecfan | 0:661c91abde03 | 8 | |
ecfan | 0:661c91abde03 | 9 | DigitalOut led1(LED1), led2(LED2); |
ecfan | 0:661c91abde03 | 10 | Serial pc(USBTX, USBRX); |
ecfan | 0:661c91abde03 | 11 | Serial ec(p9, p10); |
ecfan | 0:661c91abde03 | 12 | DigitalOut rts(p11), exton(p16); |
ecfan | 0:661c91abde03 | 13 | DigitalIn cts(p12); |
ecfan | 0:661c91abde03 | 14 | |
ecfan | 0:661c91abde03 | 15 | void command (char *cmd) { |
ecfan | 0:661c91abde03 | 16 | int num, len = 0; |
ecfan | 0:661c91abde03 | 17 | char *buf; |
ecfan | 0:661c91abde03 | 18 | char c; |
ecfan | 0:661c91abde03 | 19 | |
ecfan | 0:661c91abde03 | 20 | if (strncmp(cmd, "AT", 2)) return; |
ecfan | 0:661c91abde03 | 21 | |
ecfan | 0:661c91abde03 | 22 | num = atoi(&cmd[2]); |
ecfan | 0:661c91abde03 | 23 | buf = strstr(cmd, ","); |
ecfan | 0:661c91abde03 | 24 | if (buf) { |
ecfan | 0:661c91abde03 | 25 | buf ++; |
ecfan | 0:661c91abde03 | 26 | len = strlen(buf); |
ecfan | 0:661c91abde03 | 27 | } |
ecfan | 0:661c91abde03 | 28 | printf("\r\nAT %d %d '%s'\r\n", num, len, buf); |
ecfan | 0:661c91abde03 | 29 | |
ecfan | 0:661c91abde03 | 30 | rts = 1; |
ecfan | 0:661c91abde03 | 31 | for (;;) { |
ecfan | 0:661c91abde03 | 32 | if (ec.readable()) { |
ecfan | 0:661c91abde03 | 33 | c = ec.getc(); |
ecfan | 0:661c91abde03 | 34 | if (c >= 0x20 && c < 0x80) { |
ecfan | 0:661c91abde03 | 35 | pc.putc(c); |
ecfan | 0:661c91abde03 | 36 | } else { |
ecfan | 0:661c91abde03 | 37 | pc.printf(" %02x ",c); |
ecfan | 0:661c91abde03 | 38 | } |
ecfan | 0:661c91abde03 | 39 | if (c == 'Y') break; |
ecfan | 0:661c91abde03 | 40 | } |
ecfan | 0:661c91abde03 | 41 | } |
ecfan | 0:661c91abde03 | 42 | ec.printf("%c%c%c", num, len & 0xff, (len >> 8) & 0xff); |
ecfan | 0:661c91abde03 | 43 | |
ecfan | 0:661c91abde03 | 44 | if (len) { |
ecfan | 0:661c91abde03 | 45 | for (;;) { |
ecfan | 0:661c91abde03 | 46 | if (ec.readable()) { |
ecfan | 0:661c91abde03 | 47 | c = ec.getc(); |
ecfan | 0:661c91abde03 | 48 | if (c >= 0x20 && c < 0x80) { |
ecfan | 0:661c91abde03 | 49 | pc.putc(c); |
ecfan | 0:661c91abde03 | 50 | } else { |
ecfan | 0:661c91abde03 | 51 | pc.printf(" %02x ",c); |
ecfan | 0:661c91abde03 | 52 | } |
ecfan | 0:661c91abde03 | 53 | if (c == 'T') break; |
ecfan | 0:661c91abde03 | 54 | } |
ecfan | 0:661c91abde03 | 55 | } |
ecfan | 0:661c91abde03 | 56 | ec.printf("%s", buf); |
ecfan | 0:661c91abde03 | 57 | } |
ecfan | 0:661c91abde03 | 58 | rts = 0; |
ecfan | 0:661c91abde03 | 59 | pc.printf("\r\n----\r\n"); |
ecfan | 0:661c91abde03 | 60 | } |
ecfan | 0:661c91abde03 | 61 | |
ecfan | 0:661c91abde03 | 62 | int main() { |
ecfan | 0:661c91abde03 | 63 | char buf[80]; |
ecfan | 0:661c91abde03 | 64 | int count = 0; |
ecfan | 0:661c91abde03 | 65 | unsigned char c; |
ecfan | 0:661c91abde03 | 66 | |
ecfan | 0:661c91abde03 | 67 | rts = 0; |
ecfan | 0:661c91abde03 | 68 | pc.baud(115200); |
ecfan | 0:661c91abde03 | 69 | ec.baud(115200); |
ecfan | 0:661c91abde03 | 70 | exton = 1; |
ecfan | 0:661c91abde03 | 71 | wait_ms(100); |
ecfan | 0:661c91abde03 | 72 | exton = 0; |
ecfan | 0:661c91abde03 | 73 | wait_ms(300); |
ecfan | 0:661c91abde03 | 74 | |
ecfan | 0:661c91abde03 | 75 | led1 = 1; |
ecfan | 0:661c91abde03 | 76 | while(1) { |
ecfan | 0:661c91abde03 | 77 | if (ec.readable()) { |
ecfan | 0:661c91abde03 | 78 | c = ec.getc(); |
ecfan | 0:661c91abde03 | 79 | if ((c >= 0x20 && c < 0x80) || c == '\r' || c == '\n') { |
ecfan | 0:661c91abde03 | 80 | pc.putc(c); |
ecfan | 0:661c91abde03 | 81 | } else { |
ecfan | 0:661c91abde03 | 82 | pc.printf(" %02x ",c); |
ecfan | 0:661c91abde03 | 83 | } |
ecfan | 0:661c91abde03 | 84 | } |
ecfan | 0:661c91abde03 | 85 | |
ecfan | 0:661c91abde03 | 86 | if (pc.readable()) { |
ecfan | 0:661c91abde03 | 87 | c = pc.getc(); |
ecfan | 0:661c91abde03 | 88 | if (c == '\r' || c == '\n') { |
ecfan | 0:661c91abde03 | 89 | if (count) { |
ecfan | 0:661c91abde03 | 90 | buf[count] = 0; |
ecfan | 0:661c91abde03 | 91 | led2 = 1; |
ecfan | 0:661c91abde03 | 92 | command(buf); |
ecfan | 0:661c91abde03 | 93 | led2 = 0; |
ecfan | 0:661c91abde03 | 94 | } |
ecfan | 0:661c91abde03 | 95 | count = 0; |
ecfan | 0:661c91abde03 | 96 | } else |
ecfan | 0:661c91abde03 | 97 | if (count < 79) { |
ecfan | 0:661c91abde03 | 98 | buf[count++] = c; |
ecfan | 0:661c91abde03 | 99 | pc.putc(c); |
ecfan | 0:661c91abde03 | 100 | } |
ecfan | 0:661c91abde03 | 101 | } |
ecfan | 0:661c91abde03 | 102 | } |
ecfan | 0:661c91abde03 | 103 | } |