eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaRynek pracy STM32Re: Rynek pracy STM32
  • 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.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: