Witam, podczas realizacji mojej pracy mgr przyszło mi zaimplementować klawiaturę ekranową (numeryczną) do wprowadzania liczb (całkowite i rzeczywiste, np. -4.12, 5, 23.14) na LCD TFT ze sklepu Atnela.
Z całkowitymi (wraz z ujemnymi) sobie łatwo poradziłem, ale mam problem z "przecinkowymi". Mam kilka pomysłów jak do tego podejść, ale nie wiem, czy nie idę nieco dookoła zagadnienia.
Pytanie jest następujące:
czy ktoś z szanowych forumowiczów zetknął się z zadaniem stworzenia takiej klawiatury ekranowej i mógłby zdradzić, jak podszedł do parsowania danych z niej? Może przedstawię, jak się u mnie prezentuje taka klawiaturka:
zdjęcie pod linkiem:
https://dl.dropbox.com/u/6082561/2013-0 ... .27.53.jpgKod odpowiedzialny za nią (póki co z tymi rzeczywistymi walczyłem, ale bez powodzenia więc część kodu bez sensu):
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Problem jest właśnie z liczbami typu 31.52 (gdzie występuje część całkowita i ułamkowa), problemy są różnorakie:
1) jak to reprezentować w programie? myślałem o tym, aby klawiatura zwracała wynik będący strukturą zbudowaną z trzech składowych. Te składowe to byłaby flaga mówiąca o tym, czy wynik jest liczbą całkowitą, czy rzeczywistą, druga składowa to część całkowita (int), trzecia to część ułamkowa (również int). Czy jest to dobre podejście?
2) sparsowanie tego z "dotyku" to ciężka sprawa, narysowałem do tego "automat", link:
https://dl.dropbox.com/u/6082561/2013-0 ... .46.51.jpg , ale czy nie idę nieco dookoła? jest prostszy sposób?
3) następny problem: zamiana tych dwóch intów na jednego, wynikowego floata. Niby już doszedłem do tego, jak, ale znowu - dodatkowe komplikacje. Pomysł jest taki:
mamy liczbę 2.34, to oznacza inta 2 i inta 34. Floata składamy tak: 2 + 34*0.01 = 2+0.34 = 2.34. To, jaki jest mnożnik (tutaj: 0.01) zależy od tego, ile cyfr jest w drugim incie. Tutaj mamy dwie cyfry (34, czyli 3 i 4), więc mamy mnożnik z jednym zerem po przecinku (o jedno zero mniej niż cyfr w drugim incie). Dobry sposób? Czy zbyt zamotany?
Proszę o pomoc.

Pozdrawiam, Michał