
test
main.cpp@1:1b7d101a42ae, 2017-02-21 (annotated)
- Committer:
- wenbo
- Date:
- Tue Feb 21 13:10:18 2017 +0000
- Revision:
- 1:1b7d101a42ae
- Parent:
- 0:7eceeb389bb9
test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
wenbo | 0:7eceeb389bb9 | 1 | #include "mbed.h" |
wenbo | 1:1b7d101a42ae | 2 | #include "SLCD.h" |
wenbo | 1:1b7d101a42ae | 3 | #include <string> |
wenbo | 1:1b7d101a42ae | 4 | #include <cstring> |
wenbo | 1:1b7d101a42ae | 5 | using namespace std; |
wenbo | 0:7eceeb389bb9 | 6 | |
wenbo | 1:1b7d101a42ae | 7 | typedef struct msg_t { |
wenbo | 1:1b7d101a42ae | 8 | char msg[5]; |
wenbo | 1:1b7d101a42ae | 9 | int value; |
wenbo | 1:1b7d101a42ae | 10 | } msg_t; |
wenbo | 1:1b7d101a42ae | 11 | |
wenbo | 0:7eceeb389bb9 | 12 | DigitalOut led1(LED1); |
wenbo | 1:1b7d101a42ae | 13 | DigitalOut led2(LED2); |
wenbo | 1:1b7d101a42ae | 14 | Thread th_1; |
wenbo | 1:1b7d101a42ae | 15 | Thread th_2; |
wenbo | 1:1b7d101a42ae | 16 | Queue<msg_t, 8> infoQueue; |
wenbo | 1:1b7d101a42ae | 17 | //Queue<int, 8> infoQueue; |
wenbo | 1:1b7d101a42ae | 18 | Mutex LCD_mutex; |
wenbo | 1:1b7d101a42ae | 19 | SLCD slcd; |
wenbo | 1:1b7d101a42ae | 20 | msg_t* msg; |
wenbo | 1:1b7d101a42ae | 21 | |
wenbo | 1:1b7d101a42ae | 22 | void getTime() |
wenbo | 1:1b7d101a42ae | 23 | { |
wenbo | 0:7eceeb389bb9 | 24 | |
wenbo | 1:1b7d101a42ae | 25 | //char* buffer; |
wenbo | 1:1b7d101a42ae | 26 | int second; |
wenbo | 1:1b7d101a42ae | 27 | int minute; |
wenbo | 1:1b7d101a42ae | 28 | int hour; |
wenbo | 1:1b7d101a42ae | 29 | second = 0; |
wenbo | 1:1b7d101a42ae | 30 | minute = 0; |
wenbo | 1:1b7d101a42ae | 31 | hour = 0; |
wenbo | 1:1b7d101a42ae | 32 | printf("get time\n"); |
wenbo | 1:1b7d101a42ae | 33 | while(true) { |
wenbo | 1:1b7d101a42ae | 34 | second=second + 1; |
wenbo | 1:1b7d101a42ae | 35 | msg->value = second; |
wenbo | 1:1b7d101a42ae | 36 | if(second >= 60) { |
wenbo | 1:1b7d101a42ae | 37 | minute ++; |
wenbo | 1:1b7d101a42ae | 38 | second = 0; |
wenbo | 1:1b7d101a42ae | 39 | if(minute >= 60) { |
wenbo | 1:1b7d101a42ae | 40 | hour ++; |
wenbo | 1:1b7d101a42ae | 41 | minute = 0; |
wenbo | 1:1b7d101a42ae | 42 | } |
wenbo | 1:1b7d101a42ae | 43 | } |
wenbo | 1:1b7d101a42ae | 44 | |
wenbo | 1:1b7d101a42ae | 45 | if (second <10){ |
wenbo | 1:1b7d101a42ae | 46 | msg->msg[3]='0'; |
wenbo | 1:1b7d101a42ae | 47 | msg->msg[4]=second; |
wenbo | 1:1b7d101a42ae | 48 | } |
wenbo | 1:1b7d101a42ae | 49 | else { |
wenbo | 1:1b7d101a42ae | 50 | msg->msg[3]=(second / 10); |
wenbo | 1:1b7d101a42ae | 51 | msg->msg[4]=(second % 10); |
wenbo | 1:1b7d101a42ae | 52 | } |
wenbo | 1:1b7d101a42ae | 53 | if (hour <10){ |
wenbo | 1:1b7d101a42ae | 54 | msg->msg[0]=0; |
wenbo | 1:1b7d101a42ae | 55 | msg->msg[1]=hour; |
wenbo | 1:1b7d101a42ae | 56 | } |
wenbo | 1:1b7d101a42ae | 57 | else { |
wenbo | 1:1b7d101a42ae | 58 | msg->msg[0]=(hour / 10); |
wenbo | 1:1b7d101a42ae | 59 | msg->msg[1]=(hour % 10); |
wenbo | 1:1b7d101a42ae | 60 | } |
wenbo | 1:1b7d101a42ae | 61 | msg->msg[2]=':'; |
wenbo | 1:1b7d101a42ae | 62 | //printf("message sent is :%c\n",msg->msg[4]); |
wenbo | 1:1b7d101a42ae | 63 | printf("value is :%d\n",msg->value); |
wenbo | 1:1b7d101a42ae | 64 | |
wenbo | 1:1b7d101a42ae | 65 | infoQueue.put(msg); |
wenbo | 1:1b7d101a42ae | 66 | led1=!led1; |
wenbo | 1:1b7d101a42ae | 67 | wait_ms(1000); |
wenbo | 0:7eceeb389bb9 | 68 | } |
wenbo | 0:7eceeb389bb9 | 69 | } |
wenbo | 0:7eceeb389bb9 | 70 | |
wenbo | 1:1b7d101a42ae | 71 | void dispLCD() |
wenbo | 1:1b7d101a42ae | 72 | { |
wenbo | 1:1b7d101a42ae | 73 | //string* msg; |
wenbo | 1:1b7d101a42ae | 74 | //msg_t* msg; |
wenbo | 1:1b7d101a42ae | 75 | printf("disp\n"); |
wenbo | 1:1b7d101a42ae | 76 | while(true) { |
wenbo | 1:1b7d101a42ae | 77 | osEvent evt = infoQueue.get(); |
wenbo | 1:1b7d101a42ae | 78 | //printf("queue received\n"); |
wenbo | 1:1b7d101a42ae | 79 | if (evt.status == osEventMessage) { |
wenbo | 1:1b7d101a42ae | 80 | msg = (msg_t*)evt.value.p; |
wenbo | 1:1b7d101a42ae | 81 | } |
wenbo | 1:1b7d101a42ae | 82 | printf("message\n"); |
wenbo | 1:1b7d101a42ae | 83 | printf("received msg is %s\n",msg->msg); |
wenbo | 1:1b7d101a42ae | 84 | LCD_mutex.lock(); |
wenbo | 1:1b7d101a42ae | 85 | //char * buffer = new char [msg.length()+1]; |
wenbo | 1:1b7d101a42ae | 86 | slcd.printf("%s",msg->msg); |
wenbo | 1:1b7d101a42ae | 87 | LCD_mutex.unlock(); |
wenbo | 1:1b7d101a42ae | 88 | } |
wenbo | 1:1b7d101a42ae | 89 | } |
wenbo | 1:1b7d101a42ae | 90 | |
wenbo | 1:1b7d101a42ae | 91 | int main() |
wenbo | 1:1b7d101a42ae | 92 | { |
wenbo | 1:1b7d101a42ae | 93 | printf("main\n"); |
wenbo | 1:1b7d101a42ae | 94 | th_1.start(getTime); |
wenbo | 1:1b7d101a42ae | 95 | th_2.start(dispLCD); |
wenbo | 1:1b7d101a42ae | 96 | //printf("thread started\n"); |
wenbo | 1:1b7d101a42ae | 97 | } |
wenbo | 1:1b7d101a42ae | 98 |