Текст, удаленный с помощью backspace, не обновляется на моем Arduino TFT Display (библиотека Adafruit GFX) - PullRequest
0 голосов
/ 13 марта 2020

Для университета нам нужно сделать игру в Unity, которая будет управляться с помощью Arduino. Моя идея была хакерской игрой, в которой Arduino выступает в роли «хакерского устройства» при взломе чего-либо в игре. У arduino будет экран, и на этом экране будет интерфейс командной строки c, который позволяет мне вводить простые команды для «взлома», но у меня были проблемы с текстом и его очисткой.

Я был в состоянии использовать единицу для отправки печатных символов на дисплей, а также функцию возврата на одну позицию (нажатие клавиши «backspace» удалит последний символ в строке)

Сначала у меня возникла проблема с очисткой всего текста при записи (вызов tft.print не удаляет предыдущий текст). Я использовал fillScreen, который был медленным. Я обнаружил, что setTextColor имеет второй аргумент, который позволяет мне просто установить весь определенный цветной текст в другой цвет. Если установить черный цвет, это, по сути, очистит его.

Это привело к его немедленному обновлению при записи на экран, но теперь у меня возникла новая проблема, при этом backspace больше не будет.

Насколько я понимаю, что при удалении символа его цвет не будет обновляться при вызове setTextColor, оставляя его на экране до тех пор, пока не будет вызван рестарт / fillScreen.

Я не совсем уверен, как решить эту проблему, и все поисковые запросы Google превращаются немного, чтобы помочь.

Вот мой код для обновления текста:

void updateString(char c){
  tft.setTextColor(WHITE,BLACK);  
  if(c!='<'){
    //Add new character to end of string
    str.concat(String(c));
  }
  else if(c=='<' && str.length()>2){
    //Remove last character in string
    str.remove(str.length()-1);  
  }
  //Set cursor back to 0,0
  tft.setCursor(0,0);
  //Display text
  tft.print(str);
}

Буду признателен за любую помощь.

1 Ответ

0 голосов
/ 13 марта 2020

Возможно, используйте функцию, аналогичную tft.clear() каждый раз, когда вы обновляете sh экран, или вы можете нарисовать заполненный квадрат фона на тексте, чтобы он выглядел так, как будто он был стерт, а затем вы переписываете текст.

...