Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Arduino IDE - jak podzielić ciąg danych.

globalinfo 14 Mar 2017 22:00 510 9
  • #1 14 Mar 2017 22:00
    globalinfo
    Poziom 13  

    Witam,

    Za pomocą tego kodu udało mi się pobrać ciąg danych ze strony internetowej.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    A tutaj wynik jaki mam na serial monitorze.
    Cytat:

    [HTTP] begin...
    [HTTP] GET...
    [HTTP] GET... code: 200
    94
    Start&GON1=4&MON1=9&GOFF1=2&MOFF1=5&GON1L2=1&MON1L2=3&GOFF1L2=2&MOFF1L2=7&
    HON1=1&HOFF1=2&WON1=0&WOFF1=6&L1=0&L2=1&L3=0&L4=0&L5=1&L6=1&L7=1&L8=1&Stop
    0

    [HTTP] connection closed or file end.

    Długość wartości zmiennej jest nieregularna i może zawierać się w granicach -50 do 10000.
    Jak z tego ciągu wyciągnąć nazwę zmiennej i jej wartość?

  • #2 14 Mar 2017 22:49
    Piotrus_999
    Poziom 39  

    generalnie interesujące - ujemna gługość stringa . Tak ze to 10000 też mi się podoba. Zapisujesz magicznie w powietrzu. Bo chyba atmegi tyle nie mają?

    Ale wracając nie sądze abyś dał sobie radę z parsowaniem danych - to zapoznaj się z funkcją sscanf. Zje co prawda 50 Twojego flash ale co tam. możesz też poczytać o strtok.

  • #3 15 Mar 2017 08:37
    globalinfo
    Poziom 13  

    Piotrus_999 napisał:
    generalnie interesujące - ujemna gługość stringa . Tak ze to 10000 też mi się podoba. Zapisujesz magicznie w powietrzu. Bo chyba atmegi tyle nie mają?

    Proszę czytaj ze zrozumieniem - nie chodzi o długość całego stringa, ale o wartość niektórych zmiennych np. WON1 może mieć wartość od 1 do 100 a L1 od -50 do 100 natomiast L2 od 0 - 10000.
    Już chyba nie ma wątpliwości o co mi chodzi?

  • #4 15 Mar 2017 08:56
    Piotrus_999
    Poziom 39  

    Jezu - co to znaczy długość zmiennej?

    I jak chcesz przechowac tą dugą na 10000 bajtów?

    Napisałem Ci czego użyć. Dalej Twoja sprawa. Nie będziemy tu prowadzić kursu podstaw programowania - literatury w internecie co niemiara.

    np http://stackoverflow.com/questions/9210528/split-string-with-delimiters-in-c

    https://www.tutorialspoint.com/c_standard_library/c_function_sscanf.htm

    I nie pouczaj mnie jak mam czytać.

  • #5 15 Mar 2017 09:02
    globalinfo
    Poziom 13  

    Piotrus_999 napisał:
    Jezu - co to znaczy długość zmiennej?
    I jak chcesz przechowac tą dugą na 10000 bajtów?


    Od kiedy to liczba 10000 zajmuje 10000 bajtów?

  • Pomocny post
    #6 15 Mar 2017 09:03
    ditomek
    Poziom 18  

    Przeleć stringa funkcja indexof.
    Najpierw zapisz w tablicy miejsca (indexy) w których masz "&"
    jak wezmiesz dwa elementy sasiadujące z tej tablicy to będziesz miał początek i koniec pary nazwa zmiennej i jej wartość.
    Dla wygody (choć niekoniecznie) skopiuj sobie ten fragment do innego string a tam kolejny raz funkcją indexof znajdz "=". teraz tylko zamień string po prawej stronie "=" na liczbę i jak to mówią francuskie projektanty "WŁUALA" :-)

  • #7 15 Mar 2017 09:24
    Piotrus_999
    Poziom 39  

    globalinfo napisał:
    Długość wartości zmiennej jest nieregularna i może zawierać się w granicach -50 do 10000.
    To zacznij pisać jak przystało na forum techniczne a nie przedszkole.

  • #8 15 Mar 2017 09:47
    globalinfo
    Poziom 13  

    Piotrus_999 napisał:
    To zacznij pisać jak przystało na forum techniczne a nie przedszkole.

    Jakoś "ditomek " nie miał problemu ze zrozumieniem tego co pisze.
    A dodatkowo doprecyzowałem
    Cytat:
    Nie chodzi o długość całego stringa, ale o wartość niektórych zmiennych np. WON1 może mieć wartość od 1 do 100 a L1 od -50 do 100 natomiast L2 od 0 - 10000.
    Już chyba nie ma wątpliwości o co mi chodzi?

    Na forum nie każdy ma tak wysoki poziom zaawansowania.

  • #9 15 Mar 2017 10:41
    JacekCz
    Poziom 31  

    globalinfo napisał:
    Piotrus_999 napisał:
    To zacznij pisać jak przystało na forum techniczne a nie przedszkole.

    Jakoś "ditomek " nie miał problemu ze zrozumieniem tego co pisze.


    Po prostu zrozumiał że jak piszesz o kompocie z jabłek, to słowo pomarańcze należy rozumieć j/w.

    Dopóki czegoś rzetelnego nie przeczytasz, będziesz skazany na przypadkowy kod kopiowany nie wiadomo skąd, z chaotycznymi poprawkami na oślep. I będzie, cytuję "Za pomocą tego kodu udało mi się"

    Nawet Twój temat nie ma nic wspólnego z IDE. Albo lekceważysz ewentualnych chętnych do pomocy i masz precyzję w <ciach> , albo musisz się trochę wyedukować.


    Moderowany przez dondu:

    Nie tolerujemy wulgaryzmów w żadnej postaci.
    Normalnie byłoby ostrzeżenie, ale potraktuję kolegę ulgowo z dwóch powodów:
    - wulgaryzm nie był ciężkiego kalibru,
    - piąte ostrzeżenie byłoby banem permanentnym, a tego nie chcę koledze wręczyć.

    3.1.6. Rozpowszechnianie treści sprzecznych z zasadami współżycia społecznego oraz dobrymi obyczajami.

    Blokada pisania na 14 dni.

  • #10 18 Mar 2017 14:38
    globalinfo
    Poziom 13  

    ditomek napisał:
    Przeleć stringa funkcja indexof.
    Najpierw zapisz w tablicy miejsca (indexy) w których masz "&"
    jak wezmiesz dwa elementy sasiadujące z tej tablicy to będziesz miał początek i koniec pary nazwa zmiennej i jej wartość.

    Coś mi indexOF źle wyszukuje znaki, po 8 pętli źle wyszukuje i nie bardzo wiem jak z tym sobie poradzić .

    Cytat:
    Caly ciag = Start&GON1=0&MON1=9&GOFF1=2&MOFF1=5&GON1L2=1&MON1L2=3&GOFF1L2=2&MOFF1L2=7&HON1=1&HOFF1=2&WON1=0&WOFF1=6&L1=1&L2=1&L3=0&L4=0&L5=1&L6=1&L7=1&L8=1&Stop
    Dlugosc ciagu= 148
    Pozycja pierwszwgo znaku= 5
    Pozycja ostatniego znaku= 143
    Pozycje znaków - 5 - 12 - 19 - 27 - 35 - 44 - 53 - 63 - 73 - 88 - 103 - 118 - 133 - - 19 - 35 - 53 - 73 - 95 - 118 - 138 -
    5 GON1=0
    12 MON1=9
    19 GOFF1=2
    27 MOFF1=5
    35 GON1L2=1
    44 MON1L2=3
    53 GOFF1L2=2
    63 MOFF1L2=7
    73 HON1=1&HOFF1=2
    88 WON1=0&WOFF1=6
    103 L1=1&L2=1&L3=0
    118 L4=0&L5=1&L6=1
    133 L7=1&L8=1&Stop
    -17829890 &GOFF1=2&MOFF1=5&GON1L2=1&MON1L2=3&GOFF1L2=2&MOFF1L2=7&HON1=1&HOFF1=2&WON1=0&WOFF1=6&L1=1&L2=1&L3=0&L4=0&L5=1&L6=1&L7=1&L8=1&Stop
    19 GOFF1=2&MOFF1=5
    35 GON1L2=1&MON1L2=3
    53 GOFF1L2=2&MOFF1L2=7
    73 HON1=1&HOFF1=2&WON1=0
    95 WOFF1=6&L1=1&L2=1&L3=0
    118 L4=0&L5=1&L6=1&L7=1
    138 L8=1&Stop


    A tu mam kod według którego wyszukuję znak "&".
    Kod: c
    Zaloguj się, aby zobaczyć kod

Szybka odpowiedź lub zadaj pytanie
Dziękuję Ci. Ta wiadomość oczekuje na moderatora.
 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME