bosko lekovic
/
EthTCPclient_05_01
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; }