-
Data: 2022-07-25 20:40:28
Temat: Re: Rynek pracy STM32
Od: Piotr Gałka <p...@c...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu 2022-07-25 o 18:12, heby pisze:
> On 25/07/2022 18:00, Piotr Gałka wrote:
>> Dla Ciebie 'zysk' to jakieś oszczędności pamięci lub czasu realizacji.
>
> Tak, to w końcu embedded, każdy bajt sie liczy.
Już co najmniej kilka razy przewinęła się informacja, że ja pod
Builderem, a nie embedded.
Piszę sobie programiki które się komunikują z embedded, ale same nie są
embedded i kilka bajtów w tę czy tamtą mnie nie rusza.
> To troche stoi w poprzek koncepcji hermetyzacji. Skogo GUID jest
> specyficzny dla konkretnej implemetacji klasy, składanie ich w jednym
> plików jest nierozsądne, nie powinny wiedzieć o swoim istnieniu.
Od strony embedded - oczywiście masz rację. To są osobne urządzenia i
nic jednemu do drugiego.
Ale ja piszę o moim programie komunikującym się z nimi.
Potrzebuję zdefiniować N pochodnych klasy Tabelka z których każda z nich
robi dokładnie to samo ale posługuje się innym GUID.
Jak definicje klas pochodnych byłyby kilkulinijkowe w pliku h to jak dla
mnie bardzo rozsądne jest mieć je wszystkie razem. Jak piszę program,
który komunikuje się z jakimś z naszych urządzeń to wkładam ten plik i
mogę działać.
Mój program często komunikuje się z wieloma z tych urządzeń.
Na przykład program produkcyjny.
Najpierw wrzuca do mikrokontrolera urządzenia program testowy.
W tym celu używa naszego programatora PDI (GUID nr 1).
Następnie przeprowadza test urządzenia.
W tym celu używa testera (GUID nr 2). W czasie testu z urządzeniem łączy
się przez jego normalne kanały komunikacyjne. Jeśli jest to urządzenie
USB to jego program testowy to GUID nr 3.
Jak wszystko dobrze to pobiera odpowiedni HEX, wkłada do niego numer
urządzenia i zestaw kluczy dla niego.
Klucze pobiera z kolejnego urządzenia - GUID nr 4.
Programuje urządzenie. Po zaprogramowaniu jeszcze ostatnia kontrola -,
czy urządzenie prawidłowo się odzywa. Jeśli jest to urządzenie USB to
będzie to GUID nr 5.
To w przypadku produkcji jednego urządzenia.
Ale ten program, służy do produkcji wszystkich naszych produktów. Dla
drugiego urządzenia USB dojdą kolejne dwa GUIDy bo program testowy dla
innego hardware'u będzie miał swój GUID i docelowy program znów swój.
Mi pasuje jak tabelki umiące wyszukiwać urządzenia o poszczególnych
GUIDach są zdefiniowane w jednym pliku.
Być może template miałoby tu faktycznie sens żeby do programu weszły
tylko te wersje faktycznie użyte, ale jak poszczególne klasy to tylko
inny konstruktor i być może (zapisany w h) robiony z automatu jako inline.
> inline może zrobić się również, kiedy jesteś w pliku cpp. Zainteresu się
> "lto" - w embedded to może być krytycznie ważny bajer, a mało kto
> piszący kod na uC wie że w ogóle istnieje.
Ja też nie wiem. Nie piszę embedded.
O ile pamiętam w pliku cpp też mogę użyć słowa inline (nigdy nie
użyłem), które dla kompilatora jest jedynie wskazówką.
Zamiast tego wolę to co chciałbym inline zapisać w h.
Zazwyczaj funkcje w klasie, które korzystają z innej funkcji jedynie
wstawiając jakiś parametr zapisuję od razu w h.
Na przykład typową moją funkcją w klasie jest:
void RozkazACK(char c);
Czyli wysłanie rozkazu (w ramce, którą funkcja umie poskładać) i
odebranie potwierdzenia ACK i weryfikacja. Jak się nie zgadza to wyjątek.
I potem mam takie funkcje jak:
void Rozkaz_C(){RozkazACK('C');}
void Rozkaz_z(){RozkazACK('z');}
itd.
wszystko zapisane tylko w pliku h.
> Nowe C++ mają interesujace metody inicjacji struktur, może warto
> zainteresować się własnie dlatego standardami C++xx. Jedna już Ci
> pokazałem: { 10, 20 } konstruje strukturę z dwoma intami, jesli
> występuje w kontekscie, gdzie takie coś jest sensowne.
Czyli pod jakimś nowym C++ pewnie to co próbowałem to by zadziałało.
Przed pisaniem tego posta zrobiłem próby i przygotowałem sobie (na
drugim komputerze) plik do pokazania co dokładnie mi nie działało.
To jest cała treść pliku cpp:
--------------------------------
#include <windows.h>
GUID g= {0x00112233,
0x4455,0x6677,{0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0x
FF}};
void fun(GUID g);
void fm()
{
fun(g);
fun({0x00112233,
0x4455,0x6677,{0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0x
FF}});
}
-------------------------------------
Drugiego wywołania funkcji fun Builder 5 nie akceptuje.
Próbowałem dawać dodatkowe nawiasy i nic.
Mój problem rozwiązało by też jakbym potrafił przekonwertować ciąg
bajtów na GUID, bo ciąg bajtów daje się wpisać jak łańcuch.
Ale o ile się nie mylę to też mi to nie wychodziło jakoś prosto. Z tego
komentarza co sobie napisałem wynika, że jakoś problem dawał się
rozwiązać ale było bardziej zagmatwane niż deklaracje zmiennej GUID i
jej użycie i dlatego tak to powpisywałem.
A teraz miałem nadzieję, że jednak się jakoś da.
Czyli wygląda, że usiłowałem uzyskać coś co nowsze już umieją.
Możliwe, że teraz jak już (od niedawna) jestem pod Windows 10 z którym
Builder 2010 się nie gryzie to mogę się stopniowo przenieść pod niego.
Mimo, że to 2010 a kolejne wersje C++ zaczynają się od 11 to kto wie
mogli coś tam zrobić sami z siebie a potem zostało to wciągnięte w standard.
P.G.
Następne wpisy z tego wątku
- 25.07.22 21:29 heby
- 26.07.22 13:53 Piotr Gałka
- 26.07.22 14:16 Piotr Gałka
- 26.07.22 14:55 heby
- 26.07.22 20:05 Piotr Gałka
- 28.07.22 20:55 Piotr Gałka
Najnowsze wątki z tej grupy
- SEP 1 kV E
- Aku LiPo źródło dostaw - ktoś poleci ?
- starość nie radość
- Ataki hakerskie
- Akumulatorki Ni-MH AA i AAA Green Cell
- Dławik CM
- JDG i utylizacja sprzetu
- Identyfikacja układ SO8 w sterowniku migających światełek choinkowych
- DS1813-10 się psuje
- Taki tam szkolny problem...
- LIR2032 a ML2032
- SmartWatch Multimetr bezprzewodowy
- olej psuje?
- Internet w lesie - Starlink
- Opis produktu z Aliexpress
Najnowsze wątki
- 2024-12-12 Warszawa => Administrator Bezpieczeństwa IT <=
- 2024-12-12 Ostrów Wielkopolski => Trener zespołu sprzedaży Call Center <=
- 2024-12-12 Kraków => Key Account Manager <=
- 2024-12-11 SEP 1 kV E
- 2024-12-11 DNS restrictions are on
- 2024-12-11 wielkie bu
- 2024-12-11 Białystok => Inżynier bezpieczeństwa aplikacji <=
- 2024-12-11 Aku LiPo źródło dostaw - ktoś poleci ?
- 2024-12-11 Warszawa => Specjalista Bezpieczeństwa Informacji <=
- 2024-12-11 Wrocław => Application Security Engineer <=
- 2024-12-11 Warszawa => Analyst in the Trade Development department (experience wi
- 2024-12-11 Lublin => Programista Delphi <=
- 2024-12-11 Motodziennik #305 Nowy ELEKTRYK za 350 złotych miesięcznie? Kreatywne kredytowanie problemów
- 2024-12-11 Warszawa => Spedytor Międzynarodowy <=
- 2024-12-11 Katowice => Key Account Manager (ERP) <=