Skocz do zawartości

Pomocna odpowiedź

Napisano

Witam szanownych użytkowników,

Jestem w trakcie tworzenia GUI do mojego projektu Arduino i chciałbym za pomocą tego GUI kontrolować wyjścia oraz zmienne z których korzystam w projekcie. Komunikacja pomiędzy GUI, a Arduino odbywa się za pomocą portu szeregowego.

Dane, które byłyby wysyłane do Arduino z GUI w zależności od wciśniętego button'a wyglądały by w następujący sposób:
x = 1 lub y = 0 lub z = 50 itd.

Poradzilibyście jakim sposobem można sformatować te dane przychodzące? Póki co w moim projekcie korzystam z LCD i przycisków, ale chciałbym się przerzucić na GUI.

(edytowany)
8 godzin temu, Treker napisał:

@tomeg witam na forum 🙂

To jakiś gotowy program z GUI czy będziesz sam go pisał?

Program sam pisze w vb - działa poprawnie komunikacja w obie strony, wszystkie funkcje, które założyłem, ze będzie realizować GUI, odczyt oraz formatowanie danych z portu szeregowego w GUI i zostal mi tylko temat z Arduino do zrobienia  🙂

Edytowano przez tomeg

@tomeg najprościej rozwiążesz problem, gdy będziesz wysyłał te dane zwyczajnie w formie ASCII. Możesz przecież przez UART wysyłać dosłowne takie tekst jak "x=1". Nawet całkiem łatwo obrobisz to na PC, będziesz wiedział, że ramka danych zaczyna się od znaku x lub y lub z, następnie występuje znak równości i liczba, a później jest znak końca linii. Przy tego typu prostych danych chyba nie ma większego sensu tworzyć bardziej rozbudowanych protokołów do komunikacji. Przy okazji zyskasz jeszcze taką zaletę, że w monitorze portu szeregowego będziesz miał zawsze czytelne dla człowieka dane.

@Treker

Dane będą obrabiane w Arduino 😉

Czyli jeżeli dobrze zrozumiałem - wysyłając z komputera string "x=1" i odbierając go w Arduino to powinienem po krótce:

substring "x=1"  - gdzie separatorem będzie znak równości

switch (substring(0))
   case x:
          zmienna2 = substring(1)
   case y:
          zmienna2 = substring(1)

itd.? Oczywiście pamiętając, żeby zamienić typ zmiennej ze string na jakiś liczbowy np. typu int.

Dobrze kombinujesz. Zamiast operacji na stringach proponowałbym tylko bufor typu char[] i coś w stylu:

int n=atoi(bufor+2);
switch(bufor[0]){
    case 'x':
    zmienna1 = n;

 

 

  • Lubię! 1

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...