Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed-os
Fork of z_compare_commands by
main.cpp@2:690dd6bdb9a7, 2018-01-05 (annotated)
- Committer:
- eawhite
- Date:
- Fri Jan 05 17:47:00 2018 +0000
- Revision:
- 2:690dd6bdb9a7
- Parent:
- 1:81f52f1beb21
- Child:
- 4:d03967db9991
new method of reading in PuTTY strings;
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| osmith2 | 0:f46e16e62b0c | 1 | //http://www.cplusplus.com/reference/cstring/strcmp/ |
| osmith2 | 0:f46e16e62b0c | 2 | |
| osmith2 | 0:f46e16e62b0c | 3 | #include "mbed.h" |
| eawhite | 2:690dd6bdb9a7 | 4 | #include <iostream> |
| eawhite | 2:690dd6bdb9a7 | 5 | #include <string> |
| eawhite | 2:690dd6bdb9a7 | 6 | #include <stdio.h> |
| eawhite | 2:690dd6bdb9a7 | 7 | #include <ctype.h> |
| osmith2 | 0:f46e16e62b0c | 8 | |
| eawhite | 2:690dd6bdb9a7 | 9 | //Digital outputs |
| eawhite | 2:690dd6bdb9a7 | 10 | DigitalOut onBoardLED(LED2); |
| eawhite | 2:690dd6bdb9a7 | 11 | DigitalOut redLED(PE_15); |
| eawhite | 2:690dd6bdb9a7 | 12 | DigitalOut yellowLED(PB_10); |
| eawhite | 2:690dd6bdb9a7 | 13 | DigitalOut greenLED(PB_11); |
| eawhite | 2:690dd6bdb9a7 | 14 | |
| eawhite | 2:690dd6bdb9a7 | 15 | char rxBuffer[80]; |
| eawhite | 2:690dd6bdb9a7 | 16 | |
| eawhite | 2:690dd6bdb9a7 | 17 | char i = 0; |
| eawhite | 2:690dd6bdb9a7 | 18 | char c = 0; |
| eawhite | 2:690dd6bdb9a7 | 19 | |
| eawhite | 2:690dd6bdb9a7 | 20 | string key = "apple"; |
| osmith2 | 0:f46e16e62b0c | 21 | |
| osmith2 | 0:f46e16e62b0c | 22 | |
| eawhite | 2:690dd6bdb9a7 | 23 | RawSerial pc(USBTX, USBRX, 9600); |
| eawhite | 2:690dd6bdb9a7 | 24 | Thread serialRX(osPriorityNormal); |
| eawhite | 2:690dd6bdb9a7 | 25 | |
| eawhite | 2:690dd6bdb9a7 | 26 | // Rx Interupt routine |
| eawhite | 2:690dd6bdb9a7 | 27 | void Rx_interrupt(){ |
| eawhite | 2:690dd6bdb9a7 | 28 | pc.attach(NULL, Serial::RxIrq); // Disable Rx interrupt |
| eawhite | 2:690dd6bdb9a7 | 29 | serialRX.signal_set(0xA); // Set signal for Rx thread |
| eawhite | 2:690dd6bdb9a7 | 30 | } |
| osmith2 | 0:f46e16e62b0c | 31 | |
| eawhite | 2:690dd6bdb9a7 | 32 | // Read received chars from UART |
| eawhite | 2:690dd6bdb9a7 | 33 | void rx_thread(){ |
| eawhite | 2:690dd6bdb9a7 | 34 | while (true) { |
| eawhite | 2:690dd6bdb9a7 | 35 | Thread::signal_wait(0xA); |
| eawhite | 2:690dd6bdb9a7 | 36 | Thread::signal_clr(0xA); |
| eawhite | 2:690dd6bdb9a7 | 37 | //memset(rxBuffer, 0, sizeof(rxBuffer)); |
| eawhite | 2:690dd6bdb9a7 | 38 | while (pc.readable()) { |
| eawhite | 2:690dd6bdb9a7 | 39 | c = pc.getc(); |
| eawhite | 2:690dd6bdb9a7 | 40 | rxBuffer[i] = c; |
| eawhite | 2:690dd6bdb9a7 | 41 | i = i + 1; |
| eawhite | 2:690dd6bdb9a7 | 42 | yellowLED = !yellowLED; |
| eawhite | 2:690dd6bdb9a7 | 43 | } |
| eawhite | 2:690dd6bdb9a7 | 44 | |
| eawhite | 2:690dd6bdb9a7 | 45 | pc.attach(&Rx_interrupt); // Enable Rx interrupt |
| eawhite | 2:690dd6bdb9a7 | 46 | redLED = !redLED; |
| eawhite | 2:690dd6bdb9a7 | 47 | |
| eawhite | 2:690dd6bdb9a7 | 48 | |
| eawhite | 2:690dd6bdb9a7 | 49 | |
| eawhite | 2:690dd6bdb9a7 | 50 | if (c == '\r') { |
| eawhite | 2:690dd6bdb9a7 | 51 | greenLED = !greenLED; |
| eawhite | 2:690dd6bdb9a7 | 52 | string rxBufferSTR = rxBuffer; |
| eawhite | 2:690dd6bdb9a7 | 53 | int c = rxBufferSTR.length(); |
| eawhite | 2:690dd6bdb9a7 | 54 | rxBuffer[c-1] = NULL; // CR character. Probably not needed |
| eawhite | 2:690dd6bdb9a7 | 55 | //string str(rxBuffer); |
| eawhite | 2:690dd6bdb9a7 | 56 | //printf("rxBuffer: %s\n", rxBuffer); |
| eawhite | 2:690dd6bdb9a7 | 57 | //printf("rxBuffer is %u characters long\n", (unsigned)strlen(rxBuffer)); |
| eawhite | 2:690dd6bdb9a7 | 58 | |
| eawhite | 2:690dd6bdb9a7 | 59 | if (rxBufferSTR.find(key) != string::npos) { |
| eawhite | 2:690dd6bdb9a7 | 60 | pc.printf("Found"); |
| eawhite | 2:690dd6bdb9a7 | 61 | } |
| eawhite | 2:690dd6bdb9a7 | 62 | /* |
| eawhite | 2:690dd6bdb9a7 | 63 | if (strcmp (key,rxBuffer) == 0) { |
| eawhite | 2:690dd6bdb9a7 | 64 | puts ("Apple is delicious!\n"); |
| eawhite | 2:690dd6bdb9a7 | 65 | |
| eawhite | 2:690dd6bdb9a7 | 66 | pc.printf ("The command entered is %u characters long.\n",(unsigned)strlen(key)); |
| eawhite | 2:690dd6bdb9a7 | 67 | int i =0; |
| eawhite | 2:690dd6bdb9a7 | 68 | int keysize = (unsigned)strlen(key); |
| eawhite | 2:690dd6bdb9a7 | 69 | int endfor = keysize; |
| eawhite | 2:690dd6bdb9a7 | 70 | |
| eawhite | 2:690dd6bdb9a7 | 71 | //check for number here |
| eawhite | 2:690dd6bdb9a7 | 72 | |
| eawhite | 2:690dd6bdb9a7 | 73 | for(i=0; i<10; i++) { |
| eawhite | 2:690dd6bdb9a7 | 74 | pc.printf("%c", rxBuffer[i]); |
| eawhite | 2:690dd6bdb9a7 | 75 | } |
| eawhite | 2:690dd6bdb9a7 | 76 | |
| eawhite | 2:690dd6bdb9a7 | 77 | } else { |
| eawhite | 2:690dd6bdb9a7 | 78 | puts ("try again loser!\n"); |
| eawhite | 2:690dd6bdb9a7 | 79 | } |
| eawhite | 2:690dd6bdb9a7 | 80 | */ |
| eawhite | 2:690dd6bdb9a7 | 81 | |
| eawhite | 2:690dd6bdb9a7 | 82 | memset(rxBuffer, 0, sizeof(rxBuffer)); //only reset after strcmp |
| eawhite | 2:690dd6bdb9a7 | 83 | i = 0; |
| eawhite | 2:690dd6bdb9a7 | 84 | } |
| eawhite | 2:690dd6bdb9a7 | 85 | } |
| eawhite | 2:690dd6bdb9a7 | 86 | |
| eawhite | 2:690dd6bdb9a7 | 87 | } |
| osmith2 | 0:f46e16e62b0c | 88 | |
| osmith2 | 0:f46e16e62b0c | 89 | |
| osmith2 | 0:f46e16e62b0c | 90 | int main() { |
| eawhite | 2:690dd6bdb9a7 | 91 | |
| eawhite | 2:690dd6bdb9a7 | 92 | serialRX.start(rx_thread); //start serial interrupt thread |
| eawhite | 2:690dd6bdb9a7 | 93 | pc.attach(&Rx_interrupt); //attach interrupt function that triggers when data is available |
| osmith2 | 0:f46e16e62b0c | 94 | |
| osmith2 | 0:f46e16e62b0c | 95 | while(1) { |
| eawhite | 2:690dd6bdb9a7 | 96 | Thread::wait(2500); |
| osmith2 | 0:f46e16e62b0c | 97 | } |
| osmith2 | 0:f46e16e62b0c | 98 | |
| osmith2 | 0:f46e16e62b0c | 99 | } |
