Advertisement
Guest User

string parser

a guest
Apr 21st, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.12 KB | None | 0 0
  1.  
  2. void setup()
  3. {
  4.   Serial.begin(115200);
  5. }
  6.  
  7. bool available_char=false;
  8. char input_char;
  9. unsigned int time_now=0;
  10. unsigned int time_earlier=0;
  11. int difference;
  12. bool endline=1;
  13. int cursor_position=0;
  14.  
  15. char *out=new char[1];
  16.  
  17. void loop() {
  18.   time_earlier=time_now;
  19.  
  20.   if(Serial.available())
  21.   {
  22.     input_char=Serial.read();
  23.     available_char=1;
  24.     time_now=millis();
  25.     cursor_position++;
  26.   }
  27.    
  28.   difference=time_now-time_earlier;
  29.    
  30.   if(available_char)
  31.   {
  32.     if(difference>2) //создание строки
  33.       {
  34.         endline=1;
  35.         cursor_position=0;
  36.         char *buf=new char[1];
  37.         delete[] out;
  38.         out=buf;  
  39.       }
  40.     else //дополнение строки
  41.     {
  42.        char *buf=new char[1+cursor_position];
  43.        for(int i=0; i<=cursor_position;i++)buf[i]=out[i];  
  44.        delete[] out;
  45.        out=buf;
  46.     }
  47.   out[cursor_position]=input_char;
  48.   available_char=false;
  49.   }
  50.       if(difference==0 and endline) //вывод строки
  51.     {
  52.       for(int i=0;i<=cursor_position;i++)Serial.print(out[i]);
  53.       endline=false;
  54.     }
  55.   delay(1);
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement