Serial Library STE

Dependencies:   mbed mbed-rtos MODSERIAL

main.cpp

Committer:
JavierGC
Date:
2020-12-23
Revision:
0:7077a789f16a

File content as of revision 0:7077a789f16a:

#include "main.h"


DigitalOut myled1(LED1);
DigitalOut myled2(LED2);
DigitalOut myled3(LED3);
DigitalOut d1(p21);
DigitalOut d2(p22);
DigitalOut d3(p23);
DigitalOut d4(p24);
DigitalOut d5(p25);
DigitalOut d6(p26);
DigitalOut d7(p27);


int main() {
    pc.start();   
    
       
    pc.LoadMail(2,"starting...\r");
    
    wait_ms(100); // use this in place of wait() to exclude waiting time from
                            // your usage value.
 
    //wait_ms(100);
    
    Setup();   
    //set_time(0);
    
    E=99999;
     
           
    while(true) {
        //d1=1;
        //wait_ms(7);
        //d1=0;
        //wait_ms(7);
        myled1 = 1;
        wait(0.25);
        myled1 = 0;
        wait(0.25);
        
        switch(E)
        {
            case PC::eState:
                
                switch (DATA[0])
                {
                    case '1':
                        d1=(DATA[2]=='1');
                        break;
                    case '2':
                        d2=(DATA[2]=='1');
                        break;
                    case '3':
                        d3=(DATA[2]=='1');
                        break;
                    case '4':
                        d4=(DATA[2]=='1');
                        break;
                    case '5':
                        d5=(DATA[2]=='1');
                        break;
                    case '6':
                        d6=(DATA[2]=='1');
                        break;
                    case '7':
                        d7=(DATA[2]=='1');
                        break;
                    default:
                        break;
                }
                E=99999;
                break;
            case PC::ePulse:
                sscanf(DATA,"%[^;];%[^;]",&CMD[0],&DATO[0]);
                switch (CMD[0])
                {
                    case '1':
                        d1=1;
                        wait_us(atoi(DATO));
                        d1=0;
                        break;
                    case '2':
                        d2=1;
                        wait_us(atoi(DATO));
                        d2=0;
                        break;
                    case '3':
                        d3=1;
                        wait_us(atoi(DATO));
                        d3=0;
                        break;
                    case '4':
                        d4=1;
                        wait_us(atoi(DATO));
                        d4=0;
                        break;
                    case '5':
                        d5=1;
                        wait_us(atoi(DATO));
                        d5=0;
                        break;
                    case '6':
                        d6=1;
                        wait_us(atoi(DATO));
                        d6=0;
                        break;
                    case '7':
                        d7=1;
                        wait_us(atoi(DATO));
                        d7=0;
                        break;
                    default:
                        break;
                }
                E=99999;
                break;
            case PC::ePulsems:
                sscanf(DATA,"%[^;];%[^;]",&CMD[0],&DATO[0]);
                switch (CMD[0])
                {
                    case '1':
                        d1=1;
                        wait_ms(atoi(DATO));
                        d1=0;
                        break;
                    case '2':
                        d2=1;
                        wait_ms(atoi(DATO));
                        d2=0;
                        break;
                    case '3':
                        d3=1;
                        wait_ms(atoi(DATO));
                        d3=0;
                        break;
                    case '4':
                        d4=1;
                        wait_ms(atoi(DATO));
                        d4=0;
                        break;
                    case '5':
                        d5=1;
                        wait_ms(atoi(DATO));
                        d5=0;
                        break;
                    case '6':
                        d6=1;
                        wait_ms(atoi(DATO));
                        d6=0;
                        break;
                    case '7':
                        d7=1;
                        wait_ms(atoi(DATO));
                        d7=0;
                        break;
                    default:
                        break;
                }
                E=99999;
                break;
            case PC::ePulses:
                sscanf(DATA,"%[^;];%[^;]",&CMD[0],&DATO[0]);
                switch (CMD[0])
                {
                    case '1':
                        d1=1;
                        wait(atof(DATO));
                        d1=0;
                        break;
                    case '2':
                        d2=1;
                        wait(atof(DATO));
                        d2=0;
                        break;
                    case '3':
                        d3=1;
                        wait(atof(DATO));
                        d3=0;
                        break;
                    case '4':
                        d4=1;
                        wait(atof(DATO));
                        d4=0;
                        break;
                    case '5':
                        d5=1;
                        wait_us(atof(DATO));
                        d5=0;
                        break;
                    case '6':
                        d6=1;
                        wait_us(atof(DATO));
                        d6=0;
                        break;
                    case '7':
                        d7=1;
                        wait_us(atof(DATO));
                        d7=0;
                        break;
                    default:
                        break;
                }
                E=99999;
                break;
            default:
                break;        
        }
    }
}




void PCEventHandler(int e, char *data)
{
    if(E==99999)
    {
        E=e;
        sprintf(DATA,"%s",data);       
    }
}

void Setup()
{        
    
    //pc.AttachSendStatus();
    
    pc.LoadMail(2,"\n");
    pc.LoadMail(2,"\n");
    pc.LoadMail(2,"\n");
    pc.LoadMail(2,"************************************************");
    pc.LoadMail(2,"\n");
    pc.LoadMail(2,"************************************************");
    pc.LoadMail(2,"\n");
    pc.LoadMail(2,"\n");
    pc.LoadMail(2,"\n");

    DigitalOut(LED1,0);
    DigitalOut(LED2,0);
    DigitalOut(LED3,0);
    DigitalOut(LED4,0);
}