p1

PGSdisplay.cpp

Committer:
bosko001
Date:
2020-06-18
Revision:
7:0939ac3d73af
Parent:
6:19e7658575fe

File content as of revision 7:0939ac3d73af:


//#include "mbed.h"
//#include "platform/mbed_thread.h"

#include "mbed.h"

#include "PGSdisplay.h"

#define DISP_ADR   40

DigitalOut tast(PTB19,0);
////RawSerial rs485(PTC17,PTC16);
Serial rs485(PTD3,PTD2);
DigitalOut led(LED2,1);

    char cc;




void rc(void)
{
    led = !led;
 cc=rs485.getc();
}

void tast_on( int )
{
//       rs485.attach( NULL, Serial::RxIrq );  
       tast = 1;
 }

void tast_off(void)
{
    tast=0;
 //  rs485.attach( rc, Serial::RxIrq );  
}



#define FLAG_1  1
EventFlags ef;


uint8_t rs[100];
void init_disp( void)
{
    rs485.format(8,SerialBase::Even,1);
//   rs485.attach( tast_off, Serial::TxIrq );  
//   rs485.attach( rc, Serial::RxIrq );  


//    rs485.enable_input(true);
//    if(rs485.readable()) rs485.getc();


 //printf("ODGOVOR: %x \n\r",rs485.getc());

   putOnDisp("elcom", 3);
printf("slanje na displej \n\r");
//wait(0.010);
//   rs485.attach( (rc), Serial::RxIrq );  
//printf("attachovanje \n\r");

//wait(0.110); 
//// while(!rs485.readable());
////printf("readable gotov \n\r");
//fflush(stdout);
//
char c[10];
int i,j=1;
 //{  i=rs485.read( (uint8_t*)c,5, /*callback(ve)*/NULL ); j++;}

//while( !(i=rs485.read( (uint8_t*)&c,1, callback(ve),SERIAL_EVENT_RX_COMPLETE )) ){j++;};
//i=rs485.read( (uint8_t*)&c,1, callback(ve),SERIAL_EVENT_RX_COMPLETE ) ;
 //printf("ODGOVOR: c=%x %x i=%x j=%d\n\r", c[0],c[1], i, j );

  printf("primljeno cc =%x \n\r", cc);




   // char c = rs485.getc();
 //  wait(0.5);
//thread_sleep_for(500);
//printf("odgovor = %x\n\r", cc);

//uint8_t c;
//    if( rs485.readable()) printf("ODGOVOR: %d %x\n\r",rs485.read( &c, 1, ve), c);

}


unsigned char buf_tel[100] = {0x71,0x00,0x0D,0x71,0x43,DISP_ADR,0x1B,0x4A,0x01,0x01,  /*0x1b,0x45,0x1,*/  0x1B,0x43,1,0x33,0xD5,0x16};
#define NO_BEFORE_DATA 13
#define NO_WITH_DATA (NO_BEFORE_DATA + strlen(s))

void putOnDisp( char *s, char boja)
{
    int ubb = NO_BEFORE_DATA+strlen(s)+1+1-4-2; // ubb = ukupan broj bajtova
    buf_tel[NO_BEFORE_DATA-1]=boja;
    memcpy(buf_tel+NO_BEFORE_DATA, s, strlen(s)+2);

    char suma=0;
    for(int i = 4; i < NO_WITH_DATA; i++) {
        suma +=buf_tel[i];
    }

    buf_tel[NO_WITH_DATA] = suma;
    buf_tel[NO_WITH_DATA+1] = 22;
    buf_tel[1]=ubb>>8;
    buf_tel[2]=ubb;


    tast_on(1);
//    rs485.write((const void*)buf_tel, (size_t)(NO_WITH_DATA+2+2)/*, tast_off, SERIAL_EVENT_TX_COMPLETE*/);
     for(int i=0; i<  NO_WITH_DATA+2+2; i++ ) rs485.putc(buf_tel[i]);
}

void putOnDispNo(int broj, char boja)
{
    char s[10];
    sprintf( s, "%d", broj);
    putOnDisp( s, boja);
}


void slanjefun()
{

    int j=0;


    while (true) {
//       printf("disp thred %d\n\r",j);
        if(j >10 && j<15 ) putOnDisp((char*)"des",1);
        else putOnDispNo(j,1);
        j++;
        thread_sleep_for(1000);
    }
}


char * extract_string( char delimiter, char *ulazni_str, int n_str )
{
    int br_str=0;
    char *ret_str=ulazni_str;
    char* ptr = ulazni_str;

    while(*ptr) {
        if(*ptr == delimiter) {
            *ptr = 0;
            if( br_str == n_str )   return ret_str;
            else {
                br_str++;
                ret_str = ptr + 1;
            }
        }
        ptr++;
    }
    if( br_str == n_str )   return ret_str;
    return NULL;
}