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

Visual Studio c++, arduino

Wojciech. 04 Lip 2018 20:32 801 58
  • #31 04 Lip 2018 20:32
    tplewa
    Poziom 37  

    Nie ma czegoś takiego że sam język coś nagle sam zrobi... Dotyczy to każdego języka. Zaletą C++ nad C jest obiektowość która w niektórych przypadkach mocno ułatwia jak i sam kod staje się czytelniejszy. Ale to trzeba dobierać z głową, nie ma złotego lekarstwa.

    Praktycznie w każdym języku można stworzyć babola. Natomiast C/C++ ma tą zaletę że znając ten język poradzimy sobie wszędzie czy to będzie Windows/Linux/AVR/ARM czy nawet najbardziej nietypowy procek (kompilator C/C++ zawsze się znajdzie)...

    Wojciech. napisał:
    Pomoże ktoś jak przesłać ramkę z numerkiem suwaka i wartością na tym suwaku? Lub da linka do jakiegoś poradnika itd. Dzięki za pomoc.


    Najpierw jak wspomniałem zamiast brać się za kod, postaraj sobie zaprojektować jakiś protokolik komunikacji. Mogę tutaj napisać jakiś kod - ale zapewne nie będzie on optymalny dla twojego rozwiązania.

    Potem jak masz taki projekt można myśleć nad jego implementacją i po stronie Arduino i PC. Przykładowo wspomniałem trochę wcześniej np. o tym jak GPS wysyła dane po porcie szeregowym i jak taka tekstowa "ramka" może wyglądać.
    Ale oczywiście można to inaczej zrobić, ale najpierw trzeba mieć jakieś założenia jakie mamy potrzeby. Na razie masz kilka suwaków... za chwile może będziesz chciał coś dodać i będzie problem bo się nie da - to też warto uwzględnić aby dodanie nowych funkcji było łatwe...

  • Metal Work Pneumatic
  • #32 04 Lip 2018 20:42
    JacekCz
    Poziom 36  

    Wojciech. napisał:
    Pomoże ktoś jak przesłać ramkę z numerkiem suwaka i wartością na tym suwaku? Lub da linka do jakiegoś poradnika itd. Dzięki za pomoc.


    system (rodzina) ramek
    a) z taką prozaiczną ramką PING "jeszcze żyję i się komunkuję, ale nudy"
    b) ramka o jakiej piszesz

    rodzina ramek by się zaczynała od jakiegoś bajtu (kombinacji dwóch bajtów) który na pewno w życiu się nie pojawi. Jak jest jakaś nieznana transmisja (właśnie wpięto kabel) czekamy na ten znak charakterystyczny
    zakończona sumą kontrolną (do dyskusji - można odpuścić)
    [potwierdzanie każdej lub w tzw oknie - raczej odpuścić]


    Wydaje się, że ramka z pozycją suwaka "przeżywa błąd", tzn jak było zerwanie i jest dobry pakiet, zastępuje nieudaną przeszłość. Ale nie każdy algorytm tak zrobi (choć: co jeśli w światle danych przeskok jest radykalny od do 100%, moze podejerzany.

    Więc zanim w szczegółałch zdecydujesz się na jakieś ramki, rozejrzyj się za okolicznościami błędnymi itd... W razie jak błędu nie możemy ignorować, to przynajmniej numer "Ooooo mamy luke w numerach". Czasem wykrycie błędu wystarczy, nie wymagane jest jego naprawienie

    BARDZO ważne: które scenariusze zmieniają stan - które sa tyko pustą informacją (zupełnie inna niezawodność im tzreba zapewnić)

    Projektując ramkę na pewno mów o bajtach, choć ze strony któregoś języka będzie wymagało minimum konwersji

    Dodano po 1 [minuty]:

    tplewa napisał:

    Najpierw jak wspomniałem zamiast brać się za kod, postaraj sobie zaprojektować jakiś protokolik komunikacji. Mogę tutaj napisać jakiś kod - ale zapewne nie będzie on optymalny dla twojego rozwiązania.


    To miałem na myśli, najpierw koncepcja. Super jakby ktoś złośliwy z boku zadawał "trudne pytania"

  • #33 04 Lip 2018 21:23
    Wojciech.
    Poziom 31  

    tplewa napisał:
    Najpierw jak wspomniałem zamiast brać się za kod, postaraj sobie zaprojektować jakiś protokolik komunikacji. Mogę tutaj napisać jakiś kod - ale zapewne nie będzie on optymalny dla twojego rozwiązania.


    Protokół komunikacji do wysyłania string i odbioru przedstawiłem w temacie bo tyle udało mi się jedynie przesłać. W sensie wysyłaniem liter sterowałem krokami Arduino.


    Czy jakbym zrobił to w ten sposób, miałoby to sens?

    Kod: c
    Zaloguj się, aby zobaczyć kod

  • #34 04 Lip 2018 21:44
    tplewa
    Poziom 37  

    Owszem kolega przedstawił i stwierdziłem że to jest błędne podejście (bo zaczyna od pupy strony czyli od kodu, a nie projektu)...

    Dlatego dalej proponuję pomyśleć nad formatem przesyłania danych, a nie nad kodem. To jest właśnie taka główna różnica pomiędzy "klepaczem kodu", a programistą ;) Klepacz kodu potrafi za zwyczaj zaimplementować to co dostanie już wymyślone przez kogoś... programista powinien potrafić zaprojektować jak co ma działać i potem dobrze to zaimplementować.

    Co do kodu... nie może kolega bazować na tym czy dane są do odebrania tylko właśnie na obmyślonym protokole który powinien potrafić rozpoznać początek ramki (czyli wtedy czyścimy sobie bufor np. readString...), następnie zapisujemy do tego bufora odebrane dane i kończymy w momencie odebrania "czegoś" co sygnalizuje nam koniec ramki. Kolejną sprawą powinno być sprawdzanie czy nie przekraczamy dozwolonej długości ramki (tak aby nie przekroczyć bufora jaki mamy zadeklarowany). Zawsze może wyjść coś takiego że jakimś cudem nie dojdzie do nas znak końca ramki i ciągłe odbieranie kolejnych znaków może doprowadzić do wywalenia się programu (poprzez przepełnienie bufora).
    Natomiast po całym tym procesie jak już mamy ramkę zabieramy się do jej parsowania...

    Dlatego mówię najpierw koncepcja, potem implementacja. W tym miejscu nie mogę nawet koledze pomóc bo nie wiem ile danych chce przesłać, jakie to mają być dane itd.

    Niech kolega na wzór zobaczy np. dane z GPS (nie mówię że to jest idealne rozwiązanie ale jedyne co mi obecnie wpadło do głowy co można prosto zobrazować jak to się robi).

    Przykładowo GPS wysyła coś takiego:

    Code:

    $GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47


    I teraz wiemy że początek ramki zaczyna się gdy nadchodzi znak "$", natomiast koniec to znak końca linii "\n".

    Jak odbierzemy taki ciąg danych GPGGA wskazuje nam z jakim typem ramki mamy do czynienia, dalej po przecinkach są ustalone w formacie kolejne dane, a na końcu z "*" mamy sumę kontrolną aby być pewnym że z jakiś przyczyn nie doszło do przekłamania danych np. w wypadku błędów transmisji itp.

    Właśnie coś w tym stylu kolega powinien zrobić...

    W najprostszym wydaniu u kolegi może to być coś takiego "$NumerSuwaka, WartośćSuwaka\n" - ale tutaj kolega sam musi przemyśleć co będzie najbardziej optymalne...

  • #35 04 Lip 2018 21:57
    Wojciech.
    Poziom 31  

    tplewa napisał:
    Dlatego mówię najpierw koncepcja, potem implementacja. W tym miejscu nie mogę nawet koledze pomóc bo nie wiem ile danych chce przesłać, jakie to mają być dane itd.

    Na tą chwilę chciałby przesłać dwie dane [nr suwaka] [odczyt wartości].

    Myślę by w skrócie odczytać pierwszą wartość z ramki i wykonać odpowiedni warunek. Następnie gdy wykona się ten warunek, sprawdzić drugą wartość z ramki i podstawić dalej do odpowiedniej funkcji. Mniej więcej o tym myślisz?

  • Metal Work Pneumatic
  • #36 04 Lip 2018 22:00
    tplewa
    Poziom 37  

    Wojciech. napisał:
    tplewa napisał:
    Dlatego mówię najpierw koncepcja, potem implementacja. W tym miejscu nie mogę nawet koledze pomóc bo nie wiem ile danych chce przesłać, jakie to mają być dane itd.

    Na tą chwilę chciałby przesłać dwie dane [nr suwaka] [odczyt wartości].

    Myślę by w skrócie odczytać pierwszą wartość z ramki i wykonać odpowiedni warunek. Następnie gdy wykona się ten warunek, sprawdzić drugą wartość z ramki i podstawić dalej do odpowiedniej funkcji. Mniej więcej o tym myślisz?


    Tak ale to już jest sam proces parsowania... sam odbiór naszej ramki czyli w tym wypadku stringu powinien być niezależny. Czynności parsowania powinieneś dokonać jak masz pewność że całą ramka odebrana jest prawidłowo...

    Natomiast sam format tej naszej umownej "ramki" powinieneś tak zaprojektować by wygodnie ci to było parsować oraz abyś miał możliwość łatwego rozpoznania początku i końca tej ramki.

  • #37 04 Lip 2018 22:15
    3149400
    Użytkownik usunął konto  
  • #38 05 Lip 2018 09:43
    JacekCz
    Poziom 36  

    tplewa napisał:

    Tak ale to już jest sam proces parsowania... sam odbiór naszej ramki czyli w tym wypadku stringu powinien być niezależny. Czynności parsowania powinieneś dokonać jak masz pewność że całą ramka odebrana jest prawidłowo...

    Natomiast sam format tej naszej umownej "ramki" powinieneś tak zaprojektować by wygodnie ci to było parsować oraz abyś miał możliwość łatwego rozpoznania początku i końca tej ramki.


    Oba punkty są wiodące.
    I kolega klepiąc cokolwiek, a zwłaszcza sklejając string do granic mozliosci RAM, wykazuje, że nie rozumie o co kaman w tej ramce.

  • #40 05 Lip 2018 17:38
    JacekCz
    Poziom 36  

    Wojciech. napisał:
    Kod: c
    Zaloguj się, aby zobaczyć kod



    Co z takim kodem? Odczytuje cały string do końca znaku linii a następnie odczytuje liczbę całkowitą.


    Mamy Ci tu z kolegami tłumaczyć o tych całych wstrętnych ramkach, czy jednak idziesz swoją ścieżką, klepiąc kod szybciej niż projektując koncepcję?

  • #41 05 Lip 2018 17:55
    3149400
    Użytkownik usunął konto  
  • #42 05 Lip 2018 18:21
    Wojciech.
    Poziom 31  

    JacekCz napisał:
    Mamy Ci tu z kolegami tłumaczyć o tych całych wstrętnych ramkach, czy jednak idziesz swoją ścieżką, klepiąc kod szybciej niż projektując koncepcję?


    Gdybym wiedział jak przesłać i odczytać taką ramkę to bym tutaj nie prosił o pomoc. Więc w jaki sposób mam odczytać taką ramkę, może przykład?

  • #43 05 Lip 2018 18:23
    JacekCz
    Poziom 36  

    Wojciech. napisał:
    JacekCz napisał:
    Mamy Ci tu z kolegami tłumaczyć o tych całych wstrętnych ramkach, czy jednak idziesz swoją ścieżką, klepiąc kod szybciej niż projektując koncepcję?


    Gdybym wiedział jak przesłać i odczytać taką ramkę to bym tutaj nie prosił o pomoc. Więc w jaki sposób mam odczytać taką ramkę, może przykład?


    Na przykład readStringUntil()

    ... tylko że nie dajesz najmniejszych przejawów, że rozumiesz co to ta ramka, i jak ją sobie wyobrażasz

  • #44 05 Lip 2018 18:26
    Wojciech.
    Poziom 31  

    JacekCz napisał:
    ... tylko że nie dajesz najmniejszych przejawów, że rozumiesz co to ta ramka, i jak ją sobie wyobrażasz


    Ponieważ ja nie jestem człowiekiem gdzie ktoś mi sypie teorię i jest okey. Ja muszę mieć przykłady praktyczne, wiele przykładów, wtedy wszystko staje się jasne i klarowne.


    nowyARM napisał:
    ?
    Nikt nie wie. Dajesz fragmenty kodów, wszystko ściśle tajne, nie widzę szansy sensownej pomocy.


    Zczytuje liczby całkowite po stringu.

  • #47 05 Lip 2018 19:16
    Wojciech.
    Poziom 31  

    nowyARM napisał:
    Przecież koledzy już na tacy dali

    nowyARM napisał:



    Podałem tą funkcje w poście #40 to zostałem zjechany że za "szybko klepie kod".

    Dobra nie ważne.

    Rozumiem że ta funkcja będzie powodowała zapis ciągu danych do tablicy np string tablica [] ={"pierwszy wyraz", "drugi wyraz", "..........."}.

    Następnie mam się odwoływać do tej tablicy np tablica [2]= "drugi wyraz". Taki jest sens tego? Czy może ktoś naprowadzić?

  • #48 05 Lip 2018 19:50
    3149400
    Użytkownik usunął konto  
  • #49 05 Lip 2018 20:10
    Wojciech.
    Poziom 31  

    nowyARM napisał:
    Nikt nie wie i ciężko pomóc.


    Piszę któryś raz z kolei, że chcę przesłać nazwę suwaka. Może też być numer i aktualna wartość na suwaku. Pytasz mnie jak ma wyglądać ramka, a ja się Ciebie pytam jak taką ramkę stworzyć już odkąd prowadzimy tę dyskusję; i tak w kółko. Nie będę nic tutaj czarował, bo nie wiem jak taka ramka ma wyglądać, bo nigdy jej jeszcze nie robiłem.

    Jedynie co znalazłem to takie coś:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Inną kombinacją może być RAMKA = "200#255" Pierwszą wartość przyjmowałbym dla 1 suwaka analogicznie 2 wartość.

    Moderowany przez Marek_Skalski:

    Poprawiłem pisownię, ale proszę Kolegę o zmianę postawy. To jest forum techniczne i wskazana jest precyzja wypowiedzi. Aby pomóc, musimy rozmawiać tym samym językiem. Tutaj nie ma miejsca na domysły.
    Ramka danych to jakaś sekwencja bitów, która może, ale nie musi odpowiadać prezentowanej strukturze.
    Proszę najpierw zastanowić się co Kolega chce przesłać, w jakim formacie i w jakiej ilości, ponieważ to jest kwestia kluczowa.

  • #50 05 Lip 2018 20:24
    3149400
    Użytkownik usunął konto  
  • #51 05 Lip 2018 20:32
    Wojciech.
    Poziom 31  

    nowyARM napisał:
    Można opierać się o rozwiązania Ethernetowe, USB, IntelHex, S-Rekordy. Wybór jest ogromny.
    Jeśli trzeba CRC, może byc CRC8, CRC16, CRC32, wszystko w różnych standardach, może byc zwykłe ADD.



    Nie wiem czy zauważyłeś ale ja chciałbym coś przesłać na arduino....

  • #52 05 Lip 2018 20:41
    3149400
    Użytkownik usunął konto  
  • #53 05 Lip 2018 20:47
    JacekCz
    Poziom 36  

    Wojciech. napisał:

    Piszę któryś raz z kolei że chce przesłać nazwę suwaka, może być i też numer i aktualną wartość na suwaku.


    Widocznie sam nie wiesz co piszesz, o transmitowaniu NAZWY jeszcze nie pisałeś.

    Więc jaki jest projekt .... yyyy .... ramki? wyliczenie operacji tak w punktach jak na polonistyce ?

    Ze słowem pakiet też się nie spotkałeś?

    Nie żebyś musiał realizować protokół na 50 stron, ale nie wierzę w Twoją dotychczasową lub przyszłą karierę (na studiach C++ ???) , jeśli choć przez ramię czegoś podobnego nie widziałeś.

    https://pl.wikipedia.org/wiki/Protok%C3%B3%C5%82_internetowy
    https://pl.wikipedia.org/wiki/IPv4

    https://www.novitus.pl/pl/opisy-protokolu-komunikacyjnego.html

    Dodano po 49 [sekundy]:

    Wojciech. napisał:

    Jedynie co znalazłem to takie coś

    Kod: c
    Zaloguj się, aby zobaczyć kod



    Chcielibyśmy Ci wreszcie skutecznie wytłumaczyć, że pewnych rzeczy nie ZNAJDZIESZ w goolu (choć @nowyARM jednak pokazał, ze można) , tylko TRZEBA ZAPROJEKTOWAĆ

    Wojciech. napisał:

    Inną kombinacją może być RAMKA = "200#255" Pierwsza wartość przyjmowałbym dla 1 suwaka analogicznie 2 wartość.


    Może wyjdę na naiwniaka, ale czy to próba własnoręcznej pracy koncepcyjnej?
    Doceniam za ten hash, choć nie spełnia to koncepcji ramki co do startu (konieczne) i kontroli poprawności (mile widziane/zalecane).
    I gdzie ta nazwa, chyba że to hackerzy wkleili w Twój post.
    Póki co, Kolego, to ty sam ze sobą nie umiesz rozmawiać


    Można by było hipotetycznie rozmawiać, czy ta ramka/pakiet tekstowo czy bardziej binarnie, ale obecnie nie widzę takiej możliwości

  • #54 05 Lip 2018 20:59
    3149400
    Użytkownik usunął konto  
  • #55 05 Lip 2018 21:30
    Wojciech.
    Poziom 31  

    JacekCz napisał:
    Widocznie sam nie wiesz co piszesz, o transmitowaniu NAZWY jeszcze nie pisałeś.


    Wiem co doskonale piszę. #20 , #30, #35. Pod pojęciem numeru suwaka może być też nazwa, ale jest mi to obojętne.



    JacekCz napisał:
    Więc jaki jest projekt .... yyyy .... ramki? wyliczenie operacji tak w punktach jak na polonistyce ?

    Ze słowem pakiet też się nie spotkałeś?

    Jak by się spotkał to bym chyba tutaj nie pisał, chyba występuje jakaś korelacja?
    JacekCz napisał:
    Nie żebyś musiał realizować protokół na 50 stron, ale nie wierzę w Twoją dotychczasową lub przyszłą karierę (na studiach C++ ???) , jeśli choć przez ramię czegoś podobnego nie widziałeś.


    Też nigdy nie wiedziałem ja się liczy całki krzywoliniowe, momenty bezwładności brył czy rozwiązuje równania Maxwella. Wszystko zaliczone więc jednak twoja teoria jest trochę wspak. Ale cenię twoją uwagę.

    JacekCz napisał:
    Chcielibyśmy Ci wreszcie skutecznie wytłumaczyć, że pewnych rzeczy nie ZNAJDZIESZ w goolu (choć @nowyARM jednak pokazał, ze można) , tylko TRZEBA ZAPROJEKTOWAĆ



    Nie zrozumcie mnie źle bo cenię waszą wiedzę której i tak nigdy nie zdobędę bo zajmuje się inną dziedziną a nie stricte inżynierią programowania układów elektronicznych, ale ja chcę coś przesłać i odebrać na poziomie arduino a nie jakieś ramki bitowe z przykładami z GPS. Abstrahując od tego że to czego się nauczę to moja własna inicjatywa bo nikt mnie wcześniej czegoś takiego nie uczył.

  • #56 05 Lip 2018 21:41
    JacekCz
    Poziom 36  

    w jakich słowach Ci powiedzieć, że ta ramka GPS jest prawie, prawie dobra, tylko trzeba ją BARDZO uprościć.
    Na ile? To wiesz tylko ty.

    Aha, w/w nie jest bitowa.

  • #57 05 Lip 2018 21:51
    3149400
    Użytkownik usunął konto  
  • #58 06 Lip 2018 14:20
    tplewa
    Poziom 37  

    Wojciech. napisał:

    Nie zrozumcie mnie źle bo cenię waszą wiedzę której i tak nigdy nie zdobędę bo zajmuje się inną dziedziną a nie stricte inżynierią programowania układów elektronicznych, ale ja chcę coś przesłać i odebrać na poziomie arduino a nie jakieś ramki bitowe z przykładami z GPS. Abstrahując od tego że to czego się nauczę to moja własna inicjatywa bo nikt mnie wcześniej czegoś takiego nie uczył.


    Ale niestety musisz tez zrozumieć że programowanie to nie tylko znajomość jakiegoś języka programowania itd. Niestety tutaj trzeba bardzo często ruszyć szare komórki ;) i coś zaprojektować i dopiero później to zaimplementować w kodzie. Tutaj nie jest tak że znajdzie się jakieś przykłady czy gotowce bo co aplikacja to za zwyczaj masz inne wymagania. Programowanie to nie jest coś co można wykuć na pamięć tutaj potrzebne jest niestety analityczne i logiczne myślenie... Na początek to polecił bym koledze jakąś literaturę w tematyce "algorytmy i struktury danych"...

    GPS to nie ramka bitowa... to zwykła tekstowa ramka - która jest przykładem jak realizuje się przesyłanie danych. Tak samo bez problemu znajdziesz kod na arduino który takie dane z GPS odbiera i możesz sobie zobaczyć jak tam jest zrobione. Wystarczy jak już koledzy wspomnieli dostosować do do własnych potrzeb.
    Ewentualnie można też zrobić jak pisze kolega nowyARM czyli wspomniany IntelHex...

    Tak patrząc na kolegi wypociny z tym kodem to ja proponował bym jeszcze raz zamiast pisać kod stworzyć sobie rysunek blokowy czy zapis w pseudokodzie jak to ma działać (aby było łatwiej to koledze zrozumieć) i potem brał się za napisanie kodu który będzie to realizował (bo tak to koledze wychodzą potworki z tego kodu).

    Tutaj coś na szybko znalazłem coś w google odnośnie tego jak można sobie algorytm zapisać:

    http://home.agh.edu.pl/~ewach/cw/zapis_algorytmow.pdf

  • #59 06 Lip 2018 15:56
    3149400
    Użytkownik usunął konto  
  Szukaj w 5mln produktów