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

Arduino i programowanie w Python - dlaczego nie?

26 Sie 2019 03:44 1419 22
  • Poziom 17  
    Programowałem jako dzieciak w basic, później w szkole mialem Pascala. Nigdy jednak nie doszedłem do jakiegoś konkretnego poziomu. Podstawy są, logika jest. Mam ochotę nauczyć się programować arduino. Mam ochotę np. zbudować tester do lokomotyw i wagonów (pracuję w amerykańskim PKP, albo dokładniej WKD). Kabel do komunikacji kontrolującego wagonu z lokotywą ma 27 pinów, prawie każdy z nich ma swoją funkcję. Urządzenia, których używamy są zbudowane lata temu przez pracowników i toporne (skrzynki na kołach). Nowe urządzenie mogło by mieć np wyświetlacz dotykowy LCD i działać zdalnie.
    Teraz konkret.
    Od jakiegoś czasu poszukuje dobrej odpowiedzi na moje pytanie. Wszędzie, na elektrodzie też, ktoś cos wyjaśni ale to mnie nie zadowala.
    Wiem, że Arduino najlepiej programuje się w C/C++ i rozumiem dlaczego, mimo to mam ochotę nauczyć się Pythona. Jest prosty, popularny, uniwersalny. Napiszę skrypt na arduino albo aplikacje do Windowsa/Androida. Są kursy programowania arduino w Pythonie.
    Czy warto nauczyć się programować Arduino w pythonie? Jakie są ograniczenia/różnice w porównaniu z C/C++.
    Dlaczego nie powinienem programować Arduino w Pythonie?
    Wyjaśni ktoś człowiekowi, który ma coś w głowie ale nigdy nie programował na poważnie?
    Z zawodu jestem elektronikiem.
  • Relpol przekaźniki nadzorczeRelpol przekaźniki nadzorcze
  • Poziom 31  
    Witam.

    Kolejna programowa nakładka na coś co powinno być programowane w asm.
    Pierwsze podstawowe pytanie ile to ma błędów.

    Każdy kompilator popełnia błędy. Jak według Ciebie to jest z Python ma więcej czy C które jest używane prawie przez cały świat piszący oprogramowanie.
    Algorytm napisany w C też łatwo można przenieść z procesora na procesor. Producenci dostarczają środowiska które są na bieżąco z nowościami przez nich produkowanymi.
    Jak inne środowiska mają za tym nadążyć.

    Każde duże ułatwienie odsuwa cię od możliwości wykorzystania procesora ma maksa.
    Projekty napisany C z 90% wykorzystanie flash, w przypadku Arduino nie zmieści się w tym samym procesorze. Kod zajmie jakieś 130% flash-a.

    Krótko się bawiłem w Arduino, po prostu jest to strata czasu.

    A dlaczego tak forsują Python-a? By Ty jako programista zostawiasz po sobie źródła, filozofa pracodawcy.
  • Poziom 29  
    Również uważam, że Python na Arduino to bardziej ciekawostka niż użyteczne narzędzie. Python jest językiem skryptowym, do działania potrzebuje określonego środowiska, które może zapewnić system operacyjny o zdecydowanie większych zasobach niż Arduino. Bałbym się w tym środowisku uruchamiać coś co zawiera więcej niż kilkadziesiąt linijek kodu. Do tego mam wątpliwości ile bibliotek Pythona jest w stanie działać na Arduino. Jest ogromna szansa, że to się wysypie od razu po uruchomieniu.
    Osobiście radziłbym programować w Pythonie pod ciut większą platformą, np. Raspberry Pi, które jest pełnoprawnym Linuxem i Python ma szansę działać na nim bez większych problemów. Wygoda pracy jest również nieporównywalnie większa.
    Osobną kwestią, którą warto przemysleć jest bezpieczeństwo. Jeśli chcesz wykorzystywać urządzenie i program w kolejnictwie, to na pewno są tam zasady i normy regulujące bezpieczeństwo użytkowania sprzętu elektronicznego i oprogramowania wbudowanego. Upewnij się, że używanie własnych wynalazków nie spowoduje zagrożeń dla życia lub zdrowia, a w efekcie odpowiedzialności przed sądem.
  • Poziom 21  
    Na to pytanie nie ma jednoznacznej odpowiedzi.

    1. Jeżeli jest to Arduino z odpowiednio dużym ARM-em (czy też innym z odpowiednią ilością zasobów - np ESP) - to nie ma przeszkód. Jest mnóstwo implementacji (np. mikropython) i można bawić się do woli.
    2. Jeżeli jest to UNO czy MEGA to jest to IMO niemożliwe. Interpreter mikrokodu wymaga trochę zasobów i nie słyszałem o żadnej działającej implementacji. Istnieją za to takie rozwiązania, że program w pythonie wykonuje się na PC-cie a komendy związane ze sprzętem Arduino (ADC, PWM, GPIO ...) wysyłane są przez USB do arduino, na którym działa odpowiedni program do interpretacji tych poleceń.


    dasej napisał:
    Każdy kompilator popełnia błędy.
    R2D2 również, ale nieczęsto. Kompilator nie popełnia błędów, nie ma również świadomości, kompilator może mieć błędy spowodowane przez programistów, którzy to popełniają błędy dość często.

    dasej napisał:
    Każde duże ułatwienie odsuwa cię od możliwości wykorzystania procesora ma maksa.
    W jaki sposób C, czy C++ odsuwa od tego? Święta (i do tego 1e9 razy już przegrana) wojna asm-rowców?

    dasej napisał:
    A dlaczego tak forsują Python-a? By Ty jako programista zostawiasz po sobie źródła, filozofa pracodawcy.
    A czy pisząc w ASM dla jakiegoś szalonego pracodawcy nie zostawiasz źródeł? Nie ma code review - gdzie będziesz się spowiadał ze wszystkich swoich tajemnic i "myków"?. To jaka to różnica w jakim języku piszesz? Pracodawca dostanie dokładnie to samo (a raczej więcej więcej w ASM bo będzie chciał bardzo dokładnych komentarzy).
  • Specjalista - ESP32, ESP8266
    carefree napisał:
    Dlaczego nie powinienem programować Arduino w Pythonie?

    Nie ma czegoś takiego (realnego), jak programowanie w Pythonie z użyciem Arduino HAL. Jest "lekka" implementacja Pythona dla procesorów 8-bitowych (PyMite), ale nie ma ona nic wspólnego z Arduino i generalnie nie nadaje się do użycia.

    Dla platform sprzętowych opartych na ESP8266, ESP32 czy niektórych STM32 jest dostępny MicroPython, w formie dedykowanego firmware zawierający interpreter - tu znowu, nie ma to nic wspólnego z Arduino HAL.

    Płytki (moduły) określane potocznie, jak "arduinowe" niekoniecznie muszą być programowane z użyciem Arduino HAL i odwrotnie: chcąc używać Arduino HAL nie trzeba korzystać z gotowych modułów określanych i sprzedawanych, jako "arduinowe".
  • Poziom 32  
    To zależy do czego jest ten ekran LCD, np. ostatnio czytałem wiadomość: "Marynarka wojenna Stanów Zjednoczonych zrezygnuje z ekranów dotykowych do kontroli przepustnicy i steru, które obecnie zainstalowane są na niszczycielach. Jest to reakcja na raport ze zderzenia okrętu z tankowcem w 2017 r. - podał serwis The Verge." Tak że raczej okazuje się, że tam gdzie jest wymagana precyzja i pewność działania ekrany LCD okazały się ślepą uliczką.
    Arduino z C++, mnóstwem kursów, tutoriali, przykładów i gotowców w Internecie raczej będzie prostsze niż python. Ucząc się obsługi Arduino jeszcze nie założyłem żadnego postu z pytaniem, zwykle wystarczy odpowiednie do Google, jak na razie wszystkie problemy zostały rozwiązane zanim je napotkałem. Nawet patrząc na to forum, jest dział Arduino, ESP (i to raczej jako doklejka do Arduino i C/C++), AVR, ARM i PIC z C (niedobitki z BASCOM), nie ma działu python dla uC. Jak chcesz być pionierem, to OK.
  • Relpol przekaźniki nadzorczeRelpol przekaźniki nadzorcze
  • Poziom 21  
    carefree napisał:
    . Mam ochotę np. zbudować tester do lokomotyw i wagonów (pracuję w amerykańskim PKP, albo dokładniej WKD).
    Dopiero doczytalem to zdanie. Obawiam się, ze
    carefree napisał:
    Wyjaśni ktoś człowiekowi, który ma coś w głowie ale nigdy nie programował na poważnie?
    ze to jest niestety niemożliwe. Wątpię aby jakakolwiek aparatura używana w pracy z lokomotywami była niecertyfikowana i nie podlegała odpowiedniej normalizacji.

    Do tego z jakiegoś powodu firmy produkujące aparaturę serwisową/pomiarową dla branży transportowej zatrudniają tabuny wysoko opłacanych programistów.

    Zapomnij o arduino i programowania z kursów w Internecie przy projektowaniu urządzeń do użycia w tak profesjonalnym zastosowaniu
  • Poziom 18  
    Jeśli interesuje Kolegę połączenie Python z elektroniką to może Raspberry pi ?
  • Poziom 15  
    carefree napisał:
    (pracuję w amerykańskim PKP, albo dokładniej WKD)


    Skąd jesteś?

    Na twoim miejscu skupiłbym się bardziej na interfejsie pomiędzy wagonem a komputerem(car to USB albo coś bezprzewodowego) - będziesz miał możliwość wtedy oparcia softu o komputer/tablet/mobile zamiast o Arduino(moim zdaniem nie rozwojowe).

    Mając interfejs do kompa możesz mieć zarówno dotykowy ekran, jak możliwość automatycznego tworzenia raportu z testu(Amerykanie lubią to) czy raportowania dalej do jakiejs bazy danych/centrali.
  • Poziom 21  
    @ppc Te 27 pin złącza to są to są tak zwane MU (Multi Unit) używane przez kolej w USA. Napięcia to 0-74V + coś jeszcze czego nie pamiętam. Wszystkie urządzenia kontrolno pomiarowe podłączane do lokomotyw i wagonów muszą być certyfikowane.

    Jezeli nawet masz jakieś zrobione w u siebie stare nie certyfikowane - to właśnie dlatego, że to co było używane kiedy weszły zasady certyfikacyjne - mogło być używane dalej (bo kolej by została bez urządzeń).

    Nikt nie podłączy teraz jakiejś samoróbki do czegoś co niewłaściwie sprawdzone może spowodować trudne do wyobrażenia szkody. Wyobraź sobie sytuację, że takie urządzenie niepoprawnie podało sygnał przy np sprawdzaniu szczelności układu pneumatycznego i pociąg się wykoleił. Firma, która dopuściłaby do takiego zaniedbania zapłaciłaby niebotyczne odszkodowania i kary (nie licząc już postępowania karnego dla kadry nadzorczej).

    Dlatego pisanie o nauce pisania w Pythonie poprzez oglądanie tutoriali, aby zrobić kolejowe urządzenie diagnostyczne jest delikatnie ujmując niepoważne.
  • Poziom 10  
    chudybyk napisał:
    Również uważam, że Python na Arduino to bardziej ciekawostka niż użyteczne narzędzie. Python jest językiem skryptowym, do działania potrzebuje określonego środowiska, które może zapewnić system operacyjny o zdecydowanie większych zasobach niż Arduino. Bałbym się w tym środowisku uruchamiać coś co zawiera więcej niż kilkadziesiąt linijek kodu. Do tego mam wątpliwości ile bibliotek Pythona jest w stanie działać na Arduino. Jest ogromna szansa, że to się wysypie od razu po uruchomieniu.
    Osobiście radziłbym programować w Pythonie pod ciut większą platformą, np. Raspberry Pi, które jest pełnoprawnym Linuxem i Python ma szansę działać na nim bez większych problemów. Wygoda pracy jest również nieporównywalnie większa.
    Osobną kwestią, którą warto przemysleć jest bezpieczeństwo. Jeśli chcesz wykorzystywać urządzenie i program w kolejnictwie, to na pewno są tam zasady i normy regulujące bezpieczeństwo użytkowania sprzętu elektronicznego i oprogramowania wbudowanego. Upewnij się, że używanie własnych wynalazków nie spowoduje zagrożeń dla życia lub zdrowia, a w efekcie odpowiedzialności przed sądem.


    Tak, Phyton powstał jako język skryptowy ale w języku skryptowym nie oprogramujesz mikrokontrolera, więc potrzebny jest do tego kompilator. Kompilator natomiast sprawia, że taki język skryptowy staje się w danym przypadku językiem kompilowanym do kodu maszynowego. (Osobiście nie lubię Pythona, może dlatego że z wykształcenia jestem matematykiem i dla mnie bardziej logiczny jest C/C++). W takim przypadku ważniejsza jest jakość takiego kompilatora (to jaki kod on generuje) oraz umiejętności programisty niż sam język programowania.

    Co do arduino, to chyba nie do końca rozumiesz czym ono jest. Arduino to biblioteka (od strony programistycznej, nie sprzętowej), nie system operacyjny, czy jakiś egzotyczny język programowania jak sądzą co poniektórzy :] Składniowo w dużej mierze jest on zgodny z C++, można także używać składni i poleceń w C. To dzięki tej bibliotece i kompilatorowi powstaje kod binarny jaki możesz uruchomić na mikrokontrolerze. Kod wynikowy natomiast jest ściśle związany z jakością kompilatora, a nie samego języka programowania, oraz samej biblioteki. Tak na marginesie to programując w arduino, możesz uruchomić program na samym mikrokontrolerze, także bez bootloadera. Co do samego assemblera jakoby był on sposobem na wszelkie bolączki wydajności i jakości kodu to jest to zwykła bzdura. Może być ale nie musi, bo zależy to od naprawdę szerokiej wiedzy i umiejętności takiego programisty assemblera. Twórcy kompilatorów najczęściej taką wiedzę i umiejętności posiadają, także o wszelkich sztuczkach z kodem, stąd też często kod wynikowy kompilatora będzie dużo lepszej jakości niż ten assemblera spod palca średnio kumatego programisty. Zaawansowane kompilatory jak GCC czy clang są obecnie dość inteligentne i optymalizują kod wynikowy, aby był jak najbardziej optymalny (zwięzły i wydajny). Co prawda sam assembler także wymaga kompilatora, jednak tutaj sprawa jest bardziej skompilowana, aby taki kod wynikowy można było zoptymalizować skutecznie.

    Co do bezpieczeństwa. To nie rozwinąłeś tematu o co ci dokładnie chodzi. Sam kod przed kradzieżą możesz zabezpieczyć blokując możliwość skopiowania go z mikrokontrolera, co do bezpieczeństwa pod kątem nieodpowiedniego jego wykorzystania, to leży to w geście programisty, a nie samego języka. Jeśli program ma sterować jakimś sprzętem wifi, bluetooth, czy też chcesz uniknąć tzw. wyciekom pamięci itp. powinieneś najzwyczajniej wiedzieć co robisz, szczególnie w przypadku komercyjnego użycia napisanego przez ciebie programu, także dodatkowych bibliotek jakich chcesz użyć. Sam programuję w C++, którym straszy się dzieci jaki to ciężki do ogarnięcia i niebezpieczny poprzez wycieki pamięci język, powtarzając mity chyba jeszcze z lat 80tych. Obecnie jednak zarówno C++ jak i inne nowoczesne języki posiadają mechanizmy zabezpieczające prze takim wyciekiem pamięci. Jedne maja coś na kształt Garbage Collectora jak np. C#, lub inteligentne wskaźniki jak np. C++11 i wyższe. Warto więc znać dokładnie język jakiego się używa i używać możliwie jego najnowszych wersji :]

    Co do samych języków skryptowych jak Python, maszyn wirtualnych jak java, kodów bitowych w C# itp. To wiele z nich umożliwia także kompilacje kodu bezpośrednio do kodu maszynowego, bezpośrednio, czy też zamianę najpierw do C/C++ jak to robi np. Qt i następnie jego kompilację. To tak w celu zobrazowania w jaki sposób użyć można języka do celów do jakich w oryginale nie bylibyśmy w stanie.
  • Specjalista - ESP32, ESP8266
    gielo2 napisał:
    Składniowo w dużej mierze jest on zgodny z C++, można także używać składni i poleceń w C.

    Składniowo to on jest zgodny w 100% z C++, ponieważ Arduino HAL jest napisane w C++, za wyjątkiem niewielkiej części, która używa wstawek asemblerowych (w zależności od platformy sprzętowej). Wiadomo również nie od dzisiaj, że programując w C++ można używać składni i poleceń z języka C.

    gielo2 napisał:
    Tak na marginesie to programując w arduino, możesz uruchomić program na samym mikrokontrolerze, także bez bootloadera.

    Bootloader optiboot nie służy do uruchamiania programów, ale do ich ładowania poprzez interfejs UART.

    gielo2 napisał:
    C++ jak i inne nowoczesne języki posiadają mechanizmy zabezpieczające prze takim wyciekiem pamięci. Jedne maja coś na kształt Garbage Collectora jak np. C#, lub inteligentne wskaźniki jak np. C++11 i wyższe.

    C++ nie posiada wbudowanych mechanizmów garbage collector, jak C# czy Java, a tzw. "inteligentne" wskaźniki są na tyle inteligentne i zabezpieczają przed wyciekami pamięci, na ile inteligentny jest programista, który ich poprawnie używa.

    gielo2 napisał:
    czy też zamianę najpierw do C/C++ jak to robi np. Qt i następnie jego kompilację

    Biblioteka Qt jest napisana w C++. Wykorzystuje specyficzne makra do obsługi sygnałów i slotów, które są częścią makroprocesora C++.
  • Poziom 21  
    khoam napisał:
    ale do ich ładowania poprzez interfejs USB.
    zdecydowanie jednak przez UART. Optiboot nie wie nic o USB.
  • Poziom 10  
    khoam napisał:
    gielo2 napisał:
    Składniowo w dużej mierze jest on zgodny z C++, można także używać składni i poleceń w C.

    Składniowo to on jest zgodny w 100% z C++, ponieważ Arduino HAL jest napisane w C++, za wyjątkiem niewielkiej części, która używa wstawek asemblerowych (w zależności od platformy sprzętowej). Wiadomo również nie od dzisiaj, że programując w C++ można używać składni i poleceń z języka C.

    gielo2 napisał:
    Tak na marginesie to programując w arduino, możesz uruchomić program na samym mikrokontrolerze, także bez bootloadera.

    Bootloader optiboot nie służy do uruchamiania programów, ale do ich ładowania poprzez interfejs UART.

    gielo2 napisał:
    C++ jak i inne nowoczesne języki posiadają mechanizmy zabezpieczające prze takim wyciekiem pamięci. Jedne maja coś na kształt Garbage Collectora jak np. C#, lub inteligentne wskaźniki jak np. C++11 i wyższe.

    C++ nie posiada wbudowanych mechanizmów garbage collector, jak C# czy Java, a tzw. "inteligentne" wskaźniki są na tyle inteligentne i zabezpieczają przed wyciekami pamięci, na ile inteligentny jest programista, który ich poprawnie używa.

    gielo2 napisał:
    czy też zamianę najpierw do C/C++ jak to robi np. Qt i następnie jego kompilację

    Biblioteka Qt jest napisana w C++. Wykorzystuje specyficzne makra do obsługi sygnałów i slotów, które są częścią makroprocesora C++.


    1. Nie jest zgodny w 100% i że jest napisany w C++ o niczym nie świadczy. W C++ jest napisane także wiele innych języków, np. pierwsze wersje C# były w nim pisane co nie znaczy, że były one zgodne z c++ :] Widzisz c++ to nie tylko kompilator ale także biblioteka standardowa. która w całości nie została dołączona do arduino.

    2. Dokładnie, dlatego napisałem, że można taki kod uruchomić bez bootloadera arduino. nie napisałem dlaczego, bo uważam, że mając dostęp do elektrody, ma tez dostep do internetu i każdy może sobie to doczytać, aby się dowiedzieć czegoś nowego. O ile tego wcześniej nie wiedział oczywiście.

    3. nie posiada GC, o czym przecież napisałem, że posiada go np. C#, a C++ posiada inteligentne wskaźniki. Co do inteligentnych wskaźników masz rację, jednak użycie inteligentnych wskaźników jest dużo prostsze niż malloc i free w C, czy też nawet new i delete w C++. Że można skopać jak się nie wie jak używać? Jasne, że można. Skopać jednak można wiele rzeczy jak się nie wie jak ich używać. Inteligentne wskaźniki mają ułatwić życie programistom, aby mogli unikać błędów związanych z wyciekami, a nie ich wyręczać w myśleniu.

    4. Nie ważne w czym Qt został napisany, został napisany nie tylko w samym C++ ale też np. w JS, to nie ważne. Temat dotyczył sposobu kompilacji kodu języka do kodu maszynowego, który to język w założeniu nie miał być kompilowany do takiego kodu. W Qt można używać C++ do pisania programów (nie tylko okienkowych) i jest to standard ale można używać także Javy i Pythona. Dwa ostatnie jednak są najpierw tłumaczone na kod C++ i dopiero potem kompilowane, co nie znaczy, ze nie istnieją do nich indywidualne kompilatory, bezpośrednio kompilujące kod tych języków (wykorzystując inne biblioteki) do kodu maszynowego. Jest jeszcze taki twór jak QML oparty na JS. Samo Qt to nie tylko biblioteka ale cały freamwork, edytor kodu, edytor graficzny itp. itd. W ostatniej wersji Qt, także elementy stron internetowych z wykorzystaniem webassembly można w nim pisać. Nie tego jednak temat dotyczył.

    Podsumowując, nie ważny jest o tyle sam język programowania jak się co poniektórym wydaje ale kod wynikowy uruchamiany na takim mikrokontrolerze (pomijam tu elementy czytelności kodu źródłowego, łatwość i szybkość napisania programu). Ten zależy jednak głównie od kompilatora, a także umiejętności samego programisty. Jeśli autor uprze się programować w Pythonie i pozna, czy też zna dobrze ten język i znajdzie dla niego dobry kompilator pod AVR, to czemu nie ?
  • Specjalista - ESP32, ESP8266
    gielo2 napisał:
    1. Nie jest zgodny w 100% i że jest napisany w C++ o niczym nie świadczy. W C++ jest napisane także wiele innych języków, np. pierwsze wersje C# były w nim pisane co nie znaczy, że były one zgodne z c++ :] Widzisz c++ to nie tylko kompilator ale także biblioteka standardowa. która w całości nie została dołączona do arduino.

    Jest napisany w C++. Proponuję zajrzeć do (implementacja dla AVR i ESP32):
    https://github.com/arduino/ArduinoCore-avr/tree/master/cores/arduino
    https://github.com/espressif/arduino-esp32/tree/master/cores/esp32
    To kompilator C++ dla AVR nie wyposażono w bibliotekę std, więc nie jest to "wina" Arduino HAL w przypadku tej platformy sprzętowej.
    Widzisz, Arduino to nie tylko AVR, kiedy się używa np. Arduino HAL dla ESP32, to ma się do dyspozycji pełne C++11.

    gielo2 napisał:
    4. Nie ważne w czym Qt został napisany, został napisany nie tylko w samym C++ ale też np. w JS, to nie ważne. Temat dotyczył sposobu kompilacji kodu języka do kodu maszynowego, który to język w założeniu nie miał być kompilowany do takiego kodu. W Qt można używać C++ do pisania programów (nie tylko okienkowych) i jest to standard ale można używać także Javy i Pythona.

    Biblioteka Qt została napisana w C++. Istnieją tzw. wrappery do tej biblioteki w różnych językach, które są produktem wtórnym w odniesieniu do tej biblioteki. Podałeś nieprecyzyjne informacje na temat tej biblioteki, więc wypadało sprostować.
  • Poziom 10  
    khoam napisał:
    gielo2 napisał:
    1. Nie jest zgodny w 100% i że jest napisany w C++ o niczym nie świadczy. W C++ jest napisane także wiele innych języków, np. pierwsze wersje C# były w nim pisane co nie znaczy, że były one zgodne z c++ :] Widzisz c++ to nie tylko kompilator ale także biblioteka standardowa. która w całości nie została dołączona do arduino.

    Jest napisany w C++. Proponuję zajrzeć do (implementacja dla AVR i ESP32):
    https://github.com/arduino/ArduinoCore-avr/tree/master/cores/arduino
    https://github.com/espressif/arduino-esp32/tree/master/cores/esp32
    To kompilator C++ dla AVR nie wyposażono w bibliotekę std, więc nie jest to "wina" Arduino HAL w przypadku tej platformy sprzętowej.
    Widzisz, Arduino to nie tylko AVR, kiedy się używa np. Arduino HAL dla ESP32, to ma się do dyspozycji pełne C++11.

    gielo2 napisał:
    4. Nie ważne w czym Qt został napisany, został napisany nie tylko w samym C++ ale też np. w JS, to nie ważne. Temat dotyczył sposobu kompilacji kodu języka do kodu maszynowego, który to język w założeniu nie miał być kompilowany do takiego kodu. W Qt można używać C++ do pisania programów (nie tylko okienkowych) i jest to standard ale można używać także Javy i Pythona.

    Biblioteka Qt została napisana w C++. Istnieją tzw. wrappery do tej biblioteki w różnych językach, które są produktem wtórnym w odniesieniu do tej biblioteki. Podałeś nieprecyzyjne informacje na temat tej biblioteki, więc wypadało sprostować.


    Temat nie dotyczył samego Qt, o czym napisałem, ale był to tylko przykład w jaki sposób Qt pozwala na użycie innych języków niż C++ (niekompilowanych do kodu maszynowego, jako niezależne oprogramowanie) w odniesieniu do zarządzania pamięcią. Nie jest on wątkiem dyskusji sam w sobie. Nie uważam więc, że dalsza dyskusja na jego temat jest tu na miejscu i ma jakikolwiek sens. Zainteresowanych odsyłam do https://www.qt.io/ czyli do źródeł.
  • Poziom 17  
    Urządzenie, o którym mowię wbrew pozorom było by bardzo proste. Tak naprawde na ekranie pokazywało by tylko status pinów z wagonu lub lokomotywy, np.: forward, reverse, notch (pozycja nastawnika) itp. Jedyne co chciałbym zdalnie uruchamiać z urządzenia to 3 piny: alarm poślizgu kół, otwarta rampa do wózków inwalidzkich i sygnał zamkniętych drzwi w pociągu. To są lampki kontrolne w kabinie, które testujemy w czasie testu funkcjonowania lokomotywy. Dzisiaj wkładamy wtyczkę z trzema przyciskami na długim kablu w gniazda na zewnątrz. Nigdy w życiu nie próbował bym kontrolować lokomotywy za pomocą jakiegokolwiek nieautoryzowanego urządzenia. Raczej pewne, że prędzej, czy później skończyło by sie to źle.
    Status pinów wyświetlał by się na LCD w celu sprawdzania problemów pomiędzy przekaźnikami w szafce kontrolnej lub przełącznikami a gniazdem.
    A zdalne urządzenie, bo po co schodzić i wchodzić do lokotywy z multimetrem za każdym razem kiedy coś zrobie, kiedy mogę to widzieć na LCD podczas gdy pracuję w kabinie.
    Myślę, że nic bardziej zaawansowanego niż arduino plus kilka modułów nie będę potrzebował do tego celu. Urządzenie tanie, tylko zaprojektować i napisać program.
  • Poziom 1  
  • Poziom 1