program_BlockPIL //{Ping,Ir,Lines} Sensor

Dependencies:   mbed HMC6352

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers usart.cpp Source File

usart.cpp

00001 #include "mbed.h"
00002 
00003 #define KEYCODE 0xAA
00004 #define TX_CHECKCODE (tx_data[1]^tx_data[2]^tx_data[3]^tx_data[4]^tx_data[5]^tx_data[6]^tx_data[7]^tx_data[8]^tx_data[9]^tx_data[10])
00005 #define RX_CHECKCODE (rx_data[1]^rx_data[2]^rx_data[3]^rx_data[4]^rx_data[5]^rx_data[6]^rx_data[7]^rx_data[8]^rx_data[9]^rx_data[10])
00006 #define DATA_NUM 13
00007 #define CHECK (DATA_NUM - 1)
00008 #define ALL_IR 10
00009 #define ALL_PING 4
00010 #define ALL_LINE 4
00011 
00012 
00013 
00014 extern Serial sensor;
00015 extern Serial pc;
00016 extern unsigned int value_ping[ALL_PING];
00017 extern unsigned int value_ir[ALL_IR];
00018 extern unsigned int value_ir_min;
00019 extern unsigned int ir_min_num;
00020 extern unsigned int value_line[ALL_LINE];
00021 extern unsigned int value_compass;
00022 void micon_rx(){
00023     
00024     static uint8_t rx;
00025     static uint8_t rx_data[DATA_NUM];
00026     
00027     rx_data[rx] = sensor.getc();
00028     
00029     if(rx_data[0] == KEYCODE){
00030         rx++;
00031     }
00032     
00033     if(rx >= DATA_NUM){
00034         if(rx_data[CHECK] == RX_CHECKCODE){
00035              pc.printf("%d %d %d %d %d\n", rx_data[1], rx_data[2], rx_data[3], rx_data[4], rx_data[5]);
00036         }  
00037      rx = 0;   
00038     }
00039 
00040 }
00041 
00042 void micon_tx(){
00043     
00044     static uint8_t tx;
00045     static uint8_t tx_data[DATA_NUM];
00046     
00047     if(tx >= DATA_NUM){
00048         tx_data[0] = KEYCODE;
00049         tx_data[1] = value_ir_min;
00050         tx_data[2] = ir_min_num;
00051         tx_data[3] = value_ping[0];
00052         tx_data[4] = value_ping[1];
00053         tx_data[5] = value_ping[2];
00054         tx_data[6] = value_ping[3];
00055         tx_data[7] = value_line[0];
00056         tx_data[8] = value_line[1];
00057         tx_data[9] = value_line[2];
00058         tx_data[10] = value_line[3];
00059         tx_data[11] = value_compass;
00060         tx_data[12] = TX_CHECKCODE;
00061         
00062         tx = 0;
00063     }
00064     
00065     
00066     sensor.putc(tx_data[tx]);
00067     //pc.printf("%d\n", tx_data[tx]);
00068     tx++;
00069     //wait(0.1);
00070 }