test

Dependencies:   SLCD

Committer:
wenbo
Date:
Tue Feb 21 13:10:18 2017 +0000
Revision:
1:1b7d101a42ae
Parent:
0:7eceeb389bb9
test

Who changed what in which revision?

UserRevisionLine numberNew 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