Symulator EU07 (i nie tylko) > Na warsztacie
Exe - konwersja na C++
firleju:
To już prędzej trzeba zrobić klasę bazową, która ma pewne API na zbieranie poleceń ze świata zewnętrznego. Wtedy możemy pisać osobne klasy, które np. będą potomne i w zależności od tego jakie dane będą zbierać będą przetwarzać na ustalone kody poleceń. W tej chwili wielokrotne parsowanie stringów (bo tak przesyłane są polecenia między modułami) może nie jest krytycznym elementem do natychmiastowej optymalizacji, ale zdecydowanie nie jest eleganckim rozwiązaniem, które pozwala na różną rozbudowę funkcjonalności (nie ma np. wspólnej bazy komend i trzeba ręcznie wpisywać te samy nazwy wielokrotnie).
El Mecánico:
Dokładnie to potrzebujemy czegoś, co poprzez klawiaturę będzie oddziaływało TYLKO na elementy które mechanik może obsługiwać w kabinie. Dalej, między kabinę i fizykę, wpinamy sterowanie w LD. Interfejsy najlepiej zrobić na vector<bool>, bo bit na styk jest wystarczający.
firleju:
Tak myślę, że powinien być zestaw modułów zbierających wejścia z rożnych interfejsów i współdziałający z jednym modułem który już bezpośrednio pracuje z elementami exe. Wtedy można podpinać różne urządzenia jednocześnie. Komunikacja za pomocą zdefiniowanego API. Czy moduł współpracujący wewnętrzny będzie zmieniał zmienne dla LD czy robił coś innego to już sprawa wtórna.
Dodano: 31 Października 2016, 09:19:44 Dzisiaj rano udało się zbudować projekt. Niestety nie da się obecnie uruchomić gdyż wyrzuca błąd dostępu do pamięci ale debugger nie pokazuje w którym miejscu. Jest także 3k warningów co może mieć przyczynę. Może ktoś mi wytłumaczy czemu zmienna globalna inicjowana w nagłówku wg kompilatora jest generowana w każdym pliku cpp który includuje ten nagłówek pomimo ifndef? Być może wyrzuca właśnie tutaj.
tmj:
--- Cytat: firleju w 30 Października 2016, 21:39:53 ---Może ktoś mi wytłumaczy czemu zmienna globalna inicjowana w nagłówku wg kompilatora jest generowana w każdym pliku cpp który includuje ten nagłówek pomimo ifndef? Być może wyrzuca właśnie tutaj.
--- Koniec cytatu ---
ifndef zabezpiecza tylko przed uzyciem tego samego naglowka po kilka razy przy kompilowaniu jednego .cpp, ale nie powstrzymuje kompilatora przed wlaczeniem tego naglowka i wygenerowaniem kopii zmiennej dla kazdego .cpp z osobna. A potem linker wariuje bo nagle ma cala kope kandydatow na zmienna globalna, zamiast jednej sztuki.
Od takich rzeczy jest extern tzn. w plikach .h robisz np.
extern std::string foo;
a potem w jednym tylko .cpp ma miejsce wygenerowanie zmiennej czyli
std::string foo = "bar";
i linker to wszystko sobie wtedy posklada.
firleju:
No tak właśnie myślałem, że będę musiał przez extern pójść. Jak będę wracał do domciu to skompiluję raz jeszcze i zobaczymy czy zabangla. Ofkoz są błędy, gdyż nie udało się poprawnie załadować charakterystyk, ale mimo wszystko jednak nie powinien się na tym wysypać.
Dodano: 01 Listopada 2016, 06:42:11 Z placu boju: Exe się buduje. Nie ma warningów, aczkolwiek kompilator stał się bardo niestabilny i co jakiś czas muszę kasować wszystkie pliki .obj. Wyrzuca błąd, który jak to producent określa "nie powinien występować w praktyce". W tej chwili poprawiam nowe funkcje ładowania plików charakterystyk napisane przez Q.
Dodano: 02 Listopada 2016, 08:03:50 Mam ochotę zabić Borlanda. Otóż okazuje się, że wszystkie zmienne typu bool, jeśli ich nie zainicjujesz otwarcie, domyślnie ustawione są na true. No i całość trzeba wziąć i dopisać otwarcie. Aaaaa....
Nawigacja
[#] Następna strona
Idź do wersji pełnej