Eric Fossum
/
STN1110Terminal
This is a simple program that will pass communications from the STN1110 to the mBed USB port.
main.cpp@0:a940e05190bc, 2013-03-19 (annotated)
- Committer:
- fossum_13
- Date:
- Tue Mar 19 20:10:45 2013 +0000
- Revision:
- 0:a940e05190bc
initial release
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
fossum_13 | 0:a940e05190bc | 1 | #include "mbed.h" |
fossum_13 | 0:a940e05190bc | 2 | |
fossum_13 | 0:a940e05190bc | 3 | Serial STN(p28, p27); |
fossum_13 | 0:a940e05190bc | 4 | Serial pc(USBTX, USBRX); |
fossum_13 | 0:a940e05190bc | 5 | |
fossum_13 | 0:a940e05190bc | 6 | long STNBAUD = 9600; |
fossum_13 | 0:a940e05190bc | 7 | long PCBAUD = 38400; |
fossum_13 | 0:a940e05190bc | 8 | |
fossum_13 | 0:a940e05190bc | 9 | void flushSerialBuffer(Serial *port); |
fossum_13 | 0:a940e05190bc | 10 | |
fossum_13 | 0:a940e05190bc | 11 | int main() { |
fossum_13 | 0:a940e05190bc | 12 | // Configure PC BAUD |
fossum_13 | 0:a940e05190bc | 13 | pc.baud(PCBAUD); |
fossum_13 | 0:a940e05190bc | 14 | |
fossum_13 | 0:a940e05190bc | 15 | // Setup STN1110 UART |
fossum_13 | 0:a940e05190bc | 16 | pc.printf("Configuring STN UART\r\n"); |
fossum_13 | 0:a940e05190bc | 17 | STN.baud(STNBAUD); |
fossum_13 | 0:a940e05190bc | 18 | |
fossum_13 | 0:a940e05190bc | 19 | // Get to a prompt |
fossum_13 | 0:a940e05190bc | 20 | bool prompt = false; |
fossum_13 | 0:a940e05190bc | 21 | while(!prompt) { |
fossum_13 | 0:a940e05190bc | 22 | // Attempt communication |
fossum_13 | 0:a940e05190bc | 23 | pc.printf("STN not ready\r\n"); |
fossum_13 | 0:a940e05190bc | 24 | STN.printf("\r"); |
fossum_13 | 0:a940e05190bc | 25 | wait(1); |
fossum_13 | 0:a940e05190bc | 26 | |
fossum_13 | 0:a940e05190bc | 27 | // Did we get a prompt? |
fossum_13 | 0:a940e05190bc | 28 | while (STN.readable()) { |
fossum_13 | 0:a940e05190bc | 29 | if (STN.getc() == '>') { |
fossum_13 | 0:a940e05190bc | 30 | prompt = true; |
fossum_13 | 0:a940e05190bc | 31 | flushSerialBuffer(&STN); |
fossum_13 | 0:a940e05190bc | 32 | } |
fossum_13 | 0:a940e05190bc | 33 | } |
fossum_13 | 0:a940e05190bc | 34 | } |
fossum_13 | 0:a940e05190bc | 35 | |
fossum_13 | 0:a940e05190bc | 36 | // Attempt BAUD rate change |
fossum_13 | 0:a940e05190bc | 37 | STN.printf("ATZ\r"); |
fossum_13 | 0:a940e05190bc | 38 | pc.printf("STN BAUD == %d\r\n", STNBAUD); |
fossum_13 | 0:a940e05190bc | 39 | |
fossum_13 | 0:a940e05190bc | 40 | // Start terminal communication |
fossum_13 | 0:a940e05190bc | 41 | while(1) { |
fossum_13 | 0:a940e05190bc | 42 | if(STN.readable()) { |
fossum_13 | 0:a940e05190bc | 43 | char c = STN.getc(); |
fossum_13 | 0:a940e05190bc | 44 | pc.putc(c); |
fossum_13 | 0:a940e05190bc | 45 | if (c == '\r') |
fossum_13 | 0:a940e05190bc | 46 | pc.putc('\n'); |
fossum_13 | 0:a940e05190bc | 47 | } |
fossum_13 | 0:a940e05190bc | 48 | if(pc.readable()) { |
fossum_13 | 0:a940e05190bc | 49 | char c = pc.getc(); |
fossum_13 | 0:a940e05190bc | 50 | STN.putc(c); |
fossum_13 | 0:a940e05190bc | 51 | } |
fossum_13 | 0:a940e05190bc | 52 | } |
fossum_13 | 0:a940e05190bc | 53 | } |
fossum_13 | 0:a940e05190bc | 54 | |
fossum_13 | 0:a940e05190bc | 55 | // Clears the Serial port buffer so we can get to new messages |
fossum_13 | 0:a940e05190bc | 56 | void flushSerialBuffer(Serial *port) { |
fossum_13 | 0:a940e05190bc | 57 | while ((*port).readable()) { |
fossum_13 | 0:a940e05190bc | 58 | (*port).getc(); |
fossum_13 | 0:a940e05190bc | 59 | } |
fossum_13 | 0:a940e05190bc | 60 | return; |
fossum_13 | 0:a940e05190bc | 61 | } |