EthTCPclient_05

PGSdisplay.cpp

Committer:
bosko001
Date:
2020-02-24
Revision:
5:ecaf089d1c8a
Parent:
PGSdisplay.c@ 4:0aec01df33d2

File content as of revision 5:ecaf089d1c8a:


//#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);
RawSerial rs485(PTD3,PTD2);


void ev(int)
{
    tast=0;
}

void init_disp( void)
{
   rs485.format(8,RawSerial::Even,1);   

    putOnDisp("elcom", 3);


}

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=1;
    rs485.write(buf_tel, NO_WITH_DATA+2+2,ev);
}

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;
}