Elektroda.pl
Elektroda.pl
X
OptexOptex
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Visual Studio c++, arduino

03 Lip 2018 21:17 1119 58
  • Poziom 33  
    Witam!

    Zabieram się za naukę budowania prostych apek windowsowych do sterowania procesami arduino. Siłą rzeczy muszę też uczyć się c++ ze względu na kolejne semestry na studiach.

    Otóż problem leży w tym że jestem na etapie suwaka "TrackBar", chciałbym przesyłać dane przez port szeregowy. Mam szkic programu na arduino żeby odczytać stringa bo już dawniej rozważałem podobny problem, ale nie wiem jak wysłać tego stringa.

    Jestem otwarty na literaturę i poradniki.

    W arduino mam taką koncepcje

    Kod: c
    Zaloguj się, aby zobaczyć kod


    W c++ nie wiem jak to rozważyć, mam takie coś


    Kod: c
    Zaloguj się, aby zobaczyć kod



    Dzięki za pomoc
  • OptexOptex
  • Użytkownik usunął konto  
  • Poziom 33  
    @nowyARM Ogólnie to w jednym programie miałem 4 odczyty1, odczyt2 itd przez co sterowałem z poziomu aplikacji(app inventor) 4 suwakami które już dalej działały zgodnie z wsadem w uC. Ja bazowałem już na gotowych przykladach. Co w takim razie proponujesz?
  • Użytkownik usunął konto  
  • OptexOptex
  • Poziom 33  
    @nowyARM

    Jest to całkiem sensowne bo suwakiem i tak będę przesyłał wartości liczb całkowitych np 0-100 czty 0-255. Jednak mam dwa pytania.
    1. Jak wygląda funkcja która odczytuje aktualny stan wartości suwaka i przesyła na serial.
    2. Co jeśli suwaków jest więcej? Czy nie trzeba przesyłać stringa aby odpowiedni warunek w programie uC wiedział pod jaką zmienną zapisać przesłaną wartość z suwaka?
  • Użytkownik usunął konto  
  • Poziom 37  
    Wojciech. napisał:


    W c++ nie wiem jak to rozważyć, mam takie coś


    Kod: c
    Zaloguj się, aby zobaczyć kod





    Stawiam dolary przeciw orzechom, że to nie jest jezyk C++, tylko dawniej zwany Managed C++ / obecnie C++/CLI, będący daleką nadbudową i innym, niezależnym językiem.
    WSZYSTKO jest inne od C++, od modelu pamięci, reguł wykonywania kodu, po nie dające się wyprowadzić z C++ elementy syntaktyczne (nie jest rozszerzeniem C++ jak Qt czy MFC). Wybór syntaxu pozornie "podobnego do C++" ale zupełnie niekompatybilnego już przy prostej strukturze danych, dla mnie jest błąd.
    Na pewno przy zakładaniu projektu widziałeś oddzielne opcje C++, w wybrałeś Managed C++

    O ile używać kodu zarządzanego (.NET) to z tego "niby C++" to ma najmniejszy sens, C# jest słusznie najbardziej powszechnym językiem. Kod zarządzalny bardzo ma sens, i warto, w czymś czystym, tzn C#

    Sugeruję w ogóle przejście do C#, nie badziesz miał nic mniej możliwości, tylko ładniejszy syntax. Na tym etapie tez musisz szukać wiedzy z .NET, a podanej w C++/CLI jest jej szczególnie mało (i słusznie, bo to pokraka nie język).

    Czytając dane obce w .NET musisz wiedzieć, twardo założyć, czy to są string (a te są w unicode, może na przejściu konwersja w jawnie podanej stronie kodowej), bajty. Już nie będzie znak=bajt.
    Kontrolki GUI są bardzo dalekie od Win32 - są takie same jak w C#.
  • Poziom 38  
    Dokładnie jeśli chodzi o c++/CLI w przypadku studiów nie ma sensu się go uczyć, tam bardziej przydatne będzie klasyczne C++. Praktycznie patrząc na platformę .NET to jak kolega wspomniał najczęściej używa się .NET C#, natomiast C++/CLI, F# itp. są to specyficzne języki do realizacji specyficznych celów i są one raczej dodatkami do C# pozwalającymi zrealizować czasem specyficzne cele... Ale pomińmy C# i cały .NET bo nie o to chodzi...

    W przypadku chęci pisania w C++ i może kolega wybrać projekty typu Visual C++ General lub Win32 (ale nie CLI jak to kolega zapewne zrobił).

    Natomiast co do obsługi np. portu szeregowego pod Win trzeba się zapoznać z WinAPI....
  • Poziom 37  
    Wojciech. napisał:
    @JacekCz

    Przepraszam to nie jest C++ tylko C#. Przynajmniej taki projekt otworzyłem.


    Z dwóch linijek C#/CLI nie odróżni (ale z jednej odróżnię od standardowego C++)

    C# jest bdb wyborem, nie zrobisz sobie krzywdy jak będziesz w tym budował kompetencje. a C++ jest już dinozaurem, nie wiedzę sensu edukowania tzw "szerokich mas", zwłaszcza że ogromny obszar (i olbrzymie obszary nieprzenośne, nie zestandaryzowane) . Nieliczni, ale naprawdę nieliczni będa w tym dobrzy.

    Obecność tego skrótu (mowa o C++) w edukacji jest wymagana jak jedzenia ciastek małym srebrnym widelczykiem.
  • Poziom 33  
    Ogólnie dużej kariery w dziedzinie IT sobie nie wróżę bo w przyszłości będę pewnie kodził sterowniki w przemyśle a to trochę inna bajka. Ogólnie z kolegami próbujemy zrobić manipulator sterowany przez jakiś software na windowsie. Myślałem nad MATLAB ale potrzeba licencję do paczek arduino, więc myślałem żeby coś w C# pogrzebać. Na razie planuje każdą oś sterować z suwaka.
  • Poziom 37  
    tplewa napisał:

    Natomiast co do obsługi np. portu szeregowego pod Win trzeba się zapoznać z WinAPI....


    Zapoznać sie z użyciem w .NET. Nie wykonuje tam się żadne "zmienienia API na WinAPI" że niby to port szeregowy. WSZYSTKO jest dostępne obiektowo z C# .NET w sposób spójny bezpieczny, właśnie listenerami jakie zacząłeś pokazywać, tylko musisz je zrozumieć.

    Np po głębokiej refleksji czym i gdzie jest znak/bajt raczej byś nie użył toString(), przynajmniej bez refleksji. Ale to dobrze, wiele języków do dziś w klarowny sposób nie przekroczyło tej granicy (znak/bajt) i np Delphi . Dobra wiadomość: Bajt nadal ma 8 bitów
  • Poziom 38  
    JacekCz napisał:
    tplewa napisał:

    Natomiast co do obsługi np. portu szeregowego pod Win trzeba się zapoznać z WinAPI....


    Zapoznać sie z użyciem w .NET. Nie wykonuje tam się żadne "zmienienia API na WinAPI" że niby to port szeregowy.


    Kolego ja zapoznawać się z C# nie muszę bo znam, ale kolega zapewne powinien się zapoznać z czytaniem ze zrozumieniem. Kolega tutaj w temacie pisze o chęci poznania C++ więc wspomniałem że jak np. pod Win32 chce obsłużyć port to powinien się zapoznać z Win API. Pomijam dyskusję czy warto poznawać C# bo pytający dokładnie określił że C++ będzie na studiach, a nie .NET C#...

    Odnośnie rozróżnienia C++/CLI i C# to np. "serialPort->Open();" i "serialPort.Open();" (Write zresztą to samo) można i w mniej niż jednej linii zobaczyć różnicę.
  • Poziom 37  
    nowyARM napisał:

    1. Ramka składająca się z nr suwaka i wartości jaką na nim ustawiono.


    Podrzucę Ci trick, w sumie nie będący trickiem, tylko dobrze zaplanowanym API.
    Każdy komponent .NET na właściwość Tag, każdemu ze swoich licznych suwaków możesz przypisać Tag = "Hej, ja jestem numer 4" (jak w oddziałach specjalnych, oczywiście tu prostą liczbę)
    Potem w listenerach nie posiadasz informacji globalnej, ale wiesz z co jest źródłem, a żródło ma Tag.

    Może tam być typ prosty (nawet z designera) np liczba / string, ale może być jakiś obiekt twojej klasy (z designera się nie da -z kodu konstruktora), który będzie wyrafinowanym nośnikiem stanu.

    Nie wiedząc o właściwości Tag się robi masakryczne decyzje w algorytmach, komponent wydobywa rodzicowi z gardła swoją nazwę, rozszyfrowuje ją itd, straszne

    Dodano po 7 [minuty]:

    tplewa napisał:


    Odnośnie rozróżnienia C++/CLI i C# to np. "serialPort->Open();" i "serialPort.Open();


    z kropką może być legalne w obu, ze strzałka już tylko w jednym. Managed C++ robi to można zrobić najgorzej: kilka syntaktyk (jeszcze by przeżył) i kilka semantyk dla wskaźników /referencji: wskaźnik C, referencja niezarządzana w stylu C++, referencja zarządzana .NET ....brrrr

    Plotki z powstawania C mówią, kiedy Dennis Rithcie pisząc standard wypił za dużo tequili (edit; przypomniałem sobie, w chwili w której zdecydował, że tablica nie będzie miała żadnej implementacji/definicji, tylko ciąg sąsiednich adresów, do dziś nas to kopie), może o Managed też kiedyś będą ujawnione.

    Dodano po 6 [minuty]:

    tplewa napisał:
    że C++ będzie na studiach,


    Taaaaa .... takie głębokie przeżycie, by przyjąć do wiadomości budowanie formatek w C++, a potem dowiedzieć się, ze jest to wiedza bezużyteczna. To idealnie pasuje do Zakuć Zdać Zapić Zapomnieć. Nieokreślone standardem, zrucona na implementację, Undefined Behaviour .... to mozna się zakochać.

    Moim zdaniem głęboka krzywdę się robi szerokim grupom ucząc ich C++, a główny powód to kompleksy autorów przedmiotów, którym się wydaje, że znają C++. Posiadających w CV Borland C++ to wyrzuciłem wielu *)

    *) tym niemniej to ciągle C++, trochę tylko posiniaczony aby być kompatybilnym z Delphi.
  • Poziom 38  
    ...a ja jeszcze napiszę tak jak już uczyć się c# to nie wiem czy jest sens obecnie brnąć w WindowsForms (które prędzej czy później M$ zapewne ubije). Lepiej brać się za WPF i nauczyć się pisania kodu aby oddzielać warstwę prezentacyjną od logiki. Generalnie przez różne funkcje typu bindowanie itp. sprawa z takimi sprawami staje się prostsza.

    Odnośnie przesyłania po serialu to stworzył bym sobie jakąś prostą ramkę z startem i stopem (można i jakieś CRC dodać), przesyłanie danych tekstowo niby intuicyjne dla człowieka - ale maszyna tego nie potrzebuje (w dodatku przesyła się mniej danych, mniej zajętej pamięci w małym procku bo mimo wszystko parsowanie tekstu trochę zajmuje itd.).

    Może śmieszne ale nabiera się IMHO dobrych nawyków... ktoś powie że nie te czasy itd. ok. Wiem teraz to wymyślają ludzie jakieś SOAP itp. i potem kończy się tak że do Cortex-a M7 muszę specjalnie dokładać zewnętrzny RAM aby takie tasiemce parsować i obsłużyć tylko głupi ONVIF w kamerce IP :)

    Natomiast kolego @JacekCz piszesz o C++ bzdury... błagam na .NET/Delphi świat się nie kończy... Tego języka mimo wszystko warto się uczyć...
  • Poziom 37  
    Wojciech. napisał:
    @JacekCz
    Chodzi o ten Tag?
    Visual Studio c++, arduino


    Tak, to jest ten Tag
    Mała drobna property o b dużym potencjale

    Nawiasem mówiąc starsze środowiska komponentowe też posiadały coś analogicznego (od Win API - mniej wygodne, o ile alokacja to ręczna)), ma takie coś komponent Borlandowy, javowski Swing, SWT, Fx, tylko programiści nieco za słabo przygotowani.
  • Poziom 38  
    Owszem WinAPI jest mało wygodne, dla tego M$ kiedyś wymyślił MFC które obecnie też jest prawie martwe (i też do zbyt wygodnych nie należało). Jednak nie zawsze o wygodę chodzi, z drugiej strony jak wspomniałem świat na .NET się nie kończy. Programowanie to nie tylko Windows :)

    Zresztą to jest inna bajka co tam jest w Borlandzie czy Javie... tylko czasem trzeba mieć trochę pokory - bo kolega widzę że potrafi jechać po wszystkich od wykładowców na studiach po innych programistach że nie przygotowani...

    Jeszcze co do "->" czy "." to designer w CLI/C++ zdefiniuje to tak: "private: System::IO::Ports::SerialPort^ serialPort1;" więc zostaje -> ;)

    Natomiast funkcja była by zdeklarowana tak:

    Code:

    private: System::Void trackBar1_Scroll(System::Object^  sender, System::EventArgs^  e)
  • Poziom 37  
    tplewa napisał:

    Może śmieszne ale nabiera się IMHO dobrych nawyków... ktoś powie że nie te czasy itd. ok. Wiem teraz to wymyślają ludzie jakieś SOAP itp. i potem kończy się tak że do Cortex-a M7 muszę specjalnie dokładać zewnętrzny RAM aby takie tasiemce parsować i obsłużyć tylko głupi ONVIF w kamerce IP :)


    Operujesz jakimiś mitycznymi bajkami. SOAP dawno nie w modzie (choć w zeszłym roku go użyłem), a komunikowanie języków VM, posiadających refleksię, serializację, to jest MIÓD (stąd łatwość JSON/XML) w stosunku do łączenia przez sieć C++. Apostołowie mikroserwisów niech ci wytłumaczą (ja takowym nie jestem).
    Komunikuję przez sieć słabe urządzenia javowskie (akurat protokołem thrift) z serwerem dotnetowskim, lekko łatwo i przyjemnie, Żadnego RAM nie kupiowałem. Mam w tym wdrożeniu najstarszy program MFC C++, szybciej go zabiję niż dorobię mu kompatybilność.

    A co do wyrabiania dobrych nawyków w C++, wytłumacz mi gdzie to zachodzi, bo masowo tu na elektrodzie widzę złe nawyki. Standard C++ jest taką cegłą, ze nieliczni czempioni to czytają, do tego biblioteki. Jest "dobry nawyk" #define, to miałeś na myśli?

    Wydajność: jeden z serwerów Apache ma dwie utrzymywane linie o tych samych funkcjach Java i C+, i wykonawcy C++ tłumaczą się, dlaczego jest wolniejszy w TPS od javy: alokacja w Javie kładzie ich na kolana.
  • Poziom 33  
    Jak w tym wypadku przesłać ramkę która będzie mnie informowała jaki to jest suwak(TAG) oraz aktualną wartość

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Może sypię trywializmami ale z takim przesyłem mam pierwszy raz do czynienia.
  • Poziom 38  
    Kolego nie wiem czy SOAP jest w modzie czy nie :) Jak by kolega nie wiedział to jest taki standard ONVIF https://www.onvif.org/ i niestety jest używany w praktycznie wszystkich liczących się kamerach IP i innym sprzęcie odnośnie kontroli dostępu itp.

    Natomiast kolega nie potrafi jednego zrozumieć - nie chodzi o samą serializację tylko o zasoby mikrokontrolera. Co innego jak piszemy na PC co innego jak na małym ARM gdzie 320KB RAM to luksus... a często ma się sporo mniej...

    Kolega żyje chyba w jakimś alternatywnym świecie... Co mnie obchodzi to co jest na elektrodzie jeśli chodzi o nawyki...

    Natomiast chętnie się zapytam kolegi skoro tak jedzie po wszystkim. Co kolega stworzył w życiu np. jakiś produkt używany w naszym kraju i zagranicą ? Może kolega się pochwali ?
  • Poziom 37  
    tplewa napisał:

    ... tylko czasem trzeba mieć trochę pokory - bo kolega widzę że potrafi jechać po wszystkich od wykładowców na studiach po innych programistach że nie przygotowani...


    Budować obok całą infrastrukturę liczenia komponentów wizulanych, zaprzęganie w to zmiennych globalnych (!), gdy standardowe API ma to rozwiązane ... nazywasz to dobrze przygotowanym programistą? Najpierw tzreba poznać api a potem wyważać otwarte drzwi wierząc, ze tak jest lepiej, szybiej

    ps. zdanie, że uczy bo za mało wie do przemysłu, pochodzi nauczyciela
  • Poziom 38  
    JacekCz napisał:
    tplewa napisał:

    ... tylko czasem trzeba mieć trochę pokory - bo kolega widzę że potrafi jechać po wszystkich od wykładowców na studiach po innych programistach że nie przygotowani...


    Budować obok całą infrastrukturę liczenia komponentów wizulanych, zaprzęganie w to zmiennych globalnych (!), gdy standardowe API ma to rozwiązane ... nazywasz to dobrze przygotowanym programistą? Najpierw tzreba poznać api a potem wyważać otwarte drzwi wierząc, ze tak jest lepiej, szybiej

    ps. zdanie, że uczy bo za mało wie do przemysłu, pochodzi nauczyciela


    Powiem tak osobiście staram się nie jechać po innych bo nie wiem kogo kolega ma na myśli że nie zna API. Pisze ogólnie o programistach. Zapewne są różni i klepacze kodu i dobrzy... ale to nie daje prawa koledze do sypania ogólnikami czy krytykowania sensowności C++

    Natomiast jak już kolega chce krytykować to konkretnie z odnośnikami... jacy programiści tak mówią itd. Natomiast co do uczelni itd. to one nie są od nauczania C++, studia powinny dać podstawy i nauczyć logicznego myślenia - reszta to już podejście studenta czy chce się czegoś nauczyć więcej w danym kierunku, czy nie. Jak nie to zakończy karierę jako klepacz kodu na jakiejś nędznej pensji lub na kasie w Tesco i tyle...
  • Poziom 37  
    tplewa napisał:
    Kolego nie wiem czy SOAP jest w modzie czy nie :) Jak by kolega nie wiedział to jest taki standard ONVIF https://www.onvif.org/ i niestety jest używany w praktycznie wszystkich liczących się kamerach IP i innym sprzęcie odnośnie kontroli dostępu itp.


    widząc AB,B,C T który warto czytać (mowa o bezinteresownym czytaniu)

    [quote="tplewa"
    Natomiast kolega nie potrafi jednego zrozumieć - nie chodzi o samą serializację tylko o zasoby mikrokontrolera. Co innego jak piszemy na PC co innego jak na małym ARM gdzie 320KB RAM to luksus... a często ma się sporo mniej...
    [/quote]

    A i nawet na małym RAM można uzyć właściwego parsowania XML (nie DOM, ale SAX).

    Moja apka na telefonach zużywa do parsowania jakiejś śmiesznej ilości RAM, praktycznie gdzieś na końcu tabelki. Sądzę, że "koperta" najwyżej osiąga wielkość danych, albo mniej. Żadne sytuacje że koperta jest 10x większa od informacji.

    Osobiście się cieszę, że na tym projekcie zrobiłem trochę "ivestigations" i dwóch kandydatów końcowych (Google Protobuf - na owe czasy nie posiadał RPC) oraz Apache Thrift użyłem tego drugiego. Cieszę się, że nie wpuściłem się w ręczne klejenie JSON (choć mają dziwną potzrebę mogę to transmitować nie binarnie, w JSON). Potem nabyłem w nim wiedzy, powtarzam jak się pojawia temat. Nie wrócę już do ręcznie liczonych ramek.
    Dam podkład: oba protokoły mają przemyślane jak się zachować jak jedne ze stron będzie "starsza", jedna "nowsza". Zrobić to na własnej ramce ... brrr Łączenie różnych (nieznanych w chwili designu) języków, wszystko da się zrobić.

    To są rzeczy, które każdego kwartału dzieją się na rynku
  • Poziom 38  
    JacekCz napisał:

    A i nawet na małym RAM można uzyć właściwego parsowania XML (nie DOM, ale SAX).


    Tak kolego wiem... APKA na telefon to dalej nie to o czym piszę. Ja piszę o czystym klepaniu w C/C++ gdzie kolega ma bardzo ograniczone zasoby i RAM i pamięci programu (Flash) więc z gotowymi bibliotekami często też nie poszaleje. Owszem można dać ARM-a z Linuxem - tylko pytanie po co. Choć to obecnie modne by dawać takie RB-PI tam gdzie 8051 by wystarczył. Fajnie jak to jest zabawa, co innego jak się robi produkt który chce się sprzedać i takie rozwiązanie podniesie niepotrzebnie jego koszt. Tutaj poza programowaniem dochodzi koledze produkcja elektroniki która w przypadku bardziej rozbudowanych procesorów jest droższa i tyle... więc nie jest tak prosto jak kolega pisze już na coś zrobionego czy komputer z sporymi zasobami, systemem operacyjnym itd.

    Niestety smutna prawda jest taka że nawet więcej czasu przy kodzie to jest koszt jednorazowy, większy koszt elektroniki to jest większy koszt każdej sztuki urządzenia. Niestety to się rozpatruje trochę inaczej i idzie na kompromisy...


    Odnośnie ONVIF to każdy profil jest opisany do czego służy... Sam w tym nie siedzę po prostu miałem potrzebę sterowania kamerą IP zgodną z ONVIF w produkcie i tyle...
  • Poziom 37  
    EDIT.

    Czy zakładam, że jakieś ilości są słabe / głupie ... nie wiem ...
    Wiem że mam ogólne przekonanie że autor jakiegoś API był inteligentny (dopóki sam nie udowodni, że inaczej). Dajny na to w każdym środowisku GUI na początku będę szukał czegoś pogodnego do Tag, bo inteligenty twórca na pewno to przewidział.

    Źródła krytyki C++ są znane, stare materiały z czasów postawiania Javy (James Gosling i zespół) są pełne krytycznych odniesień.
    Książki o donecie z żółtymi okładkami microsoftu mają zakaz od działu prawnego porównywać do Javy (wszak to prawie Java i najbardziej się nasuwa), ale niedyskretnie ujawniać błędy C++ to wolno (Język C# wyd 3 Anders Hejlberg i inni).
    Oba języki powstały przez utrącenie tych cech C++ (wytworzonych przez uniwersyteckich hackerów z brodami), które się nie sprawdziły w przemyśle.

    Łącznie z chudziutki zestandaryzowaniem. "nie standaryzujemy obliczeń stałoprzecinkowych aby programistom nie odbierać wolności" to jest chore (autentyczna wypowiedź którejś najważniejszej brody uzyskana ok 1999. Siła standaryzacyjne taka, że nawet nie ma siły wymusić używania std:stringu. Prywatnie korespondowałem ze współaktorem jakieś istotnego parsera XML. "Nie użyliśmy std::string bo nasz jest szybszy o ileś ns". O tym ile będzie konwertowany na wejściu/wyjściu się zapomniało pomyśleć

    Kolejna anty-nauka C++ to arduino. Tam nikt nie nabierze dobrych nawyków. Tam nawet słowo "biblioteka" nie jest jasne, a pakietowanie biblioteki (np String) z tzw płytką to ta choroba (autentycznie String na jednej płytce miał c_str(), na drugiej nie miał)

    To język dla przemysłowego programowania masowymi programistami, ogolonymi i nie w kratach? Żądną miarą. Dla brodatych hackerów w zamkniętym kręgu/ Pewnie tak.
  • Poziom 38  
    @JacekCz

    Co do Arduino to się zgodzę - to jest bardziej platforma dla osób które bez poznania procesora chcą sobie coś zrobić i tyle. Niestety uczy to złych nawyków, ale to zależy też od osoby jak potoczy się jej dalsza edukacja.

    Tak samo nie chodzi o brodatych hackerów, tylko jak wspomniałem czasem prostą kalkulację biznesową. Generalnie jak mówimy o całym produkcie to dobranie zarówno platformy sprzętowej jak i spraw związanych z oprogramowaniem (użytych języków itd. jest bardziej złożone). W przypadku np. Java niech kolega nie zapomni o polityce Oracle z która i Google miało problem w przypadku Androida jak się Oracle o tantiemy upominało ;)

    Natomiast co do tematu. To rozwiązać to można na wiele sposobów. O ile od strony PC problemu nie ma bo tutaj mamy do dyspozycji wiele narzędzi. To poczciwy AVR ma już pewne ograniczenia.

    Dlaczego wspomniałem o ramce... bo sporo spraw ułatwia (może być i tekstowa np. coś na wzór NMEA 0183 w GPS). Przykładowo co będzie przy źle pomyślanej komunikacji jak odepniemy kabelek od RS232 i podłączymy za moment ? Ot mogą dojść dwie porcje danych całkowicie ze sobą nie związane... jak to wyłapać też warto pomyśleć.
  • Poziom 37  
    tplewa napisał:
    ...Ja piszę o czystym klepaniu w C/C++ gdzie kolega ma bardzo ograniczone zasoby i RAM i pamięci programu (Flash) więc z gotowymi bibliotekami często też nie poszaleje. ....


    Zrobię raz jakiś czas coś na mikro, nie tracę z tym kontaktu. Zrobiłem klucz krótkofalarski w inteligentnym C++ AS7, Atmega8 (de facto z wbudowanym schedulerem), obiecuję sobie że za miesiąc to podciągnę i opublikuję z komentarzami. Tym niemniej w kilku trickach C++ nie tylko nie miałem narzutu nad C, a pojedyncze bajty oszczędności.

    Panuje tam wiara, że C samo z siebie (w odróżnieniu od C++) czyni programy doskonałe, wielka kłótnia "gwiazdka i" czy "i gwiazdka" (ewentualna oszczędność 1-2 CPU) ... po czym wyciągamy armatę i sscanf *) konwertujemy integera (kilka tysiecy CPU i RAM). Walone są koszmarnie nieoptymalne konstrukcje z wiarą że to najlepszy język"

    To jest wiara i przesądy, a nie wiedza profesjonalna. Jak (znana od 40 lat w różnych wersjach anegdota) seks nastolatków. Wszyscy o tym mówią, niewielu to robi. Ci co robią, nie robią tego dobrze, Każdy myśli, że inny robi to lepiej. Ci co robią, nie robią tego bezpiecznie

    sscanfa i printfa tak głęboko spatchowałem, zachowując kompatybilność w wybranych obszarach, że moge się czuć autorem. To były czasy tzw programów rezydentnych w DOS. Jak widzę scanf prostego integera, to serce mi pęka.