-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.man.lodz.pl!newsfeed.pionier.net.p
l!3.eu.feeder.erje.net!feeder.erje.net!weretis.net!feeder8.news.weretis.net!new
s.mixmin.net!aioe.org!news.chmurka.net!.POSTED.213.192.88.68!not-for-mail
From: Piotr Gałka <p...@c...pl>
Newsgroups: pl.misc.elektronika
Subject: Re: Rynek pracy STM32
Date: Mon, 25 Jul 2022 20:40:28 +0200
Organization: news.chmurka.net
Message-ID: <tbmo2u$oji$1$PiotrGalka@news.chmurka.net>
References: <tardm4$3173v$1@dont-email.me> <tb6dag$144m0$1@dont-email.me>
<1...@g...com>
<tb6gpj$3gt$2@gioia.aioe.org>
<2...@g...com>
<tb6v4b$rua$1$Janusz@news.chmurka.net> <tb7p64$vt1$1@gioia.aioe.org>
<tb8i4k$qld$1$PiotrGalka@news.chmurka.net>
<tb8m06$t8s$1$cezar91@news.chmurka.net>
<tb8pqg$vgi$1$PiotrGalka@news.chmurka.net> <tb8qeq$1jm46$1@dont-email.me>
<tb9hi8$ftq$1$PiotrGalka@news.chmurka.net> <tb9iap$1prti$1@dont-email.me>
<tb9ml5$j7v$1$PiotrGalka@news.chmurka.net> <tb9qse$1rups$1@dont-email.me>
<tbbims$n4p$1$PiotrGalka@news.chmurka.net> <tbbkla$2d30n$1@dont-email.me>
<tbbnli$q74$1$PiotrGalka@news.chmurka.net> <tbboj6$2e31l$1@dont-email.me>
<tbeimj$kn1$1$PiotrGalka@news.chmurka.net> <tbekjb$38a1b$1@dont-email.me>
<tbm63s$d94$1$PiotrGalka@news.chmurka.net> <tbm9fb$19cgt$1@dont-email.me>
<tbmemr$ihn$1$PiotrGalka@news.chmurka.net> <tbmfd2$1aruc$1@dont-email.me>
NNTP-Posting-Host: 213.192.88.68
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Mon, 25 Jul 2022 18:40:30 +0000 (UTC)
Injection-Info: news.chmurka.net; posting-account="PiotrGalka";
posting-host="213.192.88.68"; logging-data="25202";
mail-complaints-to="abuse-news.(at).chmurka.net"
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:91.0) Gecko/20100101
Thunderbird/91.11.0
In-Reply-To: <tbmfd2$1aruc$1@dont-email.me>
Content-Language: pl
Xref: news-archive.icm.edu.pl pl.misc.elektronika:773472
[ ukryj 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
- nie naprawiam więcej telewizorów
- Zrobił TV OLED z TV LCD
- Zasilacz USB na ścianę.
- Gniazdo + wtyk
- Aliexpress zaczął oszukiwać na bezczelnego.
- OpenPnP
- taka skrzynka do kablowki
- e-paper
- 60 mA dużo czy spoko?
- Dziwne zachowanie magistrali adresowej w 8085
- Współczesne mierniki zniekształceń nieliniowych THD audio, produkują jakieś?
- Jaki silikon lub może klej?
- Smar do video
- Litowe baterie AA Li/FeS2 a alkaliczne
- "ogrodowa linia napowietrzna"
Najnowsze wątki
- 2025-03-05 Środa Wielkopolska => Konsultant wewnętrzny SAP FI/CO <=
- 2025-03-05 Zielona Góra => Senior Field Sales (system ERP) <=
- 2025-03-05 Warszawa => Data Engineer (Tech Lead) <=
- 2025-03-05 Kraków => Business Development Manager - Network and Network Security
- 2025-03-05 Zaniepokojeni mieszkańcy
- 2025-03-05 Ile pieniędzy ma bank?
- 2025-03-05 Ostrów Świętokrzy => Node.js / Fullstack Developer <=
- 2025-03-05 Białystok => Architekt rozwiązań (doświadczenie w obszarze Java, A
- 2025-03-05 Warszawa => Frontend Developer (Angular13+) <=
- 2025-03-05 Warszawa => Frontend Developer (obszar Angular13+) <=
- 2025-03-05 Chiny-Kraków => Backend Developer (Node + Java) <=
- 2025-03-05 Warszawa => JavaScript / Node / Fullstack Developer <=
- 2025-03-05 China-Kraków => Key Account Manager IT <=
- 2025-03-05 China-Kraków => Senior PHP Symfony Developer <=
- 2025-03-05 Gdańsk => Specjalista ds. Sprzedaży <=