Skocz do zawartości

Kasowanie danych na wyświetlaczu za pomocą klawiatury


kapipapi

Pomocna odpowiedź

Mam pytanie i proszę o pomoc

Więc tak, zaprogramowałem wyświetlacz LCD 2x16 z klawiaturą membranową w ten sposób, że to co wcisnę to się pojawia na wyświetlaczu. Ma to służyć do wpisywania PINu i tu zaczyna się mój problem gdyż w razie pomyłki chciałem klawiszem 'A' usunąć znak przed kursorem (po jego lewej stronie) ale kompletnie nie wiem jak to zrobić 😞

Kombinowałem coś z funkcją lcd.rightToLeft() i żeby wtedy wypisał pusty znak ale nie działa

Pomoże ktoś??

Link do komentarza
Share on other sites

@kapipapi, witam na forum 😉 Widzę, że to Twoje pierwsze kroki na Forbocie, oto najważniejsze informacje na start:

  • Chcesz przywitać się z innymi członkami naszej społeczności? Skorzystaj z tematu powitania użytkowników.
  • Opis najciekawszych funkcji, które ułatwiają korzystanie z forum znajdziesz w temacie instrukcja korzystania z forum - co warto wiedzieć?
  • Poszczególne posty możesz oceniać (pozytywnie i negatywnie) za pomocą reakcji - ikona serca w prawym dolnym rogu każdej wiadomości.

Dnia 8.06.2019 o 17:51, kapipapi napisał:

Ma to służyć do wpisywania PINu i tu zaczyna się mój problem gdyż w razie pomyłki chciałem klawiszem 'A' usunąć znak przed kursorem (po jego lewej stronie) ale kompletnie nie wiem jak to zrobić 😞

Wklej swój program bez tego ciężko coś doradzić 😉

Link do komentarza
Share on other sites

Podejrzewam, że traktujesz wyświetlacz jak notatnik na kolejne znaki. Wciągając z klawiatury jedną cyfrę wypisujesz ją od razu na wyswietlaczu korzystając z tego, że automatycznie przesuwa się kursor a kolejne wpisy będa pojawiać się coraz bardziej na prawo. No i teraz brakuje Ci "zjadania" już pokazanych znaków i cofania kursora. Moim zdaniem, zamiast bazować na pewnej własności wyświetlacza (i narzekania że brakuje jakiejś innej) zupełnie zmień podejście. Potraktuj wyświetlacz tylko jako ekran ppokazujący za każdym razem wszystko co już zgormadziłeś. Zrób sobie zatem jakiś bufor (tablicę znaków) w pamięci RAM wypełniona na początku spacjami. Potrzebny też będzie wskaźnik, indeks do tej tablicy, który będzie odpowiadał za pozycję wirtualnego kursora. Po otrzymaniu kolejnego znaku z klawiatury podejmujesz decyzję czy jest to:

  • kolejna cyfra PINu
  • znak końca (Enter?)
  • znak wycofania (Backspace?)

W pierwszym przypadku wstawiasz znak do tablicy w miejsce wskazane przez indeks i popychasz go do przodu, o ile oczywiście nie osiągnął końca tablicy. W drugim kończysz całą zabawę i zaczynasz analizować wczytany PIN - wiesz ile masz znaków, bo tę liczbę wskazuje pozycja indeksu/kursora. W trzecim najpierw cofasz indeks o 1 pozycję (o ile nie stoi już na początku tablicy) i wstawiasz tam spację. To wszystko. Dopiero teraz wypisujesz od razu całą tablicę na LCD (zaczynając zawsze od tego samego miejsca na ekranie) i umieszczsz jego kursor w miejscu wskazanym pzez indeks tablicy. Dzięki temu możesz robić cuda ze znakami (np. przesuwać kursor po znakach, robić insert wewnątrz tekstu, kasować wszystkie naraz itp) byle tylko były do tego odpowiednie klawisze. Ani razu nie korzystasz z jakichś dziwnych cech wyświetlacza ani biblioteki LCD, bo jedyną rzeczą jakiej potrzebujesz to wypisanie kilku/nastu? znaków i ustawienie kursora. Wszystkie "sztuczki" robi procesor na swojej tablicy, a ten ma możliwości prawie nieograniczone.

Spróbuj takiego podejścia i pokaż nowy kod. Zacznij od stworzenia tablicy znaków, wypełnienia jej spacjami i wypisania całości na LCD. Potem po kolei zajmiesz się obsługą zwykłych cyfr, Entera i Backspace. Powodzenia 🙂 

  • Lubię! 2
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.