ECE 4180 Mini-Project (Lab 4)
Dependencies: 4DGL-uLCD-SE MODSERIAL USBHost mbed
main.cpp
00001 #include "mbed.h" 00002 #include "USBHostKeyboard.h" 00003 #include <string> 00004 #include "error.h" 00005 00006 #define MODSERIAL_DEFAULT_RX_BUFFER_SIZE 512 00007 #define MODSERIAL_DEFAULT_TX_BUFFER_SIZE 1024 00008 00009 #include "MODSERIAL.h" 00010 #include "uLCD_4DGL.h" 00011 00012 DigitalOut myled(LED1); 00013 MODSERIAL xbee(p9, p10); 00014 DigitalOut reset(p20); 00015 DigitalOut type(p19); 00016 MODSERIAL pc(USBTX, USBRX); 00017 00018 DigitalOut led1(LED1); 00019 DigitalOut led2(LED2); 00020 DigitalOut led3(LED3); 00021 00022 uLCD_4DGL lcd(p13,p14,p15); 00023 00024 string s = ""; 00025 00026 void clearLastChar() { 00027 lcd.color(BLACK); 00028 lcd.locate(lcd.current_col-1, lcd.current_row); 00029 lcd.putc(' '); 00030 lcd.locate(lcd.current_col-1, lcd.current_row); 00031 } 00032 00033 void onKey(uint8_t key) 00034 { 00035 if (key == '\n') { 00036 led3 = 0; 00037 xbee.printf("%s\r", s); 00038 s = ""; 00039 lcd.cls(); 00040 } else if (key == 8) { 00041 if (lcd.current_col > 0) { 00042 clearLastChar(); 00043 s = s.substr(0,s.length()-1); 00044 } 00045 } else { 00046 s += key; 00047 led3 = 1; 00048 lcd.color(WHITE); 00049 lcd.putc(key); 00050 } 00051 } 00052 00053 void keyboard_task(void const *) 00054 { 00055 00056 USBHostKeyboard keyboard; 00057 00058 while(1) { 00059 // try to connect a USB keyboard 00060 while(!keyboard.connect()) 00061 Thread::wait(500); 00062 00063 // when connected, attach handler called on keyboard event 00064 keyboard.attach(onKey); 00065 00066 // wait until the keyboard is disconnected 00067 while(keyboard.connected()) 00068 Thread::wait(500); 00069 } 00070 } 00071 00072 int num = 0; 00073 00074 int main() 00075 { 00076 lcd.baudrate(3000000); 00077 reset = 0; 00078 wait_ms(1); 00079 reset = 1; 00080 wait_ms(1); 00081 00082 if (!type) { 00083 while(1) { 00084 led2 = !led2; 00085 00086 if (xbee.readable()) { 00087 ++num; 00088 if (num >= 2) { 00089 lcd.cls(); 00090 num = 0; 00091 } 00092 lcd.printf("Got new Message:\n"); 00093 while (xbee.readable()) { 00094 //pc.putc(xbee.getc()); 00095 char buffer[512]; 00096 xbee.scanf("%s", buffer); 00097 lcd.printf("%s ", buffer); 00098 wait_ms(1); 00099 } 00100 lcd.printf("\n\n"); 00101 led3 = !led3; 00102 } 00103 wait_ms(20); 00104 } 00105 } else { 00106 Thread keyboardTask(keyboard_task, NULL, osPriorityNormal, 256 * 4); 00107 while(1); 00108 } 00109 00110 }
Generated on Sun Jul 24 2022 00:08:16 by 1.7.2