uogólnienie mapowania systemu wielu zmiennych / warstw
Napisałem aplikację za pomocąC ++ / QT który komunikuje się z urządzeniem w celu odczytu / zapisu zmiennych, umieszcza je w strukturach i prezentuje w gui dla celów przeglądania / edycji.
1) Urządzenie jest dostarczane z kodem próbki c, który również definiuje protokół komunikacyjny (w bardzo zły sposób), taki jak:
#define VALUE_1 0x12345678
#define VALUE_2 0xDEADBEEF
#define MY_DEVICE_VAR (VALUE_1 << 4) & (VALUE_2 >> 6)
#define MY_DEVICE_VAR_1 (MY_DEVICE_VAR & (VALUE_1 << 2)
#define MY_DEVICE_VAR_2 (MY_DEVICE_VAR & (VALUE_2 << 4)
#define MY_DEVICE_VAR_2 (MY_DEVICE_VAR & (VALUE_2 << 4)
// .. and 300 more lines like above
Więc zmiennaVAR_1
jest reprezentowany przez:MY_DEVICE_VAR_1
.
2) Mam strukturę, która przechowuje wszystkie zmienne urządzenia:
struct MyDeviceData
{
int var1;
double var2;
char var3;
bool var4;
.
.
};
Jest to zasadniczo przechowywanie / projekcja danych odczytanych z urządzenia. Istnieją 4 różne typy zmiennych POD.
3) Wreszcie mój gui ma elementy gui do wyświetlania i edytowania instancji MyDeviceData
class MyGuI
{
QLineEdit var1;
QLineEdit var2;
QComboBox var3;
QCheckBox var4;
.
.
};
Teraz moje pytania to:
1) Robię mapowanieMY_DEVICE_VAR1
->MyDeviceData::var1
->MyGUI::var1
zif
iswitch/case
wypowiedzi, z których nie jestem dumny. Jaki byłby lepszy „programowy” sposób mapowania?
2) Gdy zmieni się wartość elementu gui, chcę wysłaćtylko zaktualizowana wartość karty. oprócz nadpisywania funkcji obsługi zdarzeń takich jak „textChanged
, selectedIndexChanged
„itd. Czy są jakieś„ inteligentniejsze ”metody? (QSignalMapper?)
3) Czy w tym projekcie można uogólnić całą pracę z znoju? (narzędzie generatora kodu? szablony?)