Debug Serial para programa resetar o buffer quando houver tamanhos errados na mensagem
Dependencies: pulga-lorawan-drv PingPong-P2P-ClickButtonToWork-SX1272
Diff: serial.cpp
- Revision:
- 15:b27ab44dc2c8
- Parent:
- 14:88373765b9a9
--- a/serial.cpp Mon Apr 19 13:32:23 2021 +0000 +++ b/serial.cpp Thu Apr 29 16:54:10 2021 +0000 @@ -30,10 +30,10 @@ break; } circ_buffer[wr_index] = pc.getc(); - + //pc.printf("gettou o char %c\n", circ_buffer[wr_index]); buf_len++; wr_index++; - + if (wr_index >= sizeof(circ_buffer)) { wr_index = 0; } @@ -73,18 +73,26 @@ j = rd_index; msg_incompleta = 1; int lenght = circ_buffer[j+2]; - int new_index = rd_index + lenght; - pc.printf("index %d and new_index %d\n", rd_index, new_index); + //int new_index = rd_index + lenght; + //pc.printf("index %d and new_index %d\n", rd_index, new_index); //pc.printf("msg size: %d \n",lenght); while (i < buf_len) { - if (i==lenght+3 && circ_buffer[j] == '>') + if (i==lenght+3) { - pc.printf("msg size = %d \n", i); - pc.printf("char = %c \n", circ_buffer[j]); - ///encontrou final de cmd - msg_incompleta = 0; - break; + if(circ_buffer[j] == '>'){ + //pc.printf("msg size = %d \n", i); + pc.printf("msgOK\n", circ_buffer[j]); + ///encontrou final de cmd + msg_incompleta = 0; + break; + }else{ + rd_index=0; + wr_index=0; + buf_len=0; + pc.attach(&serial_post_to_queue, RawSerial::RxIrq); + return; + } } j++; i++; @@ -130,10 +138,11 @@ pc.printf("lenght 2 big!"); } - if (rd_index==new_index+3 && circ_buffer[rd_index] == '>') + //if (rd_index==new_index+3 && circ_buffer[rd_index] == '>') + if (buf_len==1 && circ_buffer[rd_index] == '>') { ///encontrou final de cmd - pc.printf("index = %d \n", rd_index); + pc.printf("msglen = %d \n", msg_len); pc.printf("charchar = %c \n", circ_buffer[rd_index]); break; } @@ -143,7 +152,7 @@ if (rd_index >= sizeof(circ_buffer)) { rd_index = 0; - pc.printf("j>rd_index!"); + //pc.printf("j>rd_index!"); } }